log4js日志的使用与详解

日志 log4js

1. 安装与引入

npm install log4js

var log4js = require(“log4js”);

2. 配置

log4js.configure({  
    appenders: {  
        fileout: { type: "file", filename: "fileout.log" }, 
        datafileout: {
            type: "dateFile", 
            filename: "datafileout.log", 
            pattern: ".yyyy-MM-dd-hh-mm-ss-SSS"
        },
        consoleout: { type: "console" }, 
    }, 
    categories: {    
        default: { appenders: ["fileout", "consoleout"], level: "debug" },   
        anything: { appenders: ["consoleout"], level: "debug" }
    }
});

3. 使用

	let logger = log4js.getLogger('anything');
 	logger.debug("debug")
    logger.info("info")
    logger.warn("info")
    logger.error("error")
    logger.fatal("fatal")

4. 配置详解

appenders
 appenders: {  
    fileout: { type: "file", filename: "fileout.log" }
 }

appenders中为键值对形式,键为名字,如代码中fileout是下面categories中要用到的名字,可自定义。
值亦为键值对形式,键为属性,必有的属性是type,根据type值的不同,可拥有其他的属性。下面介绍几个常用的type中常用的属性:

  • console——输出至控制台

    属性类型含义
    layout?Layout输出的样式
  • file——输出至指定文件

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

    backups是保存旧的日志的文件数,当日志大小超过我们所设定的maxLogSize的值时,会将maxLogSize值大小的日志移动到另一个文件,文件名filename.1,如:
    backups

    直至输出backups数量的文件,超过的即被删除。所以 所保存的日志文件的大小 = maxLogSize * backups+日志保存路径的大小 。

  • dataFile——按时间输出至不同的文件

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

    pattern是保存滚动日志的时间分割,它可识别出以下字符串

    • yyyy : the full year, use yy for just the last two digits
    • MM : the month
    • dd : the day of the month
    • hh : the hour of the day (24-hour clock)
    • mm : the minute of the hour
    • ss : seconds
    • SSS : milliseconds

    例如代码为

    pattern: ".yyyy-MM-dd-hh-mm-ss"
    

    则每秒都会讲该秒的日志保存为一个文件,若该秒没有日志,则不保存。文件命名为filename加pattern定义的时间。
    datafile

其他的所有type

categories
 categories: { 
     default: {appenders: ["fileout", "consoleout"], level: "debug"}, 
     anything: {appenders: ["consoleout"], level: "debug"}
 }

categories是getLogger时指定的类别,格式为键值对,键可自定义,推荐配置一个default,当getLogger不指定类别或指定的类别不存在时,默认使用default,输出时默认输出类别名。
categories的值有3个属性,分别是:

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

5. 日志样式

在appenders中每种type都有一个属性为layout,它定义了日志输出的样式,一样表示为键值对方式。
此处介绍几种常用的内置样式。

   layout: {type: 'basic'}
  • basic
    默认样式,文件输出类不指定则为此样式。
    basic

  • colored
    console默认样式,控制台不输出则为此样式
    colored

  • messagePassThrough
    不输出时间与类别
    message

  • pattern
    支持自定义样式

log4js.configure({
  appenders: {
    out: { 
        type: 'stdout',
        layout: {
          type: 'pattern',
          pattern: '%d %p %c %X{user} %m%n'
        }
    }
  },
  categories: { default: { appenders: ['out'], level: 'info' } }});
  const logger = log4js.getLogger();
  logger.addContext('user', 'charlie');
  logger.info('doing something.');

以上代码输出

2017-06-01 08:32:56.283 INFO default charlie doing something.

pattern可支持的部分字段

  • %r 时间为toLocaleTimeString格式
  • %p 日志级别
  • %c 日志类别
  • %d 日期,格式-默认是ISO8601,格式选项有:ISO8601,ISO8601_WITH_TZ_OFFSET,ABSOLUTE,DATE,或与兼容的任何字符串日期格式库。例如%d{DATE},%d{yyyy/MM/dd-hh.mm.ss}
  • %x{} 将动态令牌添加到您的日志中。令牌是在tokens参数中指定的
  • %X{} 从Logger上下文中添加值。令牌是上下文值的键。

所有的可支持的字段详见 日志样式

  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风吹过你怎么样了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值