web-dev-qa-db-fra.com

Pm2 changer l'emplacement du fichier journal

J'ai quelques questions concernant pm2

  • Comment puis-je changer l'emplacement de server-error-0.log et server-out-0.log emplacement des fichiers de c:\users\user\.pm2\logs vers un autre lecteur, en raison d'une restriction d'accès au lecteur c du serveur.
  • Puis-je enregistrer l'erreur et les informations dans la base de données au lieu d'un fichier journal? Dois-je écrire un module séparé pour cela ou existe-t-il un moyen d'y parvenir?
8
Jeet

Comment puis-je changer l'emplacement de ... l'emplacement du fichier journal?

Pour modifier l'emplacement du fichier journal de pm2, il existe 2 solutions: définir le chemin du journal comme paramètre lors de l'exécution de la commande pm2 (-l, -o, -e), ou lancez pm2 à partir d'un fichier de configuration.

Pour la solution des paramètres, voici un exemple:

pm2 start app.js -o ./out.log -e ./err.log

Si vous ne souhaitez pas définir le chemin du journal à chaque exécution de pm2, vous pouvez générer un fichier de configuration, définissez error_file et out_file, et commencez pm2 à partir de là:

  1. Générez un fichier de configuration: pm2 ecosystem simple. Cela générerait un fichier ecosystem.config.js, avec le contenu suivant:

    module.exports = {
      apps : [{
        name   : "app1",
        script : "./app.js"
      }]
    }
    
  2. Définissez error_file (pour le journal des erreurs) et out_file (pour le journal d'informations) dans le fichier, par exemple:

    module.exports = {
      apps : [{
        name   : "app1",
        script : "./app.js",
        error_file : "./err.log",
        out_file : "./out.log"
      }]
    }
    
  3. Supprimez les processus existants dans pm2:

    pm2 delete <pid>
    

    Vous pouvez obtenir pid en faisant:

    pm2 status
    
  4. Démarrez le processus à partir du fichier de configuration:

    pm2 start ecosystem.config.js
    

De cette façon, les journaux sont enregistrés dans ./err.log et ./out.log.

Veuillez vous référer au document pour des informations détaillées.

Puis-je enregistrer l'erreur et les informations dans la base de données au lieu d'un fichier journal?

Je n'ai trouvé aucune ressource dans le document officiel. Il semble que vous deviez écrire du code et enregistrer le journal dans la base de données vous-même.

16
shaochuancs

Je voulais juste ajouter à la réponse @shaochuancs, qu'avant de faire l'étape 3, assurez-vous de supprimer l'ancien processus. Si vous ne supprimez pas l'ancien processus, les modifications que vous avez apportées à votre fichier de processus ne prendront pas effet après le démarrage de votre application.

Vous devrez exécuter cette commande avant d'effectuer l'étape 3 ci-dessus:

pm2 delete <pid>
13
user8042173

Si vous souhaitez écrire à la fois un journal des erreurs et un journal de la console dans le même fichier, cela peut être un cas d'utilisation, comme je suis intéressé par la connexion de OneFile pour pousser vers ELK.vous pouvez utiliser -l

-l --log [path]              specify filepath to output both out and error logs

Voici l'exemple

pm2 start server.js -l /app/logs/server.log

Après avoir effectué des modifications, n'oubliez pas d'exécuter cette commande comme indiqué dans la réponse.

pm2 delete <pid>
0
Adiii

Si vous souhaitez que pm2 au démarrage avec un chemin de journaux modifié:

  1. pm2 supprimer tout
  2. pm2 start écosyst.js
  3. pm2 enregistrer
  4. démarrage pm2
0
Ivan Vovk