位置: 编程技术 - 正文

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
  • 法人转让股权后还是法人吗
  • 安防监控工程会计分录
  • 科技型中小企业申请流程
  • 公司闲置资金理财做了三年定期存款
  • 财报中计提
  • 对方公司已经注销,欠钱收不回
  • 董事费监事费个税计算
  • 固定资产采用工作量法计提折旧怎么算
  • 金税盘抵减增值税的账务处理
  • 债转股企业所得税资本公积
  • 预付账款发票到货未到怎么做账
  • 货款打了未收到发票但是公司倒闭了怎么办?
  • 原油资源税计税方法
  • 定额发票用来干嘛
  • 所得税费用为负数需要体现在报表上吗
  • 保证金算费用吗
  • 发票最大限额999元,超过了怎么办
  • 住房公积金管理官网
  • 委托加工存货要交什么税
  • 建筑劳务公司的会计账务处理
  • 小微企业附加税怎么算
  • 应收账款无法收回确认为坏账分录
  • 工资薪金支出账载金额小于实际发生额
  • 一般纳税人销售自己使用过的汽车
  • 弃置费用预计负债的会计处理
  • switcher.exe - switcher是什么进程
  • php declare函数
  • 电脑进程ace是什么
  • php pack
  • 进程 com surrogate
  • explorer进程作用
  • php和js 哪个简单
  • 小型微利企业税收优惠2023
  • 基于opencv的图像处理
  • pytorch基础
  • k8s安装步骤
  • php操作mysql数据库的扩展有哪三个
  • 前端 组件化
  • php连接数据库的基本步骤是什么
  • phpwhile循环多维数组
  • 出售子公司股权不丧失控制权
  • 企业所得税月月交吗
  • 在mysql中子查询是
  • 总承包可以转包吗
  • 为什么出台农产品质量安全法
  • 差旅补助要计入成本吗
  • 管理费用处理的是
  • 退休职工能否扣医保
  • 钉钉财务软件怎么用
  • 挂靠的项目如何做账?
  • 个体户也需要纳税吗
  • 保险再保业务
  • 公司因担保产生损失
  • 应交税费如何做到账表一致
  • 逾期交房违约金 已支付金额
  • 公司之前借款没入账现在还款
  • 其他综合收益要转入投资收益吗
  • 社保年度汇算清缴怎么做
  • 旅游企业相关服务案例
  • win10怎么设置开机自启软件
  • winxp系统安装教程
  • xp更改dns
  • centos如何添加用户
  • 通过修改注册表修改edge主页
  • win7开始菜单找不到启动项
  • win7自动升级失败后的处理
  • mobile windows
  • javascript的代码
  • nodejs怎么在服务器运行
  • 以下关于shell脚本参数
  • bootstrap技术教程
  • 笔记本等待网络准备好
  • 一个简单的网页
  • JavaScript中的NaN代表什么
  • python dj
  • 印花税核算有两种情况,是如何处理的?
  • 安徽高考实行什么模式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设