Вопрос по node.js – Где находится файл журнала nodejs?

78

Я не могу найти место, где хранится файл журнала nodejs. Поскольку на моем сервере узлов у меня "Ошибка сегментации", я хочу просмотреть файл журнала для получения дополнительной информации ...

Ваш Ответ

4   ответа
1

вы можете сделать это в другой оболочке: присоединение к док-станции running_node_app_container_name

Это покажет вам STDOUT и STDERR.

95

app & quot; это отдельная сущность. По умолчанию он регистрирует ошибки в STDERR и выводит в STDOUT. Вы можете изменить это, запустив его из своей оболочки, чтобы вместо этого войти в файл.

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

В качестве альтернативы (рекомендуется) вы можете добавить ведение журналов внутри приложения вручную или с помощью одной из множества библиотек журналов:

winston log4js ...
20

навсегда может быть интересным для вас. Он запустит ваш .js-файл 24/7 с опциями регистрации. Вот два фрагмента из текста справки:

[Long Running Process] The forever process will continue to run outputting log messages to the console. ex. forever -o out.log -e err.log my-script.js

а также

[Daemon] The forever process will run as a daemon which will make the target process start in the background. This is extremely useful for remote starting simple node.js scripts without using nohup. It is recommended to run start with -o -l, & -e. ex. forever start -l forever.log -o out.log -e err.log my-daemon.js forever stop my-daemon.js

0

место вашего оператора console.log () пользователь winston.log () или другие методы winston для входа. Для работы с winston и morgan вам необходимо установить их, используя npm. Пример: нпм я -S Уинстон нпм я -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;

После копирования приведенного выше кода создайте папку с журналами имен, параллельными winston или где угодно, и создайте файл app.log в этой папке журналов. Вернитесь в config.js и установите путь в 5-й строке & quot; имя файла:${appRoot}/logs/app.log, " to the respective app.log created by you.

После этого перейдите в ваш 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');

Похожие вопросы