【问题标题】:How to import NodeJS winston-daily-rotate-file dependency?如何导入 NodeJS winston-daily-rotate-file 依赖项?
【发布时间】:2019-10-21 16:14:39
【问题描述】:

我可以通过使用require 来使用winston-daily-rotate-file 依赖项。

var DailyRotateFile = require('winston-daily-rotate-file');

但是当我尝试像下面这样导入时,它不起作用。如何解决?

import * as DailyRotateFile from 'winston-daily-rotate-file';

custom-logger.js

import { createLogger, format, transports } from 'winston';
import * as DailyRotateFile from 'winston-daily-rotate-file';
import fs from 'fs';
import path from 'path';

const env = process.env.NODE_ENV || 'development';
const logDir = 'log';
if(!fs.existsSync(logDir)) {
    fs.mkdirSync(logDir);
}

const dailyRotateFileTransport = new DailyRotateFile({
    filename: `${logDir}/%DATE%-results.log`,
    datePattern: 'YYYY-MM-DD',
    maxSize: '1k'
})

const logger = createLogger({
    level: env === 'development' ? 'debug' : 'info',
    format: format.combine(
        format.label({ label: path.basename(process.mainModule.filename)}),
        //format.colorize(),
        format.timestamp({
            format: 'YYYY-MM-DD HH:mm:ss'
        }),
        format.json()
    ),
    transports: [
        new transports.Console({
            level: 'info',
            format: format.combine(
                format.printf(
                    info => `${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
                )
            )
        }),
        dailyRotateFileTransport
    ]
});

module.exports = logger;

在运行应用程序时,出现以下错误

var dailyRotateFileTransport = new DailyRotateFile({
                               ^

TypeError: DailyRotateFile is not a constructor

【问题讨论】:

  • 您收到的确切错误是什么?
  • @Dzhuneyt 我有错误的内容以及自定义记录器文件。
  • 尝试用require('winston-daily-rotate-file')替换import * as DailyRotateFile from 'winston-daily-rotate-file';
  • @Avanthika 我之前做过。当我使用require 时它工作正常。我想使用导入。

标签: javascript node.js logging winston


【解决方案1】:

试试这个:

import WinstonDailyRotate from "winston-daily-rotate-file";

const daily_rotate_transport = new WinstonDailyRotate({
  filename: "./logs/app",
  datePattern: "YYYY-MM/DD[.log]",
});

【讨论】:

    【解决方案2】:
    import * as winston from 'winston';
    import 'winston-daily-rotate-file';
    import appRoot from 'app-root-path';
    
    
    const logger = winston.createLogger({
        transports: [
            new winston.transports.DailyRotateFile ({
                filename: 'application-%DATE%.log',
                dirname: `${appRoot}/logs/`,
                level: 'info',
                handleExceptions: true,
                colorize: true,
                json: false,
                zippedArchive: true,
                maxSize: '20m',
                maxFiles: '14d'        
            })
        ],
        exitOnError: false
    });
    
    logger.stream = {
        write: function(message, encoding) {
          logger.info(message);
        },
      };
    
    export default logger;
    

    这将记录器配置为每日轮换。

    【讨论】:

    【解决方案3】:

    试试这个

    import DailyRotateFile = require("winston-daily-rotate-file");

    【讨论】:

    • 你试过了吗?
    猜你喜欢
    • 2016-06-30
    • 2017-01-31
    • 2019-06-12
    • 1970-01-01
    • 2020-09-28
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多