jpw*_*ynn 2 python logging stderr
在python应用程序中,我如何确保stderr的任何内容也会转到logger
,所以如果应用程序崩溃了一个未捕获的异常,我可以在日志中看到它?
我当前的日志设置是:
logger = logging.getLogger('myapp logger')
logger.setLevel(logging.INFO)
file_log_handler = logging.FileHandler('myapp.log')
logger.addHandler(file_log_handler)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_log_handler.setFormatter(formatter)
logger.addHandler(file_log_handler)
Run Code Online (Sandbox Code Playgroud)
在python日志记录文档中,除了如何将stderr发送到日志文件之外,我几乎看到了所有内容.
我知道我可以将stderr重定向到这样的文件:
sys.stderr = open('./myapp_errors.log', 'w')
Run Code Online (Sandbox Code Playgroud)
但是,我希望用来logger
记录异常,以便(a)格式化是一致的,(b)我可以将异常记录到同一个文件中.
您可以覆盖sys.excepthook
为自己的处理程序.然后您可以根据需要登录自己的记录器:
import sys
def _excepthook(exctype, exc, tb):
logger.error("An unhandled exception occurred.", exc_info=(exctype, exc, tb))
sys.excepthook = _excepthook
Run Code Online (Sandbox Code Playgroud)
实际上,写入stderr的默认行为来自默认值sys.excepthook
.
归档时间: |
|
查看次数: |
124 次 |
最近记录: |