单独的信息和错误日志bunyan

时间:2017-09-03 19:04:07

标签: javascript node.js logging bunyan

正如我在博客中看到许多日志,我发现bunyan适合记录,但是它存在问题,它无法根据其级别登录到文件。

以下是我关注的代码结构

const RotatingFileStream = require('bunyan-rotating-file-stream');
const bunyan = require('bunyan');

    var log = bunyan.createLogger({
          name: 'ShotPitch',


          streams: [{
            name: 'info',
            level: 'info',
            stream: new RotatingFileStream({
              path: 'info.%d-%b-%y.log',
              period: '1d', // daily rotation
              totalFiles: 10, // keep 10 back copies
              rotateExisting: true, // Give ourselves a clean file when we start up, based on period
              threshold: '10m', // Rotate log files larger than 10 megabytes
              totalSize: '20m', // Don't keep more than 20mb of archived log files
              gzip: true // Compress the archive log files to save space
            })
          }, {
            name: 'error',
            level: 'error',
            stream: new RotatingFileStream({
              path: 'error.%d-%b-%y.log',
              period: '1d', // daily rotation
              totalFiles: 10, // keep 10 back copies
              rotateExisting: true, // Give ourselves a clean file when we start up, based on period
              threshold: '10m', // Rotate log files larger than 10 megabytes
              totalSize: '20m', // Don't keep more than 20mb of archived log files
              gzip: true // Compress the archive log files to save space
            })
          }] 
        });

 log.info('Hello World');
 log.error('Hello World error log');

o / p:info.log:

{“name”:“ShotPitch”,“pid”:7621,“level”:30,“msg”:“Hello World”,“time”:“2017-09-03T18:29:04.181Z”, “v”:0}

{“name”:“ShotPitch”,“pid”:7621,“level”:50,“msg”:“Hello World”,“time”:“2017-09-03T18:29:04.181Z”, “v”:0}

o / p:error.log:

{“name”:“ShotPitch”,“pid”:7621,“level”:50,“msg”:“Hello World”,“time”:“2017-09-03T18:29:04.181Z”, “v”:0}

结论:

info.log显示信息和错误日志

error.log仅显示错误日志

我只想在info.log中使用信息日志但无法做到。有人可以提供帮助吗?另外如果告诉我如何更改级别:“信息”而不是级别:30

2 个答案:

答案 0 :(得分:0)

配置bunyan时需要指定轮换文件流的日志级别。

默认情况下,日志输出是stdout和" info"水平。

  

将记录器实例(或其中一个流)设置为特定级别意味着将记录该级别及更高级别的所有日志记录。例如。记录器设置为水平"信息"将在级别信息及以上记录记录(警告,错误,致命)。

错误日志也因此被收集到信息日志中。

答案 1 :(得分:0)

我遇到了同样的问题,最后我创建了两个变量,如:

var debugLog = bunyan.createLogger({
  name: 'general',
  streams: [
    {
      level: 'debug',
      path: './debug.log'
    }]
});

var errLog = bunyan.createLogger({
  name: 'general',
  streams: [
    {
      level: 'error',
      path: './error.log'
    }]
});

debugLog.info('hello world');
errLog.error('error');

然后日志将在不同的日志文件中。