位置: 编程技术 - 正文

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的应用场景和优缺点)

  • 企业缴纳所得税税率
  • 个人所得税网上申报
  • 税目是什么意思和内容
  • 出租房屋取得的收入计入什么
  • 月末转出未交增值税时应借记的科目是
  • 小规模入账的收入分录
  • 收到备用金的会计分录怎么写
  • 劳务费可以开工程服务发票吗
  • 应交增值税账面和申报表不符
  • 缴纳销项税额要交税吗
  • 发票代码和发票号码是什么
  • 工程造价超出职称怎么办
  • 固定资产清理营业外支出汇算清缴需要调增吗
  • 免费送客户礼品的文案
  • 债务重组是什么意思?
  • 研发人员报销
  • 发票专用章只能盖一个
  • 投资退税申请应怎么写
  • 餐饮发票可以抵扣成本吗
  • 小规模企业所得税优惠政策最新2023
  • 建筑业的一般纳税人
  • 居民企业非货币性资产投资、转让所得如何缴税?
  • 全年累计申报个税怎么计算
  • 亏损企业能否享受失业金
  • 购买承兑汇票怎么做账
  • word文档打印时不打印批注
  • 公司个人股份转让需要缴税吗
  • 银行承兑找个人怎么操作
  • 关于临时工工资标准的规定
  • win 8和win 7有什么区别
  • 投资性房地产转换日公允价值大于账面价值
  • 分配辅助生产成本时可能借记的科目有
  • 赞助支出计入应纳税所得额吗
  • php字符串转换
  • php数据库管理
  • command对象可以执行sql语句吗
  • 农产品进项税抵扣填报方法
  • 无偿受让股权是利好吗
  • 即征即退的收入如何处理
  • 空调维修费入办公费还是修理费
  • 监理公司成本核算方法
  • 利息收入的会计分录
  • 以货换货什么意思
  • 服务业如何确定收入
  • 广告设计合同属于什么合同
  • 公司一般户需要纳税吗
  • 小企业营业外支出坏账损失
  • 预付账款写到什么凭证
  • 工程检测费的会计分录
  • 损益类所得税费用
  • 委托加工企业的账务处理
  • mac怎么创建apple id
  • redhat图形化界面启动
  • win8无法连接到internet
  • windows xp注册表清理
  • 同一个用户
  • ios太极
  • linux界面显示
  • win7磁盘c满了怎么办却又分不清哪些是该删除
  • win7z
  • linux新手入门教程
  • linux自动化装机
  • oracle sql mysql
  • 备份mbr引导
  • opengl用法
  • 浅谈python
  • 网页javascript错误
  • nodejs连接mysql的历程
  • shell脚本实际运用
  • ubuntu20.04 python
  • unity 2021.2
  • javascript零基础
  • android开发环境搭建实验报告总结
  • js基于什么
  • 哪些润滑油属于润滑剂
  • 税务分局长级别
  • 申报印花税显示未维护营行业信息
  • 中国税务报多少钱
  • 国家税务局河北省税务局
  • 国地税怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设