web-dev-qa-db-fra.com

Créer un journal pm2 sur la console

J'exécute un serveur Web de noeud en utilisant pm2. Puisque pm2 génère un autre processus et redirige stdout et stderr vers des fichiers, je dois chercher ailleurs les journaux. Idéalement, j'aimerais que le processus de noeud soit sorti dans la même fenêtre de console à partir de laquelle j'ai exécuté pm2. Sinon, je me contenterais de pm2 exécuter le processus de noeud avec une fenêtre de console active et d'écrire stdout et stderr du processus de noeud dans cette fenêtre de console. Comment cela peut il etre accompli? Je suis sur une machine Windows.

21
Fragilerus

Je pense que vous pouvez également voir les stdout et stderr d'un processus en cours d'exécution démonisé par la commande pm2 logs ou pm2 logs [app-name].

46
Timothy Vann

J'ai trouvé la réponse (leur documentation n'est pas terrible), j'ai juste ajouté le --no-daemon flag, semble l'avoir fait. Cependant, il semble qu'il se connecte toujours au fichier (même lorsque vous utilisez l'indicateur) lors de la première disponibilité. Une fois le processus redémarré (je surveille les modifications de fichiers), il commence à se déconnecter de la console

10
Fragilerus

par programme, vous pouvez faire quelque chose comme ceci:

const pm2 = require('pm2')

pm2.connect(function(err) {
  if (err) {
    console.error(err);
    process.exit(2);
  }
  pm2.start([
    {
      script             : "server.js",
    },
  ]
    , function(err, proc) {
      if(err) {
        throw err
      }
    });

  pm2.launchBus((err, bus) => {
    // this part is important
    bus.on('log:out', data => {
      console.log(data.data);
    });
    bus.on('log:err', data => {
      console.log(data.data);
    });
  });
})
0
kharandziuk