开发者社区 问答 正文

如何使用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
    日志示例:
    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

  • 正则表达式:
    1. [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:

  • 日志示例:
    1. [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] "http://
    2. [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"

  • 正则表达式:
    1. [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。

展开
收起
轩墨 2017-10-20 16:11:39 2548 分享 版权
0 条回答
写回答
取消 提交回答