【问题标题】:Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed with Winston错误 [ERR_STREAM_DESTROYED]:使用 Winston 销毁流后无法调用 write
【发布时间】:2020-12-11 17:00:45
【问题描述】:

如果我使用 winston-daily-rotate-file,我会收到有关 winston 日志记录的错误。 当我使用 webpack 构建我的应用程序时,没有错误,但是当我执行下面的构建时,错误即将到来(堆栈跟踪):

/app/web-app/server/node_modules/winston/lib/winston/logger.js:307
      throw ex;
      ^

Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
    at doWrite (_stream_writable.js:399:19)
    at writeOrBuffer (_stream_writable.js:387:5)
    at WriteStream.Writable.write (_stream_writable.js:318:11)
    at Object.<anonymous> (/mnt/e/workspace/codebase/hermes_dashboard/app/web-app/server/node_modules/file-stream-rotator/FileStreamRotator.js:616:26)
    at DailyRotateFile.log (/mnt/e/workspace/codebase/hermes_dashboard/app/web-app/server/node_modules/winston-daily-rotate-file/daily-rotate-file.js:157:20)
    at DailyRotateFile._write (/mnt/e/workspace/codebase/hermes_dashboard/app/web-app/server/node_modules/winston-transport/index.js:82:19)
    at doWrite (/mnt/e/workspace/codebase/hermes_dashboard/app/web-app/server/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:428:64)
    at writeOrBuffer (/mnt/e/workspace/codebase/hermes_dashboard/app/web-app/server/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:417:5)
    at DailyRotateFile.Writable.write (/mnt/e/workspace/codebase/hermes_dashboard/app/web-app/server/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:334:11)
    at DerivedLogger.ondata (/mnt/e/workspace/codebase/hermes_dashboard/app/web-app/server/node_modules/winston/node_modules/readable-stream/lib/_stream_readable.js:681:20)
    at DerivedLogger.emit (events.js:327:22)

我的温斯顿配置是:

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

var options = {
    file: {
        zippedArchive: true,
        prettyPrint: true,
        json: false,
        filename: `/app/web-app/server/logs/server_logs/server.log`,
        datePattern: '.yyyy-MM-dd',
        handleExceptions: true,
        maxsize: '10m', // 10MB
        maxFiles: 5,
        colorize: false,
    },
    console: {
        level: 'debug',
        prettyPrint: true,
        handleExceptions: true,
        json: false,
        colorize: true,
    },
};

var logger = new winston.createLogger({
    transports: [
        // new winston.transports.DailyRotateFile(options.file),
        new DailyRotateFile(options.file),
        new winston.transports.Console(options.console),
    ],
    exitOnError: false, // do not exit on handled exceptions
});

logger.stream = {
    write: message => {
        logger.info(message);
    },
};

module.exports = logger;

【问题讨论】:

    标签: node.js webpack winston


    【解决方案1】:

    我在 aws elasticbeanstalk 上发生了完全相同的错误、行号和所有内容。

    它在本地工作,但是当它进入 aws 时,由于节点以用户“webapp”的身份运行,所以发生了错误。看起来该用户没有将文件写入 /var/log 的权限,这似乎很奇怪。所以我将其更改为登录到 /tmp 并且错误消失了。注意:请确保日志文件归 webapp(或运行节点应用程序的任何用户)所有,否则错误将持续存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      相关资源
      最近更新 更多