UNPKG

2.71 kBJavaScriptView Raw
1import winston from 'winston'
2import DailyRotateFile from 'winston-daily-rotate-file'
3
4winston.transports.DailyRotateFile = DailyRotateFile
5
6class LoggerComponent {
7 constructor (context) {
8 this._context = context
9 this.__logPath = '/logs/' + context
10 this.init()
11 }
12
13 init () {
14 this._logger = new winston.Logger({
15 transports: [
16 new winston.transports.Console({
17 colorize: true,
18 prettyPrint: true
19 }),
20 new winston.transports.DailyRotateFile({
21 tailable: true,
22 filename: this.__logPath + '/' + this._context,
23 datePattern: '.yyyy-MM-dd.log',
24 timestamp: true,
25 maxFiles: 10,
26 colorize: true,
27 prettyPrint: true
28 })
29 ]
30 })
31 }
32
33 getLogger () {
34 return this._logger
35 }
36
37}
38
39class DecoratedContextLogger {
40 constructor (logger, logContextName) {
41 this._context = logContextName
42 this._logger = logger
43 }
44
45 log (level, log, data) {
46 this._logger.log(level, '[' + this._context + '] ' + log, data)
47 }
48
49 view (data) {
50 var dataObj = {}
51 if (typeof data !== 'undefined' && data !== null) {
52 dataObj.data = data
53 }
54 this._logger.log('info', '[' + this._context + '] ', dataObj)
55 }
56
57 info (log, data) {
58 var dataObj = {}
59 if (typeof data !== 'undefined' && data !== null) {
60 dataObj.data = data
61 }
62 this._logger.log('info', '[' + this._context + '] ' + log, dataObj)
63 }
64
65 warn (log, data) {
66 var dataObj = {}
67 if (typeof data !== 'undefined' && data != null) {
68 dataObj.data = data
69 }
70 this._logger.log('warn', '[' + this._context + '] ' + log, dataObj)
71 }
72
73 error (log, exception, data) {
74 var dataObj = {}
75 if (typeof data !== 'undefined' && data != null) {
76 dataObj.data = data
77 }
78 if (typeof exception !== 'undefined' && exception != null) {
79 dataObj.ex = exception
80 }
81 this._logger.log('error', '[' + this._context + '] ' + log, {
82 stackTrace: exception.stack,
83 data: dataObj.data
84 })
85 }
86
87 debug (log, data) {
88 var dataObj = {}
89 if (typeof data !== 'undefined' && data != null) {
90 dataObj.data = data
91 }
92 this._logger.log('debug', '[' + this._context + '] ' + log, dataObj)
93 }
94}
95
96class LogManager {
97 constructor (loggerComponent) {
98 this._loggerComponent = loggerComponent
99 }
100
101 getLogger (logContextName) {
102 var decoratedLogger = new DecoratedContextLogger(this._loggerComponent.getLogger(), logContextName)
103 return decoratedLogger
104 }
105}
106
107export default {
108 configure: function configure (context) {
109 var contextLoggerComponent = new LoggerComponent(context)
110 return new LogManager(contextLoggerComponent)
111 }
112}