首页 > 编程知识 正文

log4j12,log4j配置详解

时间:2023-05-05 03:55:15 阅读:28432 作者:374

log4js :一种节点日志管理工具,可以将自定义格式的日志输出到不同的通道。 控制台日志输出可以显示颜色日志,文件格式日志输出可以根据文件大小和日期进行日志剪切。

简单用法: getLogger ()方法返回logger对象,并将logger对象的level ()级别设置为debug )默认值为OFF,不输出任何日志,因此必须设置日志级别! )

constlog4js=require(log4js ) ) const logger=log4j s.getlogger (self-appender ) (console.log ) logger.level ) )

正确的写法如下。

constlog4js=require('log4js ) )是log4js的实例const logger=log4js.getLogger ) /配置日志级别logger

注意:当未进行任何配置时,日志默认是输出带控制台,下边详细介绍到如何配置自己的appenders。

http://www.Sina.com/http://www.Sina.com /

日志级别。 正因为日志有分级,log4js才能更好地展示日志。 生产时可选的日志输出(例如,避免属于. debug的敏感信息泄露)在控制台中采用不同颜色级别的日志,例如,避免属于. debug的敏感信息泄露。

*log4js有以下等级,等级顺序也如下。

logger仅打印logger对象所设置级别以上的日志。

(1)卡车-最低等级

)2)调试

(3)信息服务

(4) warn

)5)错误

(6) fatal -最高水平

上一次打印的下方日志中的几个log4js的简单概念:是日志级别。

1、level型:

log4js也有category (型)的概念。 可以为一个Logger实例设置自定义类型,以便在另一个维中区分日志。

constlog4js=require('log4JS ) ) /调用. getLogger )是log4JS的实例const logger=log4js.getLogger ),这是登录实例

上一个默认值为下一个文本。

那么,打字有什么用呢? 比级别更灵活,日志中有第二个维度。 例如,可以为每个文件设置不同的日志输出类型。

constlog4js=require((log4js ) ) /调用. getLogger )是log4js的示例constlogger=log4js.getlogger ) ) setloggger.js

从打印的日志中可以看到,此日志来自setLogger.js文件,可以区分日志来自哪个模块。

配置对象:本次只介绍配置对象中最常用的3358www.Sina.com/和ERROR

2、-输出源

当前日志具有级别和类型,解决了日志入口的appenders categories 问题,1、appenders 将日志输出到哪里,以及

级别:日志输出的类型和级别输出到哪里? 常用的类型如下。

控制台——输出到控制台;

file ——输出指定文件;

dataFile ——每小时输出到不同的文件。

分类

属性类型含义filenamestring日志保存文件的路径及文件名,./为项目根目录,('file.log') 这样写默认为项目的根目录。maxLogSize?number / string日志文件的最大大小(以字节为单位),如果未指定,则不会发生日志滚动backups?number日志滚动期间要保留的旧日志文件数,默认值为5 (只有type为 'file' 时,backups才生效 )compress?boolean是否压缩backupsencoding?string编码格式,默认为utf-8layout?Layout输出的样式

小例子:

log4js提供了 configure 来配置我们想要的appenders。下边把日志输出到文件,设置了日志文件的最大大小为:200字节,保留的旧日志的最大数量为5,当存储的字节超出一个日志文件所设定的数值时,会自动创建一个日志文件,创建规则:定义的日志名 + 数字 ,每次超出时都会不断创建一个新日志文件,如果超出 backups 设定的值,会把之前最先打印的日志给删除掉,。

