¿Dónde está el archivo de registro de nodejs?


112

No puedo encontrar un lugar donde se almacene el archivo de registro de nodejs. Debido a que en mi servidor de nodo tengo "Fallo de segmentación", quiero ver el archivo de registro para obtener información adicional ...

Respuestas:


121

No hay archivo de registro. Cada "aplicación" de node.js es una entidad separada. De forma predeterminada, registrará los errores en STDERR y los enviará a STDOUT. Puede cambiar eso cuando lo ejecuta desde su shell para iniciar sesión en un archivo.

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

Alternativamente (recomendado), puede agregar el registro dentro de su aplicación ya sea manualmente o con una de las muchas bibliotecas de registro:


22

para siempre puede ser de tu interés. Ejecutará su .js-File 24/7 con opciones de registro. Aquí hay dos fragmentos del texto de ayuda:

[Proceso de ejecución prolongada] El proceso para siempre continuará ejecutándose y enviando mensajes de registro a la consola. ex. para siempre -o out.log -e err.log my-script.js

y

[Daemon] El proceso forever se ejecutará como un daemon que hará que el proceso de destino se inicie en segundo plano. Esto es extremadamente útil para iniciar de forma remota scripts simples de node.js sin usar nohup. Se recomienda ejecutar start with -o -l, & -e. ex. forever start -l forever.log -o out.log -e err.log my-daemon.js para siempre detener my-daemon.js


4

Si usa docker en su desarrollador, puede hacer esto en otro shell: docker adjuntar running_node_app_container_name

Eso le mostrará STDOUT y STDERR.


2

Para el archivo de registro de nodejs, puede usar winston y morgan y en lugar de su declaración de usuario de console.log () winston.log () u otros métodos de winston para iniciar sesión. Para trabajar con winston y morgan, debe instalarlos usando npm. Ejemplo: npm i -S winston npm i -S morgan

Luego, cree una carpeta en su proyecto con el nombre winston y luego cree un config.js en esa carpeta y copie este código que se proporciona a continuación.

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;

Después de copiar el código anterior, cree una carpeta con registros de nombres paralelos a winston o donde desee y cree un archivo app.log en esa carpeta de registros. Regrese a config.js y establezca la ruta en la quinta línea "nombre de archivo: ${appRoot}/logs/app.log" al respectivo app.log creado por usted.

Después de esto, vaya a su index.js e incluya el siguiente código en él.

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');
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.