-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.js
115 lines (104 loc) · 3.05 KB
/
config.js
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/**
* PatternLayout
* Format for specifiers is %[padding].[truncation][field]{[format]}
* Fields can be any of:
* - %r time in toLocaleTimeString format
* - %p log level
* - %c log category
* - %h hostname
* - %m log data
* - %d date in constious formats
* - %% %
* - %n newline
* - %z pid
* - %f filename
* - %l line number
* - %o column postion
* - %s call stack
* - %x{<tokenname>} add dynamic tokens to your log. Tokens are specified in the tokens parameter
* - %X{<tokenname>} add dynamic tokens to your log. Tokens are specified in logger context
*
* You can use %[ and %] to define a colored block.
*
* Tokens are specified as simple key:value objects.
* The key represents the token name whereas the value can be a string or function
* which is called to extract the value to put in the log message. If token is not
* found, it doesn't replace the field.
*
* A sample token would be: { 'pid' : function() { return process.pid; } }
*/
const path = require("path");
let createLogConfig = (options) => {
if (!options.logDir) {
throw new Error("Init log config error, logDir is undefined.");
}
const consoleLayout = {
type: "pattern",
pattern: "%[%d||server=%h||pid=%z||level=%p%]||%m",
};
const fileLayout = {
type: "pattern",
pattern: "%d||server=%h||pid=%z||level=%p||%m",
};
const alarmLayout = {
type: "pattern",
pattern: ["%d", "%h", "%x{service}", "%m"].join("||"),
tokens: {
service: () => {
return options.serviceName.toUpperCase()
},
},
};
const appenders = {
console: {
type: "console",
layout: consoleLayout,
},
access: {
type: "console",
layout: consoleLayout
},
errors: {
type: "dateFile",
layout: fileLayout,
filename: `${path.join(options.logDir, "errors.log")}`,
pattern: ".yyyy-MM-dd",
encoding: "utf-8",
keepFileExt: true,
numBackups: options.numBackups,
},
alarm: {
type: "dateFile",
layout: alarmLayout,
filename: `${path.join(options.monitorLogDir, "app-monitor.log")}`,
pattern: ".yyyy-MM-dd",
encoding: "utf-8",
keepFileExt: true,
numBackups: options.numBackups,
},
};
const categories = {
default: {
appenders: ["console"],
level: "debug",
},
access: {
appenders: ["access"],
level: "info",
},
errors: {
appenders: ["errors"],
level: "info",
},
alarm: {
appenders: ["alarm"],
level: "info",
},
};
return {
appenders,
categories,
pm2: true,
};
};
module.exports = createLogConfig;