-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger2.js
More file actions
88 lines (74 loc) · 2.8 KB
/
logger2.js
File metadata and controls
88 lines (74 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
* @name: logger2
* @description: Manages logging setup for consistency amongst a project
* @usage: logger = require('./logger2')(); logger.log('debug',"Loading file: '%s' ... %s", "/path/to/filename", "OK")
* @param: log_level = Set the log level that will be sent to screen/logfile. Based on the "winston" log levels. DEFAULT: warn
* @param: logfile = FULL PATH to logfile. DEFAULT: '/dev/null' (no logging to file if not specified).
* @param: screendump = If "true" all logging lines will ALSO be dumped to STDOUT. DEFAULT: "false".
* @author: Mike Rightmire
* @email: Mike.Rightmire@Biocomsoftware.com
* @copyright: BiocomSoftware
* @version: 0.9.0.0
* @Licensing LGPL
*/
const { createLogger, transports } = require("winston");
let { format } = require("winston");
let logger;
let log_level;
let logfile;
let screendump;
/* Winston log levels
*
* error: 0,
* warn: 1,
* info: 2,
* verbose: 3,
* debug: 4,
* silly: 5
*/
function formatParams(info) {
const { timestamp, level, message, ...args } = info;
const ts = timestamp.slice(0, 19).replace("T", " ");
return `${ts} ${level}: ${message} ${Object.keys(args).length
? JSON.stringify(args, "", "")
: ""}`;
}
//Set format default here
format = format.combine(
format.splat(),
format.colorize(),
format.timestamp(),
format.align(),
format.printf(formatParams)
);
// === main ==================================================================
module.exports = function() {
/* Set logging. Can be set by command line or config file */
var log_level = ( process.env.log_level != null ? process.env.log_level : process.argv["log_level"] ) // Can end as undefined
var logfile = ( process.env.logfile != null ? process.env.logfile : process.argv["logfile"] ) // Can end as undefined
var screendump = ( process.env.screendump != null ? process.env.screendump : process.argv["screendump"]) // Can end as undefined
// Put a check in here to ensure "formatting" is a format object
if ( typeof formatting !== 'undefined') { format = formatting; }
/* Create logger object */
logger = createLogger({
level : log_level,
format: format,
transports: [
// Start with everything going to dev null...just to satisfy
// Winston's requirement for at least one transport.
// Add more later
new transports.File({ filename: '/dev/null', level: 'error' }),
]
});
/* Add transports based on environment */
// File
if ( typeof logfile !== 'undefined' ) {
// put a file check in here
logger.add(new transports.File({ filename: logfile, format: format }) )
}
// Screendump
if ( typeof screendump !== 'undefined' || screendump != false) {
logger.add(new transports.Console({ format: format }) );
}
return logger;
};