Não consigo encontrar um lugar onde o arquivo de log nodejs está armazenado. Porque no meu servidor de nó eu tenho "Falha de segmentação", eu quero olhar o arquivo de log para informações adicionais ...
Não consigo encontrar um lugar onde o arquivo de log nodejs está armazenado. Porque no meu servidor de nó eu tenho "Falha de segmentação", eu quero olhar o arquivo de log para informações adicionais ...
Respostas:
Não há arquivo de log. Cada "app" node.js é uma entidade separada. Por padrão, ele registrará erros em STDERR e produzirá em STDOUT. Você pode alterar isso ao executá-lo em seu shell para registrar em um arquivo.
node my_app.js > my_app_log.log 2> my_app_err.log
Como alternativa (recomendado), você pode adicionar o registro dentro de seu aplicativo manualmente ou com uma das muitas bibliotecas de registro:
para sempre pode ser do seu interesse. Ele executará seu arquivo .js 24 horas por dia, 7 dias por semana, com opções de registro. Aqui estão dois trechos do texto de ajuda:
[Processo de longa duração] O processo permanente continuará a executar as mensagens de log de saída para o console. ex. para sempre -o out.log -e err.log my-script.js
e
[Daemon] O processo para sempre será executado como um daemon, que fará com que o processo de destino seja iniciado em segundo plano. Isso é extremamente útil para iniciar scripts node.js simples remotamente sem usar o nohup. Recomenda-se executar start com -o -l, & -e. ex. para sempre iniciar -l para sempre.log -o out.log -e err.log my-daemon.js para sempre parar meu-daemon.js
Se você usar docker em seu dev, você pode fazer isso em outro shell: docker attach running_node_app_container_name
Isso mostrará STDOUT e STDERR.
Para o arquivo de log nodejs, você pode usar winston e morgan e no lugar de seu usuário de instrução console.log () winston.log () ou outros métodos winston para registrar. Para trabalhar com winston e Morgan, você precisa instalá-los usando o npm. Exemplo: npm i -S winston npm i -S morgan
Em seguida, crie uma pasta em seu projeto com o nome winston e, em seguida, crie um config.js nessa pasta e copie o código fornecido a seguir.
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;
Após copiar o código acima, faça uma pasta com os logs de nomes paralelos ao winston ou onde quiser e crie um arquivo app.log nessa pasta de logs. Volte para config.js e defina o caminho na 5ª linha "filename ${appRoot}/logs/app.log:," para o respectivo app.log criado por você.
Depois disso, vá para o seu index.js e inclua o código a seguir nele.
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');