Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中配置日志记录_Python_Python 2.7_Logging - Fatal编程技术网

在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()文件

我有一个关于如何配置python记录器的问题。下面您可以看到我当前的记录器设置。()

是否有一种方法可以配置记录器,使其同时写入以下错误消息:

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 logger
somefunction()
尝试: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