【问题标题】:log4js-node in nodejs not logging to filenodejs中的log4js-node没有记录到文件
【发布时间】:2015-01-12 11:41:55
【问题描述】:

不是节点专家,这是我第一次使用log4js-node。

我正在尝试在运行 Express 的 nodejs 服务器上使用 log4js 将我的错误日志和任何控制台日志写入 log_file.log 文件。这是我的配置文件:`

{
  "replaceConsole": true,
  "appenders": [
  {
    "type": "file",
    "filename":"log_file.log",
    "maxLogSize":20480,
    "backups": 3,
    "category":"relative-logger"
  },
  {
  "type":"logLevelFilter",
  "level":"ERROR",
  "appender":{
    "type":"file",
    "filename":"log_file.log"
    }
  },
  {

    "appender": {
      "type": "smtp",
      "recipients": "myemail@gmail.com",
      "sender": "myemailadd@gmail.com",
      "sendInterval": 60,
      "transport": "SMTP",
      "SMTP": {
        "host": "localhost",
        "port": 25
      }
    }
  }]
}`

这就是我在 app.js 文件中要求应用程序的方式:

var log4js = require("log4js");
log4js.configure("log_config.json")
logger = log4js.getLogger();

我正在用这个向 log4js 发送手动错误(我可以让它很好地登录到控制台,只是无法写入 log_file):

logger.error('A mandrill error occurred: ' + e.name + ' - ' + e.message);

我希望 jog4js 能够捕获应用程序的正常错误消息。

我如何让 log4js 登录到 log_file.log 他们给我发送该日志的电子邮件?我已经安装了 nodemailer 0.7,仅供参考,来处理 smtp。

【问题讨论】:

  • 正如 Allenzzxd 建议的那样,删除“类别”。无论如何,这为我解决了这个问题。如果我没记错的话,该类别是用于当您想为不同的场合选择不同的日志记录机制时,您可以执行 log4js.getLogger().log() 或类似的操作。

标签: javascript express error-handling log4js-node


【解决方案1】:

也许您可以在文件附加程序中删除 "category":"relative-logger"

【讨论】:

  • 请通过编辑您的答案详细说明为什么这可能会解决问题。
  • 感谢您的提示。我遇到了同样的问题,我尝试删除“类别”,它为我解决了同样的问题。
【解决方案2】:

是的,删除 "category":"relative-logger" 它以某种方式阻止数据传输到您的日志文件中。或者尝试这样的操作:

// Setup Logging
log4js.configure({
    appenders: [
        { type: 'console' },
        { type: 'file', filename: '.\\logs\\PesaFastaArchiveData.log' }
    ]
});

路径当然是windows路径。

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 2017-11-22
    • 1970-01-01
    • 2021-08-13
    • 2019-12-06
    • 2012-03-16
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多