Le 07/04/2012 11:22, Thibaut DIRLIK a écrit :
Hi,

I'm currently writing a multiprocess applications with Python 3.2 and multiprocessing module. My subprocesses will use a QueueHandler to log messages (by sending them to the main process, which uses a QueueListener). However, if logging is already configured when I create the subprocesses, they will inherit the configuration, and opened file descriptors used for logging in the main process.

However, when I tried this with a basicConfig configuration, which prints to a file, the messages are only written once to the file. I don't understand why. Normally, the mainprocess contains a logging handler to log to the file. This handler will be copied into the child processes. Child processes will then have two handlers : a QueueHandler, and a FileHandler. They should write to the file handler and then send the message to the main process QueueListener, which should write the message AGAIN to the FileHandler.

But that's not the case. Any rea

How can I totally "unset" the logging configuration in child processes and only enable the QueueHandler (foor all configured loggers, not only the root one) ?

Thanks for your help,


Ok, I understand what happenned. In fact, configuring the logging before forking works fine. Subprocess inherits the configuration, as I thought.

The problem was that I didn't passed any handler to the QueueListener constructor. The when the listener recieved an message, it wasn't handled.

I'm not sure how the logging module works, but what handlers should I pass the QueueListener constructor ? I mean, maybe that I would like some messages (depending of the logger) to be logged to a file, while some others message would just be printed to stdout.

This doesn't seem to be doable with a QueueListener. Maybe I should implement my own system, and pass a little more informations with the record sent in the queue : the logger name for example.

Then, in the main process I would do a logging.getLogger(loggername) and log the record using this logger (by the way it was configured).

What do you think ?


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to