У меня есть приложение python 2.5
, которое создает отдельный поток для работы. Я хочу войти в файл, и я могу сделать это из основного потока, но когда я регистрируюсь из других потоков, он не работает.Ведение журнала не работает в отдельной теме
Это произойдет в основном потоке:
log_filename = os.path.join(os.path.dirname(__file__), "log", args[1]+'.log')
logging.basicConfig(filename=log_filename, level=logging.DEBUG)
logging.debug("Hello world!") # this works, line got written to a file
Это как нить становятся инициализирован:
worker_thread = threading.Thread(target = MY_worker.MY_worker, args = tuple([task_queue]))
worker_thread.start()
Теперь из метода, который работает на потоке я делаю:
logging.debug("testing") # this doesnt got printed in the log file
Я даже попробовал настроить журнал снова (внутри потока, прямо перед тем, как писать в журнал):
log_filename = os.path.join(os.path.dirname(__file__), "log", 'sandbox.log')
logging.basicConfig(filename=log_filename, level=logging.DEBUG)
logging.debug("testing") # doesn't works neither.
Я попытался сочинительство непосредственно в файл, и он работал:
f = open(log_filename,'a')
f.write('some testing message \n')
f.close()
Почему это происходит и как заставить его работать?
Просьба представить [минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) вашей проблемы, чтобы мы могли его отладить. –
Попробуйте вызвать logging.getLogger() и передать результат в поток в списке аргументов. –