LoginSignup
13
9

More than 5 years have passed since last update.

Node.js+Express.js+log4js

Last updated at Posted at 2016-06-22

※「≈≈≈」は省略を表す

バージョン

$ node -v
v6.2.1
$ cat package.json
{
  ≈≈≈
  "dependencies": {
    "express": "~4.13.1",
    "log4js": "^0.6.37",
    ≈≈≈
  },
  ≈≈≈
}

log4jsの設定

$ mkdir modules
$ cat modules/logger.js 
var log4js = require('log4js');

log4js.configure({
    "appenders": [{
      "category": "access",
      "type": "dateFile",
      "filename": "/var/log/nodejs/access.log",
      "pattern": "-yyyy-MM-dd",
      "backups": 3
    },
    {
      "category": "system",
      "type": "dateFile",
      "filename": "/var/log/nodejs/system.log",
      "pattern": "-yyyy-MM-dd",
      "backups": 3
    },
    {
      "category": "error",
      "type": "dateFile",
      "filename": "/var/log/nodejs/error.log",
      "pattern": "-yyyy-MM-dd",
      "backups": 3
    },
    {
      "type": "console"
    }],
    "levels": {
      "access": "ALL",
      "system": "ALL",
      "error": "ERROR"
    }
});

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

app.js

$ cat app.js
≈≈≈
var logger = require('./modules/logger');
≈≈≈
app.use(logger.express);
≈≈≈

使い方

$ cat app.js
≈≈≈
var test = require('../routes/test');
≈≈≈
app.use('/', test);
≈≈≈
$ cat routes/test.js
var express = require('express');
var logger  = require('../modules/logger');
var router = express.Router();

router.get('/', function(req, res, next) {
  if(logger.isDebug(logger.system)) {
    logger.system.debug("debugログは、DEBUGレベルの時だけ呼びたい。");
  }

  logger.error.error("errorじゃないけどね!");
}

module.exports = router;
13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9