Я не можу знайти місце, де зберігається файл журналу nodejs. Оскільки на моєму сервері вузлів у мене "помилка сегментації", я хочу переглянути файл журналу для отримання додаткової інформації ...
Я не можу знайти місце, де зберігається файл журналу nodejs. Оскільки на моєму сервері вузлів у мене "помилка сегментації", я хочу переглянути файл журналу для отримання додаткової інформації ...
Відповіді:
Файлу журналу немає. Кожен додаток node.js - це окрема сутність. За замовчуванням він запише помилки в STDERR і виведе в STDOUT. Ви можете змінити це, коли запустите його зі своєї оболонки, щоб замість цього увійти у файл.
node my_app.js > my_app_log.log 2> my_app_err.log
Крім того (рекомендується), ви можете додати журнал всередині програми або вручну, або з однією з багатьох бібліотек журналів:
назавжди може зацікавити вас. Він запустить ваш .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
Якщо ви використовуєте docker у своєму розробнику, ви можете зробити це в іншій оболонці: docker приєднати run_node_app_container_name
Це покаже вам STDOUT та STDERR.
Для файлу журналу 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');