2012-11-23 17 views
8

Ho avuto difficoltà con la registrazione multiprocessing per un po 'di tempo e per molte ragioni.Registrazione multiprocessing in Python - perché multiprocessing.get_logger

Uno dei motivi è, perché un altro get_logger.

Ovviamente ho visto this question e sembra che il programma di registrazione che multiprocessing.get_logger restituisce esegue alcuni "blocchi di processi condivisi" per rendere agevole la gestione della registrazione.

Così, oggi ho esaminato il codice di multiprocessing di Python 2.7 (/multiprocessing/util.py), e ho scoperto che questo logger è semplicemente un logger.Logger semplice, e non c'è quasi nessuna magia attorno ad esso.

Ecco la descrizione nella documentazione Python, proprio prima che la funzione get_logger:

Alcuni supporto per la registrazione è disponibile. Si noti, tuttavia, che il pacchetto di registrazione non utilizza i blocchi condivisi di processo, quindi è possibile (a seconda del tipo di gestore per i messaggi di diversi processi ottenere confuso.

Quindi, quando si utilizza un gestore di registrazione errato, anche il logger get_logger potrebbe non funzionare correttamente? Ho usato un programma utilizza get_logger per la registrazione per un po 'di tempo. Stampa i log su StreamHandler e (sembra) non si confonde mai.

Ora La mia teoria è:

  1. multiprocessing.get_logger non fare serrature di processo condiviso affatto
  2. StreamHandler lavora per il multiprocessing, ma non lo fa FileHandler
  3. principale scopo di questo get_logger logger è per i processi di monitoraggio ciclo di vita, e di fornire un facile da ottenere e ready-to-use logger che registra già i tipi nome/id processo di roba

Ecco la domanda:

La mia teoria è giusta?

Come/Perché/Quando si utilizza questo get_logger?

risposta

1

Questa risposta non riguarda get_logger in particolare, ma forse è possibile utilizzare l'approccio suggerito in this post? Si noti che le classi QueueHandler/QueueListener sono disponibili per versioni precedenti di Python tramite il pacchetto logutils (disponibile anche on PyPI).

+0

Siamo spiacenti, non posso visitare blobspot perché, dove mi trovo, so che il tuo post riguarda la registrazione multiprocessing-friendly, grazie. A tale proposito, in realtà intendo utilizzare zmq.log per il mio progetto che utilizza zmq. :-) – tdihp