位置: 编程技术 - 正文

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

  • 税收 特征
  • 公司会计日常工作内容
  • 如何查询外经证缴了多少税
  • 新公司第一年要做亏
  • 小规模电子发票一张可以开多少金额
  • 财税公告2019年第74号
  • 个体工商户收到发票怎么做账
  • 费用发票已报销怎么入账
  • 员工福利费是不是加班费
  • 国有资产无偿划转管理办法
  • 分支机构多预缴应该怎么退税呢?
  • 未盖发票章怎么办
  • 手工开具发票
  • 税号里的字母是什么
  • 发票升额需要什么条件
  • 母公司向子公司收取管理费
  • 销售结算款扣款怎么记账?
  • 验资报告办理一般需要多久时间
  • 虚开增值税简单例子
  • 哪些税金计入存货成本
  • 资产减值损失怎么计提
  • 调整上年少计提税金及附加
  • 苹果电脑mac系统怎么升级
  • 确认预计负债的必要条件
  • 营业外支出的核算内容包括
  • 报销招待费的会计怎么做
  • 企业银行存款如何管理
  • 2020 php 薪资
  • wordpress主题dux
  • 收回贷款本息是包含本金吗
  • typescript ??
  • php和js 哪个简单
  • php操作mysql数据库
  • deepwiser怎么用
  • 增值税专票怎么作废
  • php判断查询结果是否存在
  • 企业持有待售的固定资产,应当对其预计
  • js中数组方法有哪些
  • 特殊动产的一物数卖履行顺序
  • 个体工商户和个人独资企业的区别
  • 自建自用 房产税
  • 成本法变为权益法合并层面计算投资收益
  • 顶账用什么东西顶好
  • 怎么填专项扣除
  • 生产成本结转库存商品,怎么算知道数量以及单价
  • 营改增之后增值税怎么算
  • php怎么连接sqlserver
  • 小规模增值税税率表2023年最新版
  • 什么是房地产企业?它主要具有哪些特性?
  • 普票是啥意思
  • 房地产企业 预缴
  • 所得税费用是会计科目吗
  • 税费改革的思路
  • 增资后持股比例计算
  • 已认证发票退回的流程
  • 知识产权服务费可以计入研发费用吗
  • 固定资产报废会计
  • 印花税交多了
  • debian9.6安装教程
  • mysql mac启动
  • ubuntu卸载ubuntu-desktop
  • 重装系统重启后怎么操作
  • 苹果mac怎么连接显示器
  • win10桌面添加画图图标
  • centos elk
  • 微软 hololive
  • iis7.0是什么
  • win8和win10双系统安装教程
  • Win10 Mobile Redstone新功能介绍
  • win7如何更改欢迎界面
  • android studio downloading
  • jquery用法
  • 前端闭包函数
  • android图片裁剪
  • 国家税务总局洛阳市分局
  • 重庆市电子税务局官网
  • 申报期一般是什么时候
  • 税务局组织收入存在的问题
  • 耕地占用税免税项目需要计入计税依据吗
  • 北京朝阳区国税局时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设