如何使用日志库? (用Python实现日志记录)

时间:2014-11-28 11:43:54

标签: python logging error-handling multiprocessing

我想在一个类中应用logging库来从我的代码中的不同步骤获取报告,并使用infodebugerror函数并保留它在日志文件中。另外我想在我的代码中使用multiprocessing。但我无法弄清楚它是如何工作的,应该进行设置,再加上我在代码中使用它并将其定义为以下

import logging 

logging.basicConfig(filename='logfile.log',level=logging.DEBUG)

它暂停了代码并阻止终止进程。我想知道它应该如何在一个类中使用并停止并关闭日志文件?!! 任何帮助将不胜感激......

1 个答案:

答案 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
相关问题