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);
  }
};

广告
将在 10 秒后关闭
bannerAds