Domanda interessante. Osservando il codice sorgente per il trasporto di file, sembra che la directory, se non specificata, sia derivata dal parametro filename stesso. Sembra suggerire di utilizzare un percorso assoluto o un percorso relativo con una directory specificata esplicitamente.
Questa riga indica il percorso assoluto.
var fullname = path.join(self.dirname, target);
self.dirname è messa a punto qui:
this.dirname = options.dirname || path.dirname(options.filename);
Quindi la domanda è che se options.filename non include una directory, che cosa path.dirname ritorno?
Io in realtà non lo so, ma ci sono due possibilità ho il sospetto:
- attuale directory di lavoro del processo
- La radice del file system, perché se path.dirname prende ciò che resta del ultima /, allora è
undefined
e undefined
+ '/test.log' è '/test.log'
ci sono due passi si può prendere:
- Controllare la directory corrente e il root del file system per vedere quale è. (In altre parole, verificare le teorie)
- Specificare la directory in modo esplicito (probabilmente una buona idea in ogni caso)
https://github.com/flatiron/winston/blob/master/lib/winston/transports/file.js
Probabilmente la directory di lavoro corrente ... – Brad