log4js

log4js:

是一种node日志管理工具,可以将自定义格式的日志输出到各种渠道。对于控制台的日志输出可以呈现彩色日志,对于文件方式的日志输出,可以根据文件大小或者日期进行日志切割。

简单用法:

getLogger( ) 方法返回一个 logger 对象,将 logger 对象的 level (等级)设置为 debug (默认为OFF不会输出任何日志,所以必须设置日志等级!!!)

const log4js = require('log4js')
const logger = log4js.getLogger('self-appender')
console.log(logger.level)

正确写法如下:


const log4js = require('log4js')
 // 调用 .getLogger() 可获得log4js的实例
const logger = log4js.getLogger()
// 设置日志等级
logger.level = 'error'
// 根据日志等级,输出日志
logger.error('错误日志')

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

 

几个log4js的简单概念:

1、level 

就是日志等级。日志有了分级,log4js才能更好的为我们展示日志(不同级别的日志,在控制台中采用不同的颜色,比如:error通常是红色的),在生产可以选择的选择日志输出,比如避免一些属于.debug才用的敏感信息被泄露出来。

* log4js分为以下几个级别,级别的顺序也是按照如下排列,

 logger只会打印:大于等于 logger对象设置的level等级的日志!!!

 (1)track - 最低等级

 (2)debug

 (3)info

 (4)warn

 (5)error

 (6)fatal - 最高等级

之前的打印的下边这条日志中的 ERROR 就是日志的等级级别:

2、类型:

log4js 还有一个概念就是category(类型),你可以设置一个Logger实例的自定义类型,按照另一个维度来区分日志:

const log4js = require('log4js')
 // 调用 .getLogger() 可获得log4js的实例
const logger = log4js.getLogger('这是一个日志实例的自定义类型')
// 设置日志等级
logger.level = 'error'
// 根据日志等级,输出日志
logger.error('错误日志')

之前的 default 变为下边一段文字:

那么类型有什么用呢,它比级别更为灵活,为日志提供了第二个区分的维度,例如,你可以为不同的文件设置不同的 日志输出类型:

const log4js = require('log4js')
 // 调用 .getLogger() 可获得log4js的实例
const logger = log4js.getLogger('setLogger.js')
// 设置日志等级
logger.level = 'error'
// 根据日志等级,输出日志
logger.error('错误日志')

从打印的日志中可以看出,这条日志来自于 setLogger.js  文件,这样可以区分日志来源于哪一个模块。

 

配置对象:

本次只对配置对象中最常用的 appenders categories 进行介绍。

1、appenders - 输出源

现在日志有了级别和类型,解决了日志入口处的级别 和 分类的问题,而在 log4js 中,即日志输出到哪里、以怎么样的方式输出,就是由appender来解决的,可以将日志写入到文件、发送电子邮件、通过网络发送数据等。appenders 配置对象可以定义多个appender :

    1.1 、type : 日志输出的类型,级输出到哪里,常用的类型如下:

                   console ——  输出至控制台;

                    file —— 输出指定的文件;

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

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

属性类型含义
filenamestring日志保存文件的路径及文件名,./为项目根目录,('file.log') 这样写默认为项目的根目录。
maxLogSize?number / string日志文件的最大大小(以字节为单位),如果未指定,则不会发生日志滚动
backups?number日志滚动期间要保留的旧日志文件数,默认值为5 (只有type为 'file' 时,backups才生效 )
compress?boolean是否压缩backups
encoding?string编码格式,默认为utf-8
layout?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-dd
encoding?string编码格式,默认为utf-8
compress?boolean是否压缩滚动日志文件
daysToKeep?number如果此值大于零,则日志滚动期间将删除早于该天数的文件,默认为0
alwaysIncludePattern?boolean在当前日志文件名中和滚动日志一样包括pattern
layout?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' 时,会在控制台输出日志:

待续未完成。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
log4javascript是一个JavaScript日志记录库,用于在浏览器中记录日志。它支持多个日志级别,包括ALL、TRACE、DEBUG、INFO、WARN、ERROR、FATAL和NONE。\[1\]可以通过在HTML页面中引入log4javascript.js文件,并使用log4javascript.getDefaultLogger()方法来创建一个默认的日志记录器。然后,可以使用不同的日志级别记录不同的日志信息。例如,在点击按钮时,可以使用log.info("helloworld")来记录一条信息。\[2\]在Node.js中,可以使用log4js模块来记录日志。可以通过require('log4js')引入log4js模块,并使用log4js.getLogger()方法创建一个日志记录器。然后,可以使用不同的日志级别记录不同的日志信息。例如,可以使用logger.debug('this is debug')来记录一条调试信息。\[3\] #### 引用[.reference_title] - *1* *2* [log4javascript](https://blog.csdn.net/iteye_12313/article/details/82364049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [log4基本用法](https://blog.csdn.net/gwdgwd123/article/details/103562446)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值