log4js日志配置问题

 

http://blog.csdn.net/cdnight/article/details/50857268

在做项目中,我们的node日志采用的是log4js框架,使用文件方式存储,但在后面的需求中增加了一项,需要将node日志服务接入ELK(Elasticsearch+logstash+kibana),运维需要匹配node 的日志文件。在这个过程中,熟悉了一下log4js的配置问题。

type:file 会以文件方式存储,可以配合maxLogSize,backups,按照文件大小进行分割,如果文件log-2018-1-23.log超过maxLogSize设置的大小,则会将文件备份成log-2018-1-23.log.1,然后再创建log-2018-1-23.log,重新再写。而backups则用于设置分割的文件个数,最多滚动几个文件。


1.1 filename配置
a.filename是一个目录加上文件名,路径就是日志文件存储的路径.
b.此路径可以是相对路径也可以绝对路径,当是相对路径时,是相对于工程根目录.
c.无论是相对路径还是绝对路径,路径过程中的所有文件夹必须事先手动创建好,log4js不会自动创建,如路径不存在则会报错.
d.最后的文件名就是输出文件的名字模版,真实的名字会一定的修改,
d1:type:datefile 时会加上时间标签,如 [log-2015-01-24 , log-2015-01-25]
d2:type:file时 如果文件过大,份文件后会增加一个编号标签. [log.1 log.2 log.3 ...]
1.2 maxLogSize配置
这个只在type:file模式有效.表示文件多大时才会创建下一个文件,单位是字节.实际设置时具体的值根据业务来定,但是不推荐大于100Mb.

log4js.configure({
appenders: [{
type: 'console'
},
{
type: 'file', //file就是采用文件格式存储
filename: logFileName.replace(/\\/g, '/'),
maxLogSize: MAXLOGSIZE,
backups: 4,
category: loggerName
}
],
replaceConsole: false
});

 

按照日期生成文件:

        下面这个生成的文件名就是date-2015-01-24-14:24:12.log
        pattern精确到ss(秒)就是一秒一个文件,精确到mm(分)就是一分一个文件,一次类推:hh(小时),dd(天),MM(月),yyyy(年),yy(年后两位),注意大小写!

{  
    "category":"log_date",  
    "type": "dateFile",  
    "filename": "./logs/log_date/date",  
    "alwaysIncludePattern": true,  
    "pattern": "-yyyy-MM-dd-hh:mm:ss.log"  
}  

 



posted @ 2018-01-23 16:51  freewalker  阅读(1195)  评论(0编辑  收藏  举报