Де файл журналу nodejs?


112

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

Відповіді:


121

Файлу журналу немає. Кожен додаток node.js - це окрема сутність. За замовчуванням він запише помилки в STDERR і виведе в STDOUT. Ви можете змінити це, коли запустите його зі своєї оболонки, щоб замість цього увійти у файл.

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

Крім того (рекомендується), ви можете додати журнал всередині програми або вручну, або з однією з багатьох бібліотек журналів:


22

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

[Long Running Process] Процес назавжди продовжуватиме виводити повідомлення з журналу на консоль. колишній назавжди -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


4

Якщо ви використовуєте docker у своєму розробнику, ви можете зробити це в іншій оболонці: docker приєднати run_node_app_container_name

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


2

Для файлу журналу nodejs ви можете використовувати winston та morgan, а замість вашого користувача console.log () оператора winston.log () або інших методів winston для входу в систему. Для роботи з Winston та Morgan вам потрібно встановити їх за допомогою npm. Приклад: npm i -S winston 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');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.