Goo*_*oos 4 python logging python-2.7
我想使用 python 的日志记录到屏幕和文件
这是我登录屏幕的方式:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('hello')
Run Code Online (Sandbox Code Playgroud)
这就是我登录到文件的方式:
import logging
logging.basicConfig(level=logging.DEBUG,filename='a.log')
logging.debug('hello2')
Run Code Online (Sandbox Code Playgroud)
有没有办法同时登录到文件和屏幕?最好使用 logging.basicConfig
我正在使用 python 2.7.14
如果您想要一个用于屏幕的记录器和一个用于日志文件的记录器,请尝试以下操作:
import logging
log = logging.getLogger('logger')
log.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(message)s')
fh = logging.FileHandler('test.log', mode='w', encoding='utf-8')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
log.addHandler(fh)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(formatter)
log.addHandler(ch)
Run Code Online (Sandbox Code Playgroud)
这将创建两个日志处理程序。当您调用log.debug
/ info
/warning
等时,它会记录到您的每个处理程序。如果它们设置的级别相同或更高,它将记录消息,否则不会。
在此示例中,调用log.debug("test message")
会将str
“测试消息保存到” test.log
,但您不会在屏幕上看到输出,因为StreamHandler()
的级别高于debug
调试。
当您调用时log.info("test message")
,它会将str
“测试消息保存到test.log
并输出到控制台,因为它StreamHandler()
的级别是info
log.setLevel(logging.DEBUG)
确保所有内容都将被记录。如果您排除此行,WARNING
则将强制执行默认值,即使您在单独的处理程序中将级别设置得较低,您也无法记录任何 >= 该级别的内容
日志记录的级别如下:
DEBUG
INFO
WARNING
ERROR
CRITICAL
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4117 次 |
最近记录: |