Ответ 1
import logging
log = logging.getLogger("mylog")
log.setLevel(logging.DEBUG)
formatter = logging.Formatter(
"%(asctime)s %(threadName)-11s %(levelname)-10s %(message)s")
# Alternative formatting available on python 3.2+:
# formatter = logging.Formatter(
# "{asctime} {threadName:>11} {levelname} {message}", style='{')
# Log to file
filehandler = logging.FileHandler("debug.txt", "w")
filehandler.setLevel(logging.DEBUG)
filehandler.setFormatter(formatter)
log.addHandler(filehandler)
# Log to stdout too
streamhandler = logging.StreamHandler()
streamhandler.setLevel(logging.INFO)
streamhandler.setFormatter(formatter)
log.addHandler(streamhandler)
# Test it
log.debug("Some message")
log.error("An error!")
try:
something()
except:
log.exception("An exception occured!")
И заходите в debug.txt:
2011-01-18 12:07:24,943 MainThread DEBUG Some message 2011-01-18 12:07:24,943 MainThread ERROR An error! 2011-01-18 12:07:24,943 MainThread ERROR An exception occured! Traceback (most recent call last): File "./logtest.py", line 17, in something() NameError: name 'something' is not defined
Обратите внимание, что порядок, в котором сообщения отображаются в файле журнала, может не соответствовать точно тому порядку, в котором они произошли, когда вы регистрируетесь из нескольких потоков.