Node.js开发指南 如何使用Node.js日志
沉沙 2018-07-19 来源 : 阅读 573 评论 0

摘要:Node.js的日志默认打印到控制台,为数据收集和问题调查带来不便。通过log4js可以实现把日志打印到文件、自定义日志格式等功能,便于数据收集和整理。希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

Node.js的日志默认打印到控制台,为数据收集和问题调查带来不便。通过log4js可以实现把日志打印到文件、自定义日志格式等功能,便于数据收集和整理。

1. [backcolor=transparent]var[backcolor=transparent] log4js [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]require[backcolor=transparent]([backcolor=transparent]'log4js'[backcolor=transparent]);

2. [backcolor=transparent]log4js[backcolor=transparent].[backcolor=transparent]configure[backcolor=transparent]({

3. [backcolor=transparent]  appenders[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent][

4. [backcolor=transparent]    [backcolor=transparent]{[backcolor=transparent]  

5. [backcolor=transparent]      type[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'file'[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]//文件输出

6. [backcolor=transparent]      filename[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'logs/access.log'[backcolor=transparent],[backcolor=transparent]

7. [backcolor=transparent]      maxLogSize[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]1024[backcolor=transparent],

8. [backcolor=transparent]      backups[backcolor=transparent]:[backcolor=transparent]3[backcolor=transparent],

9. [backcolor=transparent]      category[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'normal'[backcolor=transparent]

10. [backcolor=transparent]    [backcolor=transparent]}[backcolor=transparent]  

11. [backcolor=transparent]  [backcolor=transparent]]

12. [backcolor=transparent]});

13. [backcolor=transparent]var[backcolor=transparent] logger [backcolor=transparent]=[backcolor=transparent] log4js[backcolor=transparent].[backcolor=transparent]getLogger[backcolor=transparent]([backcolor=transparent]'normal'[backcolor=transparent]);

14. [backcolor=transparent]logger[backcolor=transparent].[backcolor=transparent]setLevel[backcolor=transparent]([backcolor=transparent]'INFO'[backcolor=transparent]);

15. [backcolor=transparent]logger[backcolor=transparent].[backcolor=transparent]info[backcolor=transparent]([backcolor=transparent]"this is a info msg"[backcolor=transparent]);

16. [backcolor=transparent]logger[backcolor=transparent].[backcolor=transparent]error[backcolor=transparent]([backcolor=transparent]"this is a err msg"[backcolor=transparent]);

 
 
日志格式 
 
 
通过log4js实现日志数据存储为文本文件格式后,日志在文件中显示为以下格式:

1. [backcolor=transparent][[backcolor=transparent]2016[backcolor=transparent]-[backcolor=transparent]02[backcolor=transparent]-[backcolor=transparent]24[backcolor=transparent] [backcolor=transparent]17[backcolor=transparent]:[backcolor=transparent]42[backcolor=transparent]:[backcolor=transparent]38.946[backcolor=transparent]][backcolor=transparent] [backcolor=transparent][[backcolor=transparent]INFO[backcolor=transparent]][backcolor=transparent] normal [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]this[backcolor=transparent] [backcolor=transparent]is[backcolor=transparent] a info msg

2. [backcolor=transparent][[backcolor=transparent]2016[backcolor=transparent]-[backcolor=transparent]02[backcolor=transparent]-[backcolor=transparent]24[backcolor=transparent] [backcolor=transparent]17[backcolor=transparent]:[backcolor=transparent]42[backcolor=transparent]:[backcolor=transparent]38.951[backcolor=transparent]][backcolor=transparent] [backcolor=transparent][[backcolor=transparent]ERROR[backcolor=transparent]][backcolor=transparent] normal [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]this[backcolor=transparent] [backcolor=transparent]is[backcolor=transparent] a err msg

 
log4js分为6个输出级别,从低到高分别为trace、debug、info、warn、error、fatal。 
 
通过Logtail收集Node.js日志 
 
 
配置Logtail收集Python日志的详细操作步骤请参考快速入门和apache日志,根据您的网络部署和实际情况选择对应配置。 
在生成正则式的部分,由于自动生成的正则式只参考了日志样例,无法覆盖所有的日志情况,所以需要用户在自动生成之后做一些微调。您可以参考以下Node.js日志示例,为您的日志撰写正确、全面的正则表达式。 
[backcolor=transparent]常见的Node.js日志及其正则表达式:

·  
Node.js日志示例1 
日志示例:

[backcolor=transparent][[backcolor=transparent]2016[backcolor=transparent]-[backcolor=transparent]02[backcolor=transparent]-[backcolor=transparent]24[backcolor=transparent] [backcolor=transparent]17[backcolor=transparent]:[backcolor=transparent]42[backcolor=transparent]:[backcolor=transparent]38.946[backcolor=transparent]][backcolor=transparent] [backcolor=transparent][[backcolor=transparent]INFO[backcolor=transparent]][backcolor=transparent] normal [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]this[backcolor=transparent][backcolor=transparent]is[backcolor=transparent] a info msg

·  
正则表达式:

[backcolor=transparent]\[[backcolor=transparent]([^]]+)][backcolor=transparent]\s\[[backcolor=transparent]([^[backcolor=transparent]\][backcolor=transparent]]+)][backcolor=transparent]\s[backcolor=transparent]([backcolor=transparent]\w[backcolor=transparent]+)[backcolor=transparent]\s[backcolor=transparent]-(.*)

·  
提取字段: 
time、level、loggerName和message。

 
Node.js日志示例2:

·  
日志示例:

[backcolor=transparent][[backcolor=transparent]2016[backcolor=transparent]-[backcolor=transparent]01[backcolor=transparent]-[backcolor=transparent]31[backcolor=transparent] [backcolor=transparent]12[backcolor=transparent]:[backcolor=transparent]02[backcolor=transparent]:[backcolor=transparent]25.844[backcolor=transparent]][backcolor=transparent] [backcolor=transparent][[backcolor=transparent]INFO[backcolor=transparent]][backcolor=transparent] access [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]42.120[backcolor=transparent].[backcolor=transparent]73.203[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]"GET /user/projects/ali_sls_log?ignoreError=true HTTP/1.1"[backcolor=transparent] [backcolor=transparent]304[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]"//

1. [backcolor=transparent]aliyun.com/"[backcolor=transparent] [backcolor=transparent]"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"

·  
正则表达式:

[backcolor=transparent]\[[backcolor=transparent]([^]]+)][backcolor=transparent]\s\[[backcolor=transparent]([backcolor=transparent]\w[backcolor=transparent]+)][backcolor=transparent]\s[backcolor=transparent]([backcolor=transparent]\w[backcolor=transparent]+)[backcolor=transparent]\s[backcolor=transparent]-[backcolor=transparent]\s[backcolor=transparent]([backcolor=transparent]\S[backcolor=transparent]+)[backcolor=transparent]\s[backcolor=transparent]-[backcolor=transparent]\s[backcolor=transparent]-[backcolor=transparent]\s[backcolor=transparent]"([^"[backcolor=transparent]]+)[backcolor=transparent]"\s(\d+)[^"[backcolor=transparent]]+([backcolor=transparent]"[^"[backcolor=transparent]]+)[backcolor=transparent]"\s"[backcolor=transparent]([^[backcolor=transparent]"]+).*

·  
提取字段: 
time、level、loggerName、ip、 request、status、referer和user_agent。

 

本文由职坐标整理发布,更多相关知识,请关注职坐标WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程