位置: 编程技术 - 正文

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

  • 向税务局申请发票增量增额怎么写
  • 在建工程转固定资产需要交税吗
  • 进项税额比销项税额大怎么办
  • 一张发票能分开做帐务处理吗
  • 购买冰箱微波炉注意事项
  • 企业一般户怎么注销
  • 兼职人员怎么申报工资
  • 存款利息收入增值税是免税还是不征税
  • 月末 存款
  • 进口货物的应纳增值税
  • 酒店前台冲账发生错误怎么办?
  • 公司购入空调可以抵扣进项吗
  • 印花税算错了可以补交吗
  • 小规模建筑企业预缴税款
  • 个人转租房屋的法律规定
  • 增值税普通发票税率
  • 合同和付款单位不一致发票应该开给谁
  • 坏账准备如何计提计算
  • 固定资产销售税务处理
  • 一般纳税人选择简易计税进项税可以抵扣吗
  • 进项票已认证忘记开票
  • 离职补偿金个税计算器2022
  • 建筑企业的职工由于不服管理违反规章制度
  • 写字楼空置房物业费70%的规定
  • 认缴制的期限是多久
  • 税款流失是什么意思
  • 合同是怎么影响企业纳税的?
  • 参加国外展会费用
  • 营业外支出调减应该填在纳税调整项目明细表哪一项
  • 房产企业竞标取消通知
  • 未弥补完亏损可以计提盈余公积
  • 议价收购股份的账务处理
  • 停产资产折旧如何处理
  • 现金存入银行是付款还是转账
  • 电脑任务栏图标怎么移到左边
  • vue3 provide inject
  • 公司+农户经营模式是什么意思
  • 差额征收单位所需材料
  • 代收代付的垃圾清运费没发票能入账吗
  • 行政事业单位预算由收入预算、支出预算组成
  • water gardens
  • 当月预交的增值税在申报期内可以填报进去抵扣
  • html零基础入门教程
  • vue.mixin是什么
  • Blog2N如何计算
  • 自营与代理
  • 跨期发票的形成条件
  • 增值税不动产扣除项目
  • 金蝶kis的使用方法
  • 网站用masonry瀑布流无限加载重叠解决方法
  • 一般纳税人应交增值税
  • sqlserver2019配置
  • 小规模教育培训怎样纳税
  • 一般纳税人发生应税销售行为向购买方收取
  • 国家土地补偿款
  • 跨年后发票作废
  • 支付的管理费用调到其他应付款怎么做账
  • 长期挂账的往来款税务处理
  • 收据和收款收据的法律效力
  • 上一年度的费用怎么做会计分录
  • 注册公司没交社保
  • 编制利润表的主要根据是
  • MySQL 5.6 中 TIMESTAMP 的变化分析
  • SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转)
  • sql常用语句大全简书
  • mysql unique作用
  • MySQL exists 和in 详解及区别
  • 系统32位和64位的区别 Windows系统32位和64位的区别在哪里
  • win8系统打不开设置
  • win8系统无法连接到网络
  • windows8触摸屏手势设置
  • .exe是什么意思
  • linux shell 常用命令大全
  • win10修复dllregisterserver
  • windows7禁止开机启动
  • win10系统访问不了
  • android接听电话
  • 税局签三方
  • 天津摇号申请查询
  • 长治一诺代理记账公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设