1

ブログで多くのログを見てきましたが、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 だけに情報ログを記録したいのですが、実行できません。助けてくれる人はいますか?また、level:30 ではなく level: "info" に変更する方法を教えてください。

4

2 に答える 2

0

私は同じ問題に遭遇し、最終的に次のような2つの変数を作成しました:

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');

その後、ログは別のログ ファイルに保存されます。

于 2018-03-16T03:19:03.063 に答える