Node.js+log4js+Fluentd:根据类别将 Fluentd 的行为分为不同部分
※「≈≈≈」代表省略。
※因为也使用了Express.js,所以部分写法为了它而设定。
过去文章:Node.js+Express.js+log4js
版本
$ rpm -qi td-agent
Name : td-agent
Version : 2.3.1
Release : 0.el7
Architecture: x86_64
≈≈≈
$ node -v
v6.2.1
$ cat package.json
{
≈≈≈
"dependencies": {
"log4js": "^0.6.37",
"fluent-logger": "^1.1.1",
≈≈≈
},
≈≈≈
}
Fluentd的配置
$ cat /etc/td-agent/td-agent.conf
≈≈≈
<match nodejs.access.*>
type file
path /var/log/nodejs/td-access.log
</match>
<match nodejs.system.*>
type file
path /var/log/nodejs/td-system.log
</match>
$ /etc/init.d/td-agent restart
log4js的配置
$ cat modules/logger.js
var log4js = require('log4js');
log4js.configure({
"levels": {
"access": "ALL",
"system": "ALL",
"error": "ERROR"
}
});
log4js.addAppender(
require('fluent-logger').support.log4jsAppender("nodejs.access", {
host: "localhost",
port: 24224,
timeout: 3.0,
levelTag: true
}),
["access"]
);
log4js.addAppender(
require('fluent-logger').support.log4jsAppender("nodejs.system", {
host: "localhost",
port: 24224,
timeout: 3.0,
levelTag: true
}),
["system", "error"]
);
// 以下は、Express.js用の設定
module.exports = {
access: log4js.getLogger('access'),
system: log4js.getLogger('system'),
error: log4js.getLogger('error'),
express: log4js.connectLogger(log4js.getLogger('access'), {level: log4js.levels.INFO}),
isDebug: function(category) {
return (log4js.levels.DEBUG.level >= category.level.level);
}
};