UNPKG

2.53 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 case 'console':
21 logger = winston.createLogger(config.consoleTransport());
22 logger.format = winston.format.combine(winston.format.colorize(), winston.format.simple())
23 break;
24 case 'aws':
25 console.log('***********Logging to aws****************');
26 logger = winston.createLogger(config.awsTransport(module));
27 break;
28 case 'file':
29 console.log('***********Logging to file****************');
30 logger = winston.createLogger(config.fileTransport());
31 break;
32 default:
33 console.log('***********Default chosen:Logging to console***********');
34 logger = (config.consoleTransport());
35 logger.cli();
36 break;
37
38 }
39 logger.level = level;
40 logger.format = this.getRequestLogFormatter();
41 // Call exceptions.handle with a transport to handle exceptions
42 // logger.exceptions.handle(
43 // new winston.transports.File({ filename: 'exceptions.log' })
44 // );
45 logger.exitOnError = false; //winston will not exit after logging an uncaughtException
46 return logger;
47 }
48
49 getRequestLogFormatter() {
50 const { combine, timestamp, printf } = winston.format;
51
52 return combine(
53 timestamp({
54 format: 'YYYY-MM-DD HH:mm:ss'
55 }),
56 // [${info.label}] winston.format.label({ label: path.basename(process.mainModule.filename) }),
57 winston.format.printf(info => `${info.timestamp} ${info.level} : ${info.message}`)
58
59 );
60 }
61
62
63 logError(err, req, res, next) {
64 logger.error(err)
65 next();
66 }
67
68 logRequest(req, res, next, log) {
69 log.info('hello');
70 next();
71 }
72
73 getLog() {
74 return this.logger;
75 }
76
77
78
79}
80module.exports = new Logger;
\No newline at end of file