今天新开一个项目,把原来的log4js 1.x 升级到2.x版本后发现原来的log4js配置不再能使用,查了下官方文档,顺便也记录下 log4js 2.x的配置。

安装

项目安装:
npm install log4js --save

配置

新建一个 log4js.json文件,并添加如下json内容:

  1. {
  2. "appenders": {
  3. "console": {
  4. "type": "console"
  5. },
  6. "trace": {
  7. "type": "dateFile",
  8. "filename": "./logs/access-",
  9. "pattern": ".yyyy-MM-dd.log",
  10. "alwaysIncludePattern": true,
  11. "maxLogSize ": 31457280
  12. },
  13. "http": {
  14. "type": "logLevelFilter",
  15. "appender": "trace",
  16. "level": "trace",
  17. "maxLevel": "trace"
  18. },
  19. "info": {
  20. "type": "dateFile",
  21. "filename": "./logs/info-",
  22. "encoding": "utf-8",
  23. "pattern": ".yyyy-MM-dd.log",
  24. "maxLogSize": 10000000,
  25. "alwaysIncludePattern": true,
  26. "layout": {
  27. "type": "pattern",
  28. "pattern": "[%d{ISO8601}][%5p %z %c] %m"
  29. },
  30. "compress": true
  31. },
  32. "maxInfo": {
  33. "type": "logLevelFilter",
  34. "appender": "info",
  35. "level": "debug",
  36. "maxLevel": "error"
  37. },
  38. "error": {
  39. "type": "dateFile",
  40. "filename": "./logs/error-",
  41. "pattern": ".yyyy-MM-dd.log",
  42. "maxLogSize": 10000000,
  43. "encoding": "utf-8",
  44. "alwaysIncludePattern": true,
  45. "layout": {
  46. "type": "pattern",
  47. "pattern": "[%d{ISO8601}][%5p %z %c] %m"
  48. },
  49. "compress": true
  50. },
  51. "minError": {
  52. "type": "logLevelFilter",
  53. "appender": "error",
  54. "level": "error"
  55. }
  56. },
  57. "categories": {
  58. "default": {
  59. "appenders": [
  60. "console",
  61. "http",
  62. "maxInfo",
  63. "minError"
  64. ],
  65. "level": "all"
  66. }
  67. }
  68. }

解释:

  1. "type": "dateFile" // 可以设置成 console、file、dateFile三种
  2. "filename": "./logs/access-", // 设置log输出的文件路劲和文件名
  3. "pattern": ".yyyy-MM-dd.log",
  4. "alwaysIncludePattern": true, // 和上面同时使用 设置每天生成log名
  5. "encoding": "utf-8", // 设置文件编码格式
  6. "maxLogSize ": 31457280 // 设置文件大小
  7. "level": "debug", // 设置log输出的最低级别
  8. "maxLevel": "error" // 设置log输出的最高级别
  9. // log级别为8级 ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<MARK<OFF。默认级别是 OFF

使用

修改app.js 再顶部引入:

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

这样程序哪里需要用就可以直接使用例如:

  1. var logger = require('log4js').getLogger("index");
  2. logger.info("this is info");
  3. logger.warn("this is warn");
  4. logger.debug("this is debug");
  5. logger.error("this is error");

log4js 整合到express

其实只需要修改程序app.js里面的默认使用logger模块便可

  1. // app.use(logger('dev')); // 这句注释,添加下句
  2. app.use(log4js.connectLogger(log4js.getLogger("http"), { level: 'trace' }));