Waar is het logbestand van nodejs?

Ik kan geen plaats vinden waar het logbestand van nodejs is opgeslagen.
Omdat ik in mijn node-server “Segmentatiefout” heb, wil ik het logbestand bekijken voor aanvullende informatie…


Antwoord 1, autoriteit 100%

Er is geen logbestand. Elke node.js “app” is een aparte entiteit. Standaard registreert het fouten naar STDERR en voert het uit naar STDOUT. Je kunt dat veranderen wanneer je het vanuit je shell uitvoert om in plaats daarvan in een bestand te loggen.

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

Als alternatief (aanbevolen) kunt u logboekregistratie in uw toepassing handmatig of met een van de vele logbibliotheken toevoegen:


Antwoord 2, autoriteit 18%

foreverkan interessant voor je zijn. Het zal uw .js-bestand 24/7 uitvoeren met logboekopties. Hier zijn twee fragmenten uit de helptekst:

[Langlopend proces]
Het forever-proces zal doorgaan met het uitvoeren van logberichten naar de console.
ex. forever -o out.log -e err.log mijn-script.js

en

[Daemon]
Het forever-proces zal als een daemon worden uitgevoerd, waardoor het doelproces wordt gestart
op de achtergrond. Dit is uitermate handig voor het op afstand starten van eenvoudige node.js-scripts
zonder nohup te gebruiken. Het wordt aanbevolen om te starten met -o -l, & -e.
ex. forever start -l forever.log -o out.log -e err.log mijn-daemon.js
stop voor altijd my-daemon.js


Antwoord 3, autoriteit 6%

Als je docker in je dev gebruikt, kun je dit in een andere shell doen:
docker attach running_node_app_container_name

Dat laat je STDOUT en STDERR zien.


Antwoord 4, autoriteit 2%

Voor het nodejs-logbestand kunt u winston en morgan gebruiken en in plaats van uw console.log()-statement gebruiker winston.log() of andere winston-methoden om te loggen.
Om met winston en morgan te werken, moet je ze installeren met npm. Voorbeeld:
npm i -S winston
npm i -S Morgan

Maak vervolgens een map in uw project met de naam winston en maak vervolgens een config.js in die map en kopieer deze onderstaande code.

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;

Maak na het kopiëren van de bovenstaande code een map met naamlogs parallel aan winston of waar je maar wilt en maak een bestand app.log in die logsmap. Ga terug naar config.js en stel het pad in op de 5e regel “filename: ${appRoot}/logs/app.log,
” naar de respectieve app.log die door u is gemaakt.

Ga hierna naar uw index.js en voeg de volgende code erin toe.

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');

Other episodes