根据Python's Logging tutorial,logging.error
将用于报告错误的抑制而不会引发异常。",如果我想报告错误,我会#" 39;我应该只是提出一个例外而根本不使用logging
。
如果我想报告错误然后引发异常怎么办?
例如:
try:
os.path.getsize('/nonexistent')
except os.error as error:
logging.error(str(error))
logging.error('something went wrong')
raise SystemExit(1)
这导致以下行被打印到标准错误:
ERROR:root:[Errno 2] No such file or directory: '/nonexistent'
ERROR:root:something went wrong
这似乎是明智的。或者:
try:
os.path.getsize('/nonexistent')
except os.error as error:
logging.error(str(error))
raise SomeUserDefinedException('something went wrong')
这是不好的做法吗?
答案 0 :(得分:1)
logging
用于举报。raise
是一个中断程序正常流程的动作。通常情况下,raise
例外,如果有实际的中断流,并且您希望报告,则可以使用logging
,默认情况下会记录错误和异常。
logging
部分通常作为程序中模块,类或中间件的包装。
logging
只能用于 DEBUG 目的,或者用于 INFO 目的,如果您想跟踪服务器日志中的某些信息例如。不适用于错误。
答案 1 :(得分:1)
我不相信这是一种不好的做法。异常和日志记录有两个不同的用途,在任何给定的情况下,您可能需要一个,另一个或两者。例外情况是代码中的程序化消费和控制流,而日志记录则是由人或某种自动日志监视器(例如Splunk)进行外部消费。例如,您可以记录某些变量的值,以帮助您找出发生的情况并改进代码,但在这种情况下,调试级别更合适。或者您可能希望系统管理员了解该问题并可能采取一些措施。在这种情况下,将日志级别设置为错误并使用类似syslog日志处理程序的操作是有意义的。