记录异常

为什么记录在应有的何时不引发任何例外?我如何能
配置记录以投掷异常?
.... logging.fatal('asdf%d','123')
.... 除了:
....打印"从未打印过这条线"
...
Trackback(最近的最新电话):
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第744行,在EMIT中
msg = self.format(记录)
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第630行,格式
返回fmt.format(记录)
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第418行,格式
record.message = record.getMessage()
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/登录/__ init__.py",第288行,在getMessage中
msg = msg%self.args
TypeError:需要INT参数

# 回答1


Alexandru MosoiNapisa³(A):
... logging.fatal('asdf%d','123')
... 除了:
...打印'这条线永远不会打印'
...
[...]
您需要对处理程序进行子类并重新定义``hander eRror''方法.
请参阅:http://docs.python.org/lib/node409.html
hth,
罗布
# 回答2


8月26日,上午10:36,Alexandru Mosoi ... logging.fatal('asdf%d','123')
... 除了:
...打印'这条线永远不会打印'
...
Trackback(最近的最新电话):
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第744行,在EMIT中
msg = self.format(记录)
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第630行,格式
返回fmt.format(记录)
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第418行,格式
record.message = record.getMessage()
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/登录/__ init__.py",第288行,在getMessage中
msg = msg%self.args
TypeError:需要INT参数
您发布的摘要中的追溯是吗?如果是的话,那么
例外(typeError) *正在通过日志记录提出.所以我没有
了解您的问题:"为什么不记录任何例外
应该吗?",因为伐木正在提出一个例外.
要导致登录 *不 *提出例外,请设置
登录.raiseexceptions to 0(默认值为1). Raiseexcepings
在生产环境中通常将变量设置为0
您不需要与伐木有关的例外来携带应用程序
下.
问候,
Vinay Sajip
# 回答3


Vinay SajipNapisa³(A):
... logging.fatal('asdf%d','123')
... 除了:
...打印'这条线永远不会打印'
...
Trackback(最近的最新电话):
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第744行,在EMIT中
msg = self.format(记录)
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第630行,格式
返回fmt.format(记录)
文件"/库/框架/ python.framework/versions/2.5/lib/
python2.5/logging/__ init__.py",第418行,格式
record.message = record.getMessage()
文件"/library/frameworks/python.framework/versions/2.5/lib/
python2.5/登录/__ init__.py",第288行,在getMessage中
msg = msg%self.args
TypeError:需要INT参数

您发布的摘要中的追溯是吗?如果是的话,那么
例外(typeError) *正在通过日志记录提出.所以我没有
了解您的问题:"为什么不记录任何例外
应该吗?",因为伐木正在提出一个例外.
不,不是.
此追溯是在`handler.handleerror`方法中 *打印 *的 *:
<记录中的代码>
__version __ =" 0.5.0.2"
[...]
def handleror(自我,记录):
"""
处理在emit()呼叫期间发生的错误.
当例外时,应从处理程序调用此方法

在emit()呼叫中遇到.如果是raiseexceptions
错误的,
例外被默默地忽略.这是主要想要的
对于记录系统 - 大多数用户都不会关心错误

记录系统,他们对应用程序更感兴趣
错误.
但是,如果您
希望.
正在处理的记录已传递给此
方法.
"""
如果raiseexcepts:
ei = sys.exc_info()
Trackback.print_exception(EI [0],EI [1],EI [2],无,
sys.stderr)
del ei

好吧,我认为这无济于事.例外将打印
没有抬起.唯一的解决方案是重新定义" handererr"方法
也许我错过了什么?
br
罗布

# 回答4


8月27日,上午10:30,Rob Wolfe 不,不是.
此追溯是在`handler.handleerror`方法中 *打印 *的 *:
你是对的 - 我很傻.我没有注意:-(
好吧,我认为这无济于事.例外将打印
没有抬起.唯一的解决方案是重新定义" handererr"方法
也许我错过了什么?
不,你是对的.要自定义处理异常,请处理
需要覆盖.
问候,
Vinay

标签: python

添加新评论