位置: 编程技术 - 正文

Node.js 日志处理模块log4js(node.js console.log)

编辑:rootadmin

推荐整理分享Node.js 日志处理模块log4js(node.js console.log),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js操作,node 日志框架,node 日志输出,node.js console.log,nodejs logger,node 日志框架,nodejs日志文件存放在哪,nodejs日志文件存放在哪,内容如对您有帮助,希望把文章链接给更多的朋友!

log4js 是 Node.js 日志处理中的数一数二的模块。比起 console 或者 TJ 的 debug 有其优势,尤其针对投入生产的 Node.js 项目来说下面这些是不可少的:

日志分级 日志分类 日志落盘

本文将会给你一个 log4js 的全面介绍,让你可以在项目中驾轻就熟的使用 log4js,开发调试容易,线上更好地监控或排查问题。

牛刀小试

下面这三行代码为你展示了 log4js 最简单的用法:

调用 .getLogger() 可以获得 log4js 的 Logger 实例,这个实例的用法与 console 是一致的,可以调用 .debug (也有 .info 、 .error 等方法)来输出日志。

运行 node simplest.js ,输出如下:

Time: --T::.Z 是我们想要输出的内容,前面的包含说明符 [-- ::.] [DEBUG] [default] 后文再表。

使用起来是不是也很简单,好了,在我们深入到 log4js 高级用法之前,我们先来熟悉一下几个 log4js 中的概念。

Level

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

log4js 的日志分为九个等级,各个级别的名字和权重如下:

上个图:

ALL OFF 这两个等级并不会直接在业务代码中使用。剩下的七个即分别对应 Logger 实例的七个方法, .trace .debug .info ... 。也就是说,你在调用这些方法的时候,就相当于为这些日志定了级。因此,之前的 [-- ::.] [DEBUG] [default] - Time: --T::.Z 中的 DEBUG 既是这条日志的级别。

类型

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

在通过 getLogger 获取 Logger 实例时,唯一可以传的一个参数就是 loggerCategory(如 'example' ),通过这个参数来指定 Logger 实例属于哪个类别。这与 TJ 的 debug 是一样的:

在 debug 中 'worker' ,同样也是为日志分类。好了,回来运行 node set-catetory.js :

[-- ::.] [DEBUG] example - Time: --T::.Z与之前的 [-- ::.] [DEBUG] [default] - Time: --T::.Z 唯一不同的地方就在于, [default] 变成了 example 。

那类别有什么用呢,它比级别更为灵活,为日志了提供了第二个区分的维度,例如,你可以为每个文件设置不同的 category,比如在 set-catetory.js 中:

就可以从日志 [-- ::.] [DEBUG] set-catetory.js - Time: --T::.Z 看出,这条日志来自于 set-catetory.js 文件。又或者针对不同的 node package 使用不同的 category,这样可以区分日志来源于哪个模块。

Appender

好了,现在日志有了级别和类别,解决了日志在入口处定级和分类问题,而在 log4js 中,日志的出口问题(即日志输出到哪里)就由 Appender 来解决。

默认 appender

下面是 log4js 内部默认的 appender 设置:

Node.js 日志处理模块log4js(node.js console.log)

可以看到,在没有对 log4js 进行任何配置的时候,默认将日志都输出到了控制台。

设置自己的 appender

我们可以通过 log4js.configure 来设置我们想要的 appender。

在上例中,我们将日志输出到了文件中,运行代码,log4js 在当前目录创建了一个名为 default.log 文件, [-- ::.] [DEBUG] custom-appender - Time: --T::.Z 输出到了该文件中。

log4js 提供的 appender

Console 和 File 都是 log4js 提供的 appender,除此之外还有:

DateFile:日志输出到文件,日志文件可以安特定的日期模式滚动,例如今天输出到 default---.log ,明天输出到 default---.log ;SMTP:输出日志到邮件;Mailgun:通过 Mailgun API 输出日志到 Mailgun;levelFilter 可以通过 level 过滤;等等其他一些 appender,到 这里 可以看到全部的列表。

过滤级别和类别

我们可以调整 appender 的配置,对日志的级别和类别进行过滤:

运行,在 default.log 中增加了一条日志:

[-- ::.] [DEBUG] category1 - Time: --T::.Z来看一下代码:

使用 logLevelFilter 和 level 来对日志的级别进行过滤,所有权重大于或者等于 DEBUG 的日志将会输出。这也是之前提到的日志级别权重的意义;通过 category 来选择要输出日志的类别, category2 下面的日志被过滤掉了,该配置也接受一个数组,例如 ['category1', 'category2'] ,这样配置两个类别的日志都将输出到文件中。

Layout

Layout 是 log4js 提供的高级功能,通过 layout 我们可以自定义每一条输出日志的格式。log4js 内置了四中类型的格式:

messagePassThrough:仅仅输出日志的内容;basic:在日志的内容前面会加上时间、日志的级别和类别,通常日志的默认 layout;colored/coloured:在 basic 的基础上给日志加上颜色,appender Console 默认使用的就是这个 layout;pattern:这是一种特殊类型,可以通过它来定义任何你想要的格式。一个 pattern 的例子:

%r %p $m $n 是 log4js 内置的包含说明符,可以借此来输出一些 meta 的信息,更多细节,可以参考 log4js 的 文档 。

一张图再来说明一下,Logger、Appender 和 Layout 的定位。

实战:输出 Node 应用的 ACCESS 日志 access.log

