我想在一个类中应用logging
库来从我的代码中的不同步骤获取报告,并使用info
,debug
或error
函数并保留它在日志文件中。另外我想在我的代码中使用multiprocessing
。但我无法弄清楚它是如何工作的,应该进行设置,再加上我在代码中使用它并将其定义为以下
import logging
logging.basicConfig(filename='logfile.log',level=logging.DEBUG)
它暂停了代码并阻止终止进程。我想知道它应该如何在一个类中使用并停止并关闭日志文件?!! 任何帮助将不胜感激......
答案 0 :(得分:0)
您可以浏览Good logging practice in python以获取更多日志记录模块的信息,并从Python document获取更详细的信息。
下面是一个关于如何使用日志记录模块的基本示例,其中我故意提出异常:
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