2015-07-13 8 views
5

Attualmente sto costruendo un'applicazione in Electron che al momento utilizza iojs 2.3.1, e quello che mi piacerebbe fare è produrre tutto e tutto ciò che viene stampato in la console degli strumenti di sviluppo su file.iojs/electron - Uscita tutto in console su file

Nelle versioni precedenti del nodo utilizzato per il piping da stdout/stderr, questo non è più possibile e non riesco a trovare una soluzione che funzioni e non implichi il cambio di grandi quantità di codice.

Qualcuno ha una soluzione di lavoro per questo? Grazie!

risposta

9

Il risultato finale di lavoro è stato l'utilizzo di Winston con una rapida modifica per farlo funzionare con Electr sopra. https://github.com/dustinblackman/winston

EDIT:

Poiché questa risposta è ancora in fase di visto, questa soluzione è migliore. https://github.com/dustinblackman/winston-electron

+0

Potresti approfondire le modifiche che dovevi apportare per farlo funzionare? –

+1

Le modifiche possono essere trovate qui. https://github.com/dustinblackman/winston/commit/6564d7cb8f2403f43a14c8e0ffd2a18058cea195 In sostanza, controlla se la versione elettronica esiste in 'process.version'. Se lo fa, usa i metodi 'console' degli elettroni, altrimenti scrive su' stdout' o 'stderr'. Patch abbastanza semplice. – Dustin

+0

Puoi anche definire winston nel processo principale e usarlo dal renderer tramite gli oggetti condivisi –

3

È possibile creare una console personalizzata in questo modo:

var output = fs.createWriteStream('./stdout.log'); 
var errorOutput = fs.createWriteStream('./stderr.log'); 
// custom simple logger 
var logger = new Console(output, errorOutput); 
// use it like console 
var count = 5; 
logger.log('count: %d', count); 
// in stdout.log: count 5 

Vedi https://iojs.org/api/console.html#console_new_console_stdout_stderr


A quanto pare le eccezioni non vengono stampati nel log degli errori, questa è una soluzione alternativa:

process.on('uncaughtException', function (err) { 
    logger.error('Caught exception: ' + err); 
}); 
+0

Ah è fantastico! E che dire delle eccezioni? Deve essere usato di più su macchine di altri utenti in cui non riesco a ricreare un problema. Ecco perché tutto – Dustin

+0

@Dustin Ho appena giocato con esso e non sembra che lo faccia. Forse Theres una soluzione tramite ̶p̶r̶o̶c̶e̶s̶s̶.̶o̶n̶ (̶'̶u̶n̶c̶a̶u̶g̶h̶t̶E̶x̶c̶e̶p̶t̶i̶o̶n̶'̶) ̶? ̶ giocheranno con sé alcuni ̶m̶o̶r̶e̶.̶ C'è una soluzione. Vedi modifica –