在Python中配置日志记录
我有一个关于如何配置python记录器的问题。下面您可以看到我当前的记录器设置。() 是否有一种方法可以配置记录器,使其同时写入以下错误消息:在Python中配置日志记录,python,python-2.7,logging,Python,Python 2.7,Logging,我有一个关于如何配置python记录器的问题。下面您可以看到我当前的记录器设置。() 是否有一种方法可以配置记录器,使其同时写入以下错误消息: print a >>> NameError: global name 'a' is not defined 非常感谢您的帮助。将代码包装在中,尝试:,异常除外:阻止并调用logger.Exception(): 您可以添加一个raise语句来重新引发捕获的异常 演示: 导入日志记录 >>>logging.basicConfig()文件
print a
>>> NameError: global name 'a' is not defined
非常感谢您的帮助。将代码包装在
中,尝试:
,异常除外:
阻止并调用logger.Exception()
:
您可以添加一个raise
语句来重新引发捕获的异常
演示:
导入日志记录
>>>logging.basicConfig()文件
>>>logger=logging.getLogger()
>>>def foo():
... 打印
...
>>>def巴(i=0):
... 如果i<3:
... 巴(i+1)
... 其他:
... foo()
...
>>>def baz():
... 尝试:
... bar()
... 除例外情况外:
... logger.exception('Oops,出了点问题')
...
>>>def spam():baz()
...
>>>垃圾邮件()
错误:root:Oops,出了点问题
回溯(最近一次呼叫最后一次):
文件“”,第3行,在baz中
文件“”,第3行,在条形图中
文件“”,第3行,在条形图中
文件“”,第3行,在条形图中
文件“”,第5行,条形图
文件“”,第2行,在foo中
NameError:未定义全局名称“a”
回溯是由日志记录
模块记录的,而不是由我的交互式Python会话记录的
从
try
块到异常的回溯引导;spam()
函数是不包含上述示例的。将代码包装在中,尝试:
,异常除外:
阻止并调用记录器。异常()
:
您可以添加一个raise
语句来重新引发捕获的异常
演示:
导入日志记录
>>>logging.basicConfig()文件
>>>logger=logging.getLogger()
>>>def foo():
... 打印
...
>>>def巴(i=0):
... 如果i<3:
... 巴(i+1)
... 其他:
... foo()
...
>>>def baz():
... 尝试:
... bar()
... 除例外情况外:
... logger.exception('Oops,出了点问题')
...
>>>def spam():baz()
...
>>>垃圾邮件()
错误:root:Oops,出了点问题
回溯(最近一次呼叫最后一次):
文件“”,第3行,在baz中
文件“”,第3行,在条形图中
文件“”,第3行,在条形图中
文件“”,第3行,在条形图中
文件“”,第5行,条形图
文件“”,第2行,在foo中
NameError:未定义全局名称“a”
回溯是由日志记录
模块记录的,而不是由我的交互式Python会话记录的
从
try
块到异常的回溯引导;spam()
函数是,上面的例子不包括在内。我想这不是我想要的,因为我没有得到一个提示,就是这个bug是真的。在我的原始代码中,控制台中的错误消息太长,无法完全看到,因此我认为这不是我要查找的。@swot:完整的回溯记录到您的日志文件中。我的示例异常非常简短,是什么让您认为这是一个截断的回溯?实际上,如果我有def somefunction():print a
我在日志文件中没有得到完整的回溯。有什么建议吗?@swot:你在哪里发现了这个例外?在程序的入口点或内部somefunction()
?create loggersomefunction()尝试:somefunction异常除外:logger.Exception(“oops”)
这是我设置它的方式。这有帮助吗?我想这不是我想要的,因为我没有得到错误的真正含义。在我的原始代码中,控制台中的错误消息太长了,所以我认为这不是我要找的。@swot:完整的回溯记录到您的日志文件中。我的示例异常非常简单rt,是什么让你认为这是一个被截断的回溯?事实上,如果我有def somefunction():打印一个我没有在我的日志文件中得到完整的回溯。有什么建议吗?@swot:你在哪里发现了异常?在程序的入口点或somefunction()
?创建记录器
somefunction()试试:somefunction除了异常:logger.Exception(“oops”)
这是我设置它的方式。这有用吗?
print a
>>> NameError: global name 'a' is not defined
try:
print a
except Exception:
logger.exception('Oops, something went wrong')
>>> import logging
>>> logging.basicConfig()
>>> logger = logging.getLogger()
>>> def foo():
... print a
...
>>> def bar(i=0):
... if i < 3:
... bar(i + 1)
... else:
... foo()
...
>>> def baz():
... try:
... bar()
... except Exception:
... logger.exception('Oops, something went wrong')
...
>>> def spam(): baz()
...
>>> spam()
ERROR:root:Oops, something went wrong
Traceback (most recent call last):
File "<stdin>", line 3, in baz
File "<stdin>", line 3, in bar
File "<stdin>", line 3, in bar
File "<stdin>", line 3, in bar
File "<stdin>", line 5, in bar
File "<stdin>", line 2, in foo
NameError: global name 'a' is not defined