首页 > 编程知识 正文

log4j配置日志文件目录,logback日志级别高低

时间:2023-05-04 20:09:36 阅读:28428 作者:3048

目录一、radyj、正文导读三、例3.1添加最基础写法3.2loglevelfilter3.2.1设置日志级过滤器3.2.2设置过滤器对应的添加器3.2.3设置分类对应的过滤器

一.个人资料

log4js是用于node开发的日志库,其使用范围相当广,在Express、Koa系列、Hapi等框架中,我认为很多人都在使用这个库。 由于自由度高,可扩展性强,受到许多节点开发人员的欢迎。

在实际的开发过程中,每个人都根据自己的情况进行日志文件的分割。 简单的是单个文件的日志记录,稍微复杂的是根据时间剪切日志,更复杂的是使用特定的协议推送到日志清洗服务(如Logstash )。

这里,仅对开发中特定的一个情况——,基于日志等级进行日志切断

这样做的好处是,在故障排除过程中,可以重点进行故障排除,在发生错误时直接在错误日志文件中显示错误日志。 如果程序不是以默认逻辑运行的,请尝试检查info或调试日志文件的记录。

二、正文指南指导你如何按照日志级别(DEBUG、INFO、WARN、ERROR、FATAL )剪切日志文件。

log4js中定义的日志级别包括以下类别:

调试:在调试、最低级别和典型生产环境中,关闭此级别的日志记录。 将信息、正常级别、最常见的系统日志收集级别(通常是系统正在运行的某些相关信息(非开发类敏感信息) )设置为此级别WARN:FBI WARNNING。 这是警告,但错误错误:无法报告错误。 这是一个常见的程序。如果级别比程序的错误报告更严重,而且没有进行错误级别划分,则很少使用常见故障,而是用ERROR替换这些日志级别的标准输出流中的效果。

. log文件中的效果如图所示

三、例3.1最基础的写法首先给大家看最基础的用法。

