Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将文件名传递给winston logger?_Node.js_Winston - Fatal编程技术网

Node.js 如何将文件名传递给winston logger?

Node.js 如何将文件名传递给winston logger?,node.js,winston,Node.js,Winston,我让温斯顿当了一名伐木工人,效果很好。 但是,我有几个进程要记录到不同的文件中。如何将文件名传递到记录器实例 我用这个做我的积木 'use strict'; const { createLogger, format, transports } = require('winston'); require('winston-daily-rotate-file'); const fs = require('fs'); const path = require('path'); const logDir

我让温斯顿当了一名伐木工人,效果很好。
但是,我有几个进程要记录到不同的文件中。如何将文件名传递到记录器实例

我用这个做我的积木

'use strict';
const { createLogger, format, transports } = require('winston');
require('winston-daily-rotate-file');
const fs = require('fs');
const path = require('path');
const logDir = '/codeforge/log';

const dailyRotateFileTransport = new transports.DailyRotateFile({
  filename: `${logDir}/%DATE%-engine.log`,
  maxSize: "1g",
  maxDays: "3d",
  zippedArchive: true,
  datePattern: 'YYYY-MM-DD'
});

const logger = createLogger({
  // change level if in dev environment versus production
  level: 'debug', 
  maxsize: '500m',
  format: format.combine(
    format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    // for the log file
    format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
  ),
  transports: [
    new transports.Console({
      level: 'info',
      format: format.combine(
        format.colorize(),
        format.printf(
          info => `${info.message}`
        )
      )
    }),
    dailyRotateFileTransport
  ]
});

module.exports = logger
我想传入一个文件名来替换“-engine”部分,为它创建或附加一个日志文件


谢谢你的提示。

让你的记录器变成你喜欢的函数

const log = require('logger')('myfilename');
log.info('happy logging')
代码:


哇,非常感谢!不知道我能把这个包起来。工作得很好!如何从“logger”导入logger?这段代码似乎为每个调用模块创建了一个单独的文件。如何修改此代码以使用一个循环的每日文件,该文件将来自所有调用模块的日志合并到一起?最初的问题是:“我有几个进程,我想记录到不同的文件中。”对于你的情况,我会像我想的那样使用模块。(即,不要将此代码放在单独的模块中)
'use strict';
const { createLogger, format, transports } = require('winston');
require('winston-daily-rotate-file');
const fs = require('fs');
const path = require('path');
const logDir = '/codeforge/log';

const dailyRotateFileTransport = filename => new transports.DailyRotateFile({
  filename: `${logDir}/%DATE%-${filename}.log`,
  maxSize: "1g",
  maxDays: "3d",
  zippedArchive: true,
  datePattern: 'YYYY-MM-DD'
});

const logger = function(filename){
  return createLogger({
    // change level if in dev environment versus production
    level: 'debug', 
    maxsize: '500m',
    format: format.combine(
      format.timestamp({
        format: 'YYYY-MM-DD HH:mm:ss'
      }),
      // for the log file
      format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
    ),
    transports: [
      new transports.Console({
        level: 'info',
        format: format.combine(
          format.colorize(),
          format.printf(
            info => `${info.message}`
          )
        )
      }),
      
      dailyRotateFileTransport(filename)
    ]
  });
}

module.exports = logger // is now a function