UNPKG

2.61 kBJavaScriptView Raw
1'use strict'
2
3const winstonAwsCloudWatch = require('winston-aws-cloudwatch');
4const winston = require('winston');
5const config = require('./loggerTransports');
6
7class Logger {
8
9 getLogger(module) {
10 const logType = process.env.LOG_TYPE || 'console';
11 const level = process.env.LOG_LEVEL || "info";
12 let logger;
13 console.log(logType);
14 switch (logType) {
15 case 'off':
16 console.log('Logging is off');
17 logger = winston.createLogger(config.offTransport());
18 logger.cli();
19 break;
20
21 case 'console':
22 console.log('***********Logging to console***********');
23 logger = winston.createLogger(config.consoleTransport());
24 logger.format = winston.format.combine(winston.format.colorize(), winston.format.simple())
25 break;
26
27
28 case 'aws':
29 console.log('***********Logging to aws****************');
30 logger = winston.createLogger(config.awsTransport(module));
31 break;
32
33 case 'file':
34 console.log('***********Logging to file****************');
35 logger = winston.createLogger(config.fileTransport());
36 break;
37
38 default:
39 console.log('***********Default chosen:Logging to console***********');
40 logger = (config.consoleTransport());
41 logger.cli();
42 break;
43
44 }
45 logger.level = level;
46 logger.format = this.getRequestLogFormatter();
47 // Call exceptions.handle with a transport to handle exceptions
48 // logger.exceptions.handle(
49 // new winston.transports.File({ filename: 'exceptions.log' })
50 // );
51 logger.exitOnError = false; //winston will not exit after logging an uncaughtException
52 return logger;
53 }
54
55 getRequestLogFormatter() {
56 const { combine, timestamp, printf } = winston.format;
57
58 return combine(
59 timestamp({
60 format: 'YYYY-MM-DD HH:mm:ss'
61 }),
62 // [${info.label}] winston.format.label({ label: path.basename(process.mainModule.filename) }),
63 winston.format.printf(info => `${info.timestamp} ${info.level} : ${info.message}`)
64
65 );
66 }
67
68
69 logError(err, req, res, next) {
70 logger.error(err)
71 next();
72 }
73
74 logRequest(req, res, next, log) {
75 log.info('hello');
76 next();
77 }
78
79 getLog() {
80 return this.logger;
81 }
82
83
84
85}
86module.exports = new Logger;
\No newline at end of file