Skip to content

Bonus

Cette démonstration vous donne aussi un exemple de script qui peut être utilisé en tant pipe unix.

shell
node src/app.js | log-p http://localhost:8000

Voici le code source de ce script :

js
#!/usr/bin/env node
const stdin = process.openStdin()
import {LogForwarder} from './utils/forwarder.js'

const [,, url] = process.argv

const logForwarder = new LogForwarder({
  url,
  pid: ""
});

stdin.on('data',  (chunk)  => {
  logForwarder.info(chunk.toString().trim())
})

Info

Cette approche n'utilise pas le spawn Node.js mais est intéressante à étudier pour également transférer des logs vers un serveur.

Question ?

Quelle est l'instruction qui permet de récupérer les informations envoyées par notre application Node.js ?

Click me
ts
#!/usr/bin/env node
const stdin = process.openStdin() 
import {LogForwarder} from './utils/forwarder.js'

process.openStdin() ouvre le flux d'entrée standard de Node.js et maintient le processus en vie tant que le flux est ouvert.

Attention !

Cette technique a aussi une limite ! À vous de la trouver 😉.

Click me

La limite de cette technique est que le Pipe Unix ne redirige que la sortie stdout et pas stderr. Il faut donc utiliser un autre moyen pour rediriger les erreurs afin de les transférer vers le serveur de log.

Sources