log4js

 发布 : 2018-07-28  字数统计 : 801 字  阅读时长 : 3 分  分类 : 日志  浏览 :

说明

日常开发中,对于日志模块,java开发 -> log4j,而 nodejs开发,则对应工具为 log4js

log4js 介绍

安装

1
npm install log4js --save

日志级别

等级由低到高:trace < debug < info < warn < Error < Fatal;

1
2
3
4
5
6
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
  • debug 可以随意的使用于任何觉得有利于在调试时更详细的了解系统运行状态的东东;
  • info 重要,输出信息:用来反馈系统的当前状态给最终用户的;
  • warn, 可修复,系统可继续运行下去;
  • Error, 可修复性,但无法确定系统会正常的工作下去;
  • Fatal, 相当严重,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话后果严重。

函数

1
2
3
getLogger("参数") //追踪产生此日志的文件.

log4js.configure(log4jsConfig); //设置配置项

配置项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"log4jsConfig": {
"appenders": [
{
"type": "console"
},
{
"type": "file",
"absolute": true, //绝对路径
"filename": "a.log", //存放日志文件的目录和文件名
"maxLogSize": 10000000, //每个日志文件大小
"backups": 100, //备份文件的数量,超过会被删除
"category": "http" //日志策略,类别,与级别不同的一个维度
},
],
"levels": {
"[all]": "INFO" //设置日志级别,只打印info级别及以上级别的
},
"replaceConsole": true //替换掉原来自带的console, 自带的没有颜色区分
},

记录请求

1
2
3
4
5
6
7
//app.js

app.use(log4js.connectLogger(log4js.getLogger("http"), {
level: 'auto',
format: ':remote-addr - -' + ' ":method :url HTTP/:http-version"' + ' :status :content-length :response-time ":referrer"' + ' ":user-agent"'
}));

日志的一个重要功能不仅仅是在调试时使用,最重要的还是当前端发起请求时,能把该请求记录在日志中,该行代码的作用就是这个功能。

其中的level参数表示日志输出级别,设置为auto,日志级别对应规则为:

  • http返回码为3**:level=WARN;
  • http返回码为4,5时,level=ERROR;
  • 其他的返回码,level=INFO

日志分片

按文件大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"log4jsConfig": {
"appenders": [
{
"type": "console"
},
{
"type": "file",
"absolute": true,
"filename": "a.log",
"maxLogSize": 10, //单位应该是字节,设置 10000000 ,基本是10兆左右
"backups": 5,
"category": "http"
}
],
"levels": {
"[all]": "DEBUG"
},
"replaceConsole": true
},

对应效果

只能备份 backups 指定的份数,最新的会更新删除替换, 且每个文件为 maxLogSize的值。

按日期分片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"log4jsConfig": {
"appenders": [
{
"type": "console"
},
{
"type": "dateFile",
"absolute": true,
"filename": "a-accesslog",
"pattern": "-yyyy-MM-dd.log",
"alwaysIncludePattern" : true,
"category": "http"
}
],
"levels": {
"[all]": "DEBUG"
},
"replaceConsole": true
},

对应效果

日志按照日期进行分片,且不会限制大小。

留下足迹