常数log4j s=require (log4j s ); 常数路径=require (' path ); const logger=log4js.getLogger (; log4js配置log4JS.configure ()/**附加功能使用默认的默认附加功能,并且所有(如果未设置附加分类)都使用该附加设备进行日志记录appenders: ) default: ) type:'file )、filename3360path.join ) __dirnath )中的/**分类也使用默认分类,并且分类为categories : { default : } appenders : [ ' default ' ],//添加器设置为default。 支持上面的appenders level: 'debug '。 //将记录日志的最低级别设置为调试。 也就是说,记录所有日志},}; logger.debug('debug ); Logger.info(info ); Logger.warn('warn ); logger.error(error ); logger.fatal('fatal ); 记录效果就像上面第2节展示的照片一样。

3.2在loglevelfilterlog4js中添加loglevelfilter是一个过滤器,过滤器是位于添加器之上的概念。 正常流程为分类(category) - [过滤器(filter)] - 追加器(appender)

3.2.1日志级别过滤器设置添加四个日志级别过滤器——调试过滤器、info过滤器、warn过滤器和错误过滤器

log4js配置log4JS.configure ()/**附加功能使用默认的默认附加功能,并且所有(如果未设置附加分类)都使用该附加设备进行日志记录appenders: ) default: ) type:'file )、filename3360path.join ) __dirnath )进行调试将类型设置为loglevelfilterappender 3360 ' debug ',/中指定调试级别3360 ',//中指定附加器//捕获日志的最低级别,maxLevel: 'debug ',//

Level: 'info', }, warnFilter: { type: 'logLevelFilter', appender: 'warn', level: 'warn', maxLevel: 'warn', }, errorFilter: { type: 'logLevelFilter', appender: 'error', level: 'error', maxLevel: 'fatal', }, }, /** * 分类也使用默认的分类,所有没有找到对应定义分类的日志,都会归为default分类 */ categories: { default: { appenders: ['default'], // 设置追加器为default,对应上面的appenders level: 'debug', // 设置记录日志的最低等级为debug,也就是所有日志都要记录 }, },}); 3.2.2 设置过滤器对应的追加器 // 设置log4js相关的配置log4js.configure({ /** * 追加器就使用默认的default追加器,所有没有设置追加的分类(category) * 都会使用该追加器写入日志文件 */ appenders: { default: { type: 'file', filename: path.join(__dirname, './logs/log.log'), }, /** * 指定debug追加器 */ debug: { type: 'file', // 日志文件类型 filename: path.join(__dirname, './logs/debug.log'), // 日志路径+名称 }, debugFilter: { type: 'logLevelFilter', // 设置type为logLevelFilter appender: 'debug', // 指定追加器为debug level: 'debug', // 设置捕获日志的最低等级 maxLevel: 'debug', // 设置捕获日志的最高等级 }, /** * 指定info追加器 */ info: { type: 'file', filename: path.join(__dirname, './logs/info.log'), }, infoFilter: { type: 'logLevelFilter', appender: 'info', level: 'info', maxLevel: 'info', }, /** * 指定warn追加器 */ warn: { type: 'file', filename: path.join(__dirname, './logs/warn.log'), }, warnFilter: { type: 'logLevelFilter', appender: 'warn', level: 'warn', maxLevel: 'warn', }, /** * 指定error追加器 */ error: { type: 'file', filename: path.join(__dirname, './logs/error.log'), }, errorFilter: { type: 'logLevelFilter', appender: 'error', level: 'error', maxLevel: 'fatal', }, }, /** * 分类也使用默认的分类,所有没有找到对应定义分类的日志,都会归为default分类 */ categories: { default: { appenders: ['default'], // 设置追加器为default,对应上面的appenders level: 'debug', // 设置记录日志的最低等级为debug,也就是所有日志都要记录 }, },}); 3.2.3 在分类中设置对应的过滤器

追加器过滤器已经设置好了,就差在分类中设置对应的“追加器”了。如果保持之前的代码不变,他只能将日志推送到default追加器中。

这里如果直接推送到目的追加器是无法根据对应等级进行日志划分的,所以应该先推送到对应的过滤器中。

相关代码如下:

// 设置log4js相关的配置log4js.configure({ /** * 追加器就使用默认的default追加器,所有没有设置追加的分类(category) * 都会使用该追加器写入日志文件 */ appenders: { default: { type: 'file', filename: path.join(__dirname, './logs/log.log'), }, /** * 指定debug追加器 */ debug: { type: 'file', // 日志文件类型 filename: path.join(__dirname, './logs/debug.log'), // 日志路径+名称 }, debugFilter: { type: 'logLevelFilter', // 设置type为logLevelFilter appender: 'debug', // 指定追加器为debug level: 'debug', // 设置捕获日志的最低等级 maxLevel: 'debug', // 设置捕获日志的最高等级 }, /** * 指定info追加器 */ info: { type: 'file', filename: path.join(__dirname, './logs/info.log'), }, infoFilter: { type: 'logLevelFilter', appender: 'info', level: 'info', maxLevel: 'info', }, /** * 指定warn追加器 */ warn: { type: 'file', filename: path.join(__dirname, './logs/warn.log'), }, warnFilter: { type: 'logLevelFilter', appender: 'warn', level: 'warn', maxLevel: 'warn', }, /** * 指定error追加器 */ error: { type: 'file', filename: path.join(__dirname, './logs/error.log'), }, errorFilter: { type: 'logLevelFilter', appender: 'error', level: 'error', maxLevel: 'fatal', }, }, /** * 分类也使用默认的分类,所有没有找到对应定义分类的日志,都会归为default分类 */ categories: { default: { appenders: ['debugFilter', 'infoFilter', 'warnFilter', 'errorFilter'], // 设置追加器为上面设置的filter,对应上面的各个过滤器 level: 'debug', // 设置记录日志的最低等级为debug,也就是所有日志都要记录 }, },}); 四、测试

再次使用刚才的代码,测试一下是否对日志进行了基于等级的切割。

logger.debug('debug');logger.info('info');logger.warn('warn');logger.error('error');logger.fatal('fatal');

可以看到日志文件夹中日志文件变为了如下所示:


依次打开每个文件,查看是否对应等级的日志就只写入了对应等级的日志文件中。

五、相关资料 log4js github地址log4js官方文档 六、结语

本文到此就结束了,说了这么多,也仅仅只是讲了log4js中的一个小小的特性,权当我是抛砖引玉吧,哈哈哈哈哈,log4js的灵活性与功能性还不仅仅限于此,更多更棒的用法还有待和大家继续讨论研究!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。