Gdzie jest plik dziennika nodejs?


112

Nie mogę znaleźć miejsca, w którym przechowywany jest plik dziennika nodejs. Ponieważ na moim serwerze węzłów mam „błąd segmentacji”, chcę przejrzeć plik dziennika, aby uzyskać dodatkowe informacje ...

Odpowiedzi:


121

Brak pliku dziennika. Każda „aplikacja” node.js jest oddzielną jednostką. Domyślnie rejestruje błędy w STDERR i wysyła do STDOUT. Możesz to zmienić, uruchamiając go z powłoki, aby zamiast tego zalogować się do pliku.

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

Alternatywnie (zalecane) możesz dodać rejestrowanie w aplikacji ręcznie lub za pomocą jednej z wielu bibliotek dzienników:


22

zawsze może być interesujące dla ciebie. Będzie on uruchamiał Twój plik .js 24/7 z opcjami logowania. Oto dwa fragmenty tekstu pomocy:

[Długotrwały proces] Proces wieczny będzie kontynuował wyprowadzanie komunikatów dziennika na konsolę. dawny. na zawsze -o out.log -e err.log my-script.js

i

[Daemon] Proces wieczny będzie działał jako demon, co spowoduje, że docelowy proces rozpocznie się w tle. Jest to niezwykle przydatne do zdalnego uruchamiania prostych skryptów node.js bez używania nohup. Zalecane jest uruchomienie zaczynające się od -o -l, & -e. dawny. na zawsze początek -l na zawsze.log -o out.log -e err.log my-daemon.js na zawsze zatrzymaj mój-daemon.js


4

Jeśli używasz dockera w swoim dev, możesz to zrobić w innej powłoce: docker attach running_node_app_container_name

To pokaże ci STDOUT i STDERR.


2

W przypadku pliku dziennika nodejs możesz użyć winston i morgan, a zamiast instrukcji console.log () użytkownika winston.log () lub innych metod winston. Aby pracować z winstonem i morganem, musisz je zainstalować za pomocą npm. Przykład: npm i -S winston npm i -S morgan

Następnie utwórz folder w swoim projekcie o nazwie winston, a następnie utwórz plik config.js w tym folderze i skopiuj poniższy kod.

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;

Po skopiowaniu powyższego kodu utwórz folder o nazwie logi równolegle do winston lub gdziekolwiek chcesz i utwórz plik app.log w tym folderze logów. Wróć do config.js i ustaw ścieżkę w piątym wierszu „nazwa_pliku: ${appRoot}/logs/app.log” do odpowiedniego utworzonego przez Ciebie pliku app.log.

Następnie przejdź do pliku index.js i umieść w nim następujący kod.

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');
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.