nodejs日志文件在哪里?

时间:2012-05-30 11:17:32

标签: node.js

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

4 个答案:

答案 0 :(得分:99)

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

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

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

答案 1 :(得分:20)

forever可能对您有用。它将使用日志选项运行您的.js-File 24/7。以下是帮助文本中的两个片段:

  

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

  

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

答案 2 :(得分:1)

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

这将显示STDOUT和STDERR。

答案 3 :(得分:1)

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

然后在项目中创建一个名为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;

复制上面的代码后,创建一个名称日志,该日志与Winston或任何您想要的地方平行,并在该日志文件夹中创建文件app.log。返回config.js并在第5行“文件名:${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');