Je n'arrive pas à trouver un endroit où le fichier journal de nodejs est stocké. Parce que dans mon serveur node j'ai un "Segmentation fault", je veux regarder le fichier log pour des informations supplémentaires...
Réponses
Trop de publicités?Il n'y a pas de fichier journal. Chaque "application" node.js est une entité distincte. Par défaut, les erreurs sont enregistrées sur STDERR et les sorties sur STDOUT. Vous pouvez changer cela lorsque vous l'exécutez à partir de votre shell pour enregistrer dans un fichier à la place.
node my_app.js > my_app_log.log 2> my_app_err.log
Alternativement (recommandé), vous pouvez ajouter la journalisation dans votre application, soit manuellement, soit avec l'une des nombreuses bibliothèques de journalisation :
pour toujours pourrait vous intéresser. Il exécutera votre fichier .js 24/7 avec des options de journalisation. Voici deux extraits du texte d'aide :
[Processus permanent] Le processus forever continuera à s'exécuter en produisant des messages de journal dans la console. ex. forever -o out.log -e err.log my-script.js
et
[Daemon] Le processus forever s'exécutera comme un démon qui fera démarrer le processus cible en arrière-plan. en arrière-plan. C'est extrêmement utile pour démarrer à distance de simples scripts de node.js sans utiliser nohup. Il est recommandé d'exécuter start avec -o -l, & -e. ex. forever start -l forever.log -o out.log -e err.log my-daemon.js forever stop my-daemon.js
Pour le fichier journal de nodejs, vous pouvez utiliser winston et morgan et à la place de votre déclaration console.log() utiliser winston.log() ou d'autres méthodes winston pour enregistrer. Pour travailler avec winston et morgan, vous devez les installer en utilisant npm. Exemple : npm i -S winston npm i -S morgan
Ensuite, créez un dossier dans votre projet avec le nom winston et ensuite créez un config.js dans ce dossier et copiez ce code donné ci-dessous.
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;
Après avoir copié le code ci-dessus, créez un dossier avec le nom logs parallèle à winston ou où vous voulez et créez un fichier app.log dans ce dossier logs. Retournez dans config.js et définissez le chemin dans la 5ème ligne "filename : ${appRoot}/logs/app.log
, " dans le fichier app.log que vous avez créé.
Ensuite, allez dans votre index.js et incluez-y le code suivant.
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');