为了方便查问题,在生产环境中往往会记录应用请求进出的日志。那使用 log4js 怎么实现呢,直接上代码:

看看我们做了哪些事情:

配置了一个 appender,从日志中选出类别为 access 的日志,输出到一个滚动的文件中;log4js.getLogger('access') 获取一个类别为 access 的 Logger 实例,传递给 log4js.connectLogger 中间件,这个中间件收集访问信息,通过这个实例打出。启动服务器,访问 access.log---.log 的文件,里面有两条日志:

[-- ::.] [INFO] access - ::1 - - "GET / HTTP/1.1" "" "Mozilla/5.0 (Macintosh; Intel Mac OS X __0) AppleWebKit/. (KHTML, like Gecko) Chrome/.0.. Safari/."[-- ::.] [INFO] access - ::1 - - "GET /favicon.ico HTTP/1.1" " "Mozilla/5.0 (Macintosh; Intel Mac OS X __0) AppleWebKit/. (KHTML, like Gecko) Chrome/.0.. Safari/."

通过 log4js 日志的分类和appender功能,我们把访问日志输出到了一个滚动更新的文件之中。

总结

本文为大家全面地介绍了 log4js 的用法,与 console 或者简单的日志工具相比,log4js 使用起来更复杂,当然功能更强大,适合生产级应用的使用。如果大家有兴趣的话,请留言告诉外刊君,接下来可能为大家介绍如何在 Node 应用中做配置管理。

浅谈Nodejs应用主文件index.js 前言经过之前的文章《浅谈Nodejs应用的主文件index.js的组成部分》,终于认识了Node妹子的容颜,然后好像上呀<( ̄︶ ̄)>。呦西~这次让本?旁谒?靥

教你如何在Node.js中使用jQuery 想要在NodeJs中使用jQuery?首先,我们得安装jquery,npminstalljquery。安装后的版本是3.1.0接着,第一感觉我们会使用var$=require('jquery')。将以下代码保存为app.

Node.js配合node-http-proxy解决本地开发ajax跨域问题 情景:前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法:1.后端接口打包到本地运行(缺点:每次后端更新都要去测试服下

标签: node.js console.log

本文链接地址:https://www.jiuchutong.com/biancheng/370784.html 转载请保留说明!

上一篇:node.js中 stream使用教程(node stream原理)

下一篇:浅谈Nodejs应用主文件index.js(nodejs的应用场景和优缺点)

  • 加班费计入个税吗
  • 购买固定资产的进项税可以抵扣吗
  • 远期交易怎么结算
  • 发票认证是干嘛
  • 借已交税金贷银行存款
  • 过桥过闸通行费会计分录
  • 跨期列支成本费用危害
  • 债务重组双方如何进行会计处理
  • 本年利润是负数的会计分录
  • 计提残疾人保障金的基数是什么
  • 预付房租收到发票后如何做账
  • 村集体经济组织法
  • 企业所得税税负怎么算
  • 一般纳税人简易征收范围
  • 应收账款怎么样转入以前年度损益调整
  • 单张发票不超过1万
  • 加工费计入什么费用
  • 残保金和工会经费需要计提吗
  • 1697510768
  • linux系统怎么关闭端口
  • mac系统怎么删除用户
  • 长期借款和短期借款时间
  • 收到其他公司的罚款会计分录
  • PHP:oci_num_fields()的用法_Oracle函数
  • 增值税发票红字发票怎么开具
  • 退货可以吗
  • 解决出现问题的人
  • 冰川国家公园在哪
  • Pytorch深度学习实战3-6:详解网络骨架模块nn.Module(附实例)
  • 视听结合的景物描写
  • thinkphp pathinfo
  • 2022-8-30 servlet
  • 节假日加班工资是几倍
  • 增值税申报表各栏怎么填
  • 其他权益工具投资是什么类科目
  • 公司开具手工发票怎么开
  • mac os x10.9.5
  • 哪些收入需缴纳增值税
  • 公司清算的特征
  • 会员退费怎么算
  • 企业收到赠送商品会计分录
  • 豆腐是农产品还是工业产品
  • 发票收款人和复核人可以是一个人吗
  • 发票开具流程是?
  • 收到土地使用权转让怎么做账
  • 应付帐款不用付了的分录怎么处理
  • 现金抵用券使用说明怎么写
  • 企业如果为员工缴纳社保
  • 应交税费借方余额填列资产负债表
  • 应交土地增值税的三种情况
  • 劳务报酬现金流量
  • 进项税额抵扣不完要做分录吗
  • 汇算清缴后缴纳所得税会计分录
  • 什么是长期股权投资
  • 营改增租赁服务有哪些
  • 工业企业预提费用怎么算
  • windows下启动mysql的命令是什么
  • mysql 通过拷贝数据文件的方式进行数据库迁移实例
  • Windows Server 2008搭建终端服务器
  • centos怎么样
  • fedora系统
  • win7系统压缩包
  • WIN10如何设置字体大小
  • windows临时文件在哪里
  • centos安装nmtui
  • Win8.1怎么打开无线网卡
  • Win10年度更新正式发布:功能全面升级
  • 如果打招呼了不理是什么原因
  • androidstudio listview
  • java word操作
  • shell 正则表达式 *什么意思
  • python的pip安装命令
  • 用jquery
  • shell批处理脚本
  • android多指触控
  • 安卓 截图
  • javascript.
  • 浙江增值税电子普通发票用支付宝怎么开
  • 税纳税申报表
  • 集体产权房产证怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设