刚好有需求,写一个log文件,记录信息。但是在网上找了很久没有合适的方案来给我一个新手去使用的。最终在github上找到一个demo,方案 很好,拿来配置了一下,感觉很不错。地址:https://github.com/xrian/node-log4j2-example

首先需要做的,创建一个log4js的配置文件。log4js.json

{
    "appenders": {
      "console": {
        "type": "console"
      },
      "trace": {
        "type": "file",
        "filename": "log/access.log",
        "maxLogSize ": 31457280
      },
      "http": {
        "type": "logLevelFilter",
        "appender": "trace",
        "level": "trace",
        "maxLevel": "trace"
      },
      "info": {
        "type": "dateFile",
        "filename": "log/app-info.log",
        "pattern": ".yyyy-MM-dd",
        "layout": {
          "type": "pattern",
          "pattern": "[%d{ISO8601}][%5p %z %c] %m"
        },
        "compress": true
      },
      "maxInfo": {
        "type": "logLevelFilter",
        "appender": "info",
        "level": "debug",
        "maxLevel": "info"
      },
      "error": {
        "type": "dateFile",
        "filename": "log/app-error.log",
        "pattern": ".yyyy-MM-dd",
        "layout": {
          "type": "pattern",
          "pattern": "[%d{ISO8601}][%5p %z %c] %m"
        },
        "compress": true
      },
      "minError": {
        "type": "logLevelFilter",
        "appender": "error",
        "level": "error"
      }
    },
    "categories": {
      "default": {
        "appenders": [
          "console",
          "http",
          "maxInfo",
          "minError"
        ],
        "level": "all"
      }
    }
  }

config\log4j.json是配置文件 配置了三个类别 一个是http请求日志,相当于tomcat的access日志,当日志到达30M时,重新生成一个新的文件 一个是保存debug和info级别的日志.每天生成一个新的文件 一个是保存error及以上等级的日志.每天生成一个新的文件

之后,在app.js文件中,使用log4js

修改app.js 在顶部引入

var log4js = require('log4js');
log4js.configure('config/log4j.json');

这样,就可以在项目中的其他地方使用log4j输出日志了.

var logger = require('log4js').getLogger("index");
logger.info('');
logger.error('');

将log4j整合进入express

在app.js中,将express默认的日志模块注释掉,并且加载log4js模块

// app.use(logger('dev'));
app.use(log4js.connectLogger(log4js.getLogger("http"), { level: 'trace' }));

app.use(log4js.connectLogger(…))这代码,最好是放在其他的app.use()前面

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