【问题标题】:Where is nodejs log file?nodejs日志文件在哪里?
【发布时间】:2012-05-30 11:17:32
【问题描述】:

我找不到存储 nodejs 日志文件的地方。 因为在我的节点服务器中我有“分段错误”,我想查看日志文件以获取更多信息......

【问题讨论】:

    标签: node.js


    【解决方案1】:

    没有日志文件。每个 node.js“应用程序”都是一个单独的实体。默认情况下,它会将错误记录到 STDERR 并输出到 STDOUT。您可以在从 shell 运行它时更改它以记录到文件。

    node my_app.js > my_app_log.log 2> my_app_err.log
    

    或者(推荐),您可以手动或使用众多日志库之一在应用程序中添加日志记录:

    【讨论】:

    【解决方案2】:

    forever 您可能会感兴趣。它将运行带有日志记录选项的 .js-File 24/7。以下是帮助文本中的两个 sn-ps:

    [长时间运行的过程] 永远的进程将继续运行,将日志消息输出到控制台。 前任。永远 -o out.log -e err.log my-script.js

    [守护进程] 永远的进程将作为守护进程运行,这将使目标进程启动 在后台。这对于远程启动简单的 node.js 脚本非常有用 不使用 nohup。建议使用 -o -l, & -e 启动。 前任。永远开始 -l forever.log -o out.log -e err.log my-daemon.js 永远停止 my-daemon.js

    【讨论】:

      【解决方案3】:

      如果您在开发中使用 docker,您可以在另一个 shell 中执行此操作: docker attach running_node_app_container_name

      这将显示 STDOUT 和 STDERR。

      【讨论】:

        【解决方案4】:

        对于 nodejs 日志文件,您可以使用 winston 和 morgan 代替您的 console.log() 语句,用户 winston.log() 或其他 winston 方法来记录。 要使用 winston 和 morgan,您需要使用 npm 安装它们。例子: npm i -S 温斯顿 npm i -S 摩根

        然后在您的项目中创建一个名为 winston 的文件夹,然后在该文件夹中创建一个 config.js 并复制下面给出的代码。

        const appRoot = require('app-root-path');
        const winston = require('winston');
        
        // define the custom settings for each transport (file, console)
        const options = {
          file: {
            level: 'info',
            filename: `${appRoot}/logs/app.log`,
            handleExceptions: true,
            json: true,
            maxsize: 5242880, // 5MB
            maxFiles: 5,
            colorize: false,
          },
          console: {
            level: 'debug',
            handleExceptions: true,
            json: false,
            colorize: true,
          },
        };
        
        // instantiate a new Winston Logger with the settings defined above
        let logger;
        if (process.env.logging === 'off') {
          logger = winston.createLogger({
            transports: [
              new winston.transports.File(options.file),
            ],
            exitOnError: false, // do not exit on handled exceptions
          });
        } else {
          logger = winston.createLogger({
            transports: [
              new winston.transports.File(options.file),
              new winston.transports.Console(options.console),
            ],
            exitOnError: false, // do not exit on handled exceptions
          });
        }
        
        // create a stream object with a 'write' function that will be used by `morgan`
        logger.stream = {
          write(message) {
            logger.info(message);
          },
        };
        
        module.exports = logger;
        

        复制上述代码后,创建一个名为 logs 的文件夹,与 winston 或任何您想要的位置平行,并在该日志文件夹中创建一个文件 app.log。回到config.js,在第5行设置路径“filename:${appRoot}/logs/app.log, " 到您创建的相应 app.log。

        在此之后转到您的 index.js 并在其中包含以下代码。

        const morgan = require('morgan');
        const winston = require('./winston/config');
        const express = require('express');
        const app = express();
        app.use(morgan('combined', { stream: winston.stream }));
        
        winston.info('You have successfully started working with winston and morgan');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-03
          • 2019-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-03
          • 2014-03-19
          相关资源
          最近更新 更多