const log4js = require('log4js')log4js.configure({ appenders: { // fileOut 是自定义的,在categories中会用到 // 这个fileOut里边定义的就是日志以什么方式输出,名称及大小等等 ··· fileOut: { type: 'file', filename: 'fileOut.log', maxLogSize: 200, // 字节 backups: 5, encoding: 'utf-8' } }, categories: { default: { appenders: ['fileOut'], level: "debug" } }})const logger = log4js.getLogger('self-appender')logger.debug('error logs')

 运行代码:log4js在根目录创建了fileOut.log文件:

    1.3、当 type: 'dataFile' 时, 与其同级的属性如下:

属性类型含义filenamestring文件路径及文件名,./为项目根目录pattern?string滚动日志的时间类型,默认为 .yyyy-MM-ddencoding?string编码格式,默认为utf-8compress?boolean是否压缩滚动日志文件daysToKeep?number如果此值大于零,则日志滚动期间将删除早于该天数的文件,默认为0alwaysIncludePattern?boolean在当前日志文件名中和滚动日志一样包括patternlayout?Layout输出的样式

pattern是保存滚动日志的时间分割,它的规则如下:

yyyy : 年MM : 月dd : 日hh : 时mm : 分ss : 秒SSS : 毫秒pattern: '.yyyy-MM-dd hh:mm:ss'

下例子:

var log4js = require('log4js');log4js.configure({ appenders: { dateFileOut: { type: 'dateFile', filename: 'datefile.log', pattern: '.yyyy-MM-dd hh:mm:ss', maxLogSize: 200 } }, categories: { myDateFileOut: {appenders: ['dateFileOut'], level: 'debug'} }})var logger = log4js.getLogger('myDateFileOut');logger.debug("日志输出");

 日志文件输出如下:

 

    1.4、日志格式 - layout

log4js通过layout设置日志格式,内置的layout有:

· basic - 包含时间戳、日志级别、日志类型基本日志格式。

· colored - 格式与basic一致,只是不同日志等级显示不同的颜色。

· dummy - 只输出第一个参数的内容,没有时间戳、日志级别、日志类型。

· pattern - 可自定义日志格式,以下是部分常用字段:

               %r ——  时间为toLocalTimeString格式。

               %p ——  日志级别。

               %c ——  日志类别。

      %h —— 主机名。

      %m  —— 记录数据。

      %f —— 文件名的完整路径(enableCallStack: true在类别上必填,请参阅配置对象)

               %d ——  日期,格式默认是ISO8601, 格式选项有:ISO8601,ISO8601_WITH_TZ_OFFSET,ABSOLUTE,DATE,或与兼容的任何字符串日期格式库。例如%d{DATE},%d{yyyy/MM/dd-hh.mm.ss}。

               %x{} —— 将动态令牌添加到您的日志中。令牌是在tokens参数中指定的。

                %X{} —— 从Logger上下文中添加值。令牌是上下文值的键。

var log4js = require('log4js');log4js.configure({ appenders: { consoleOut: { type: 'console', layout: { type: 'basic', // type: 'colored', // type: 'dummy', // type: 'pattern', pattern:'%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %m' } } }, categories: { myConsole: {appenders: ['consoleOut'], level: 'debug'}, }})var logger = log4js.getLogger('myConsole');logger.debug("日志输出");

 当type:'basic' 输出如下:

 当type:'colored' 输出如下:

 当type:'dummy' 输出如下:

 当 type: 'pattern',  pattern: '%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %m' , 输出如下:

 

2、categorites - 类别、分类

在categories里边定义的是日志的输出的规则(这个规则就是在appenders里边定义的),还有日志等级 level。

ccategories 中共有三个属性如下:

属性类型含义appendersstring | [ ]上方所定义的appenders的名字,写入多个时全部输出levelstring输出的日志等级,大于等于所写的等级enableCallStack?boolean写样式时可使用到

下边categories中的default和myConsole就是在 log4js.getLogger()时自定义的类别,当log4js.getLogger()不传参数的时候,默认是default,所以它会自动去调用categories中定义的default里边的规则;如果传了参数: log4js.getLogger('myConsole'), 那么log4js会调用categories中定义的myConsole里边的规则:

const log4js = require('log4js')log4js.configure({ appenders: { fileOut: { type: 'file', filename: 'filename.log', maxLogSize: 200, backups: 5 }, consoleOut: {type: 'console'} }, categories: { default: { appenders: ['fileOut'], level: "debug" }, myConsole: { appenders: ['consoleOut'], level: "debug" } }})const logger = log4js.getLogger()// const logger = log4js.getLogger('myConsole')logger.debug('error logs')

默认不传参数时,可以看到会根据default规则来生成日志:

当传 'myConsole' 时,会在控制台输出日志:

待续未完成。

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