鉴于此代码,我尝试使日志语句正常工作,但我无法执行。该文档告诉我,我不必设置级别。
创建记录器时,级别设置为NOTSET(这将导致所有 当记录器是根记录器时要处理的消息,或者 记录器为非root记录器时将其委托给父级。
但是没有它是行不通的。因此,我尝试将其设置为调试。但是仍然没有运气。
"""
Experimental Port Fowarding
"""
import logging
def main(config):
""" entry point"""
log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
log.debug("opening config file...")
config_file = open(config, 'r')
log.debug("config found!")
答案 0 :(得分:1)
您得到的记录器没有任何处理程序。您可以通过执行print(log.handlers)
并检查输出是否为空列表([]
)来进行检查。
使用日志记录库的最简单方法是这样的,您可以在其中调用logging.basicConfig
来设置所有内容,如logging module basic tutorial所示:
"""
Experimental Port Fowarding
"""
import logging
logging.basicConfig(level=logging.DEBUG)
def main(config):
""" entry point"""
logging.debug("opening config file...")
config_file = open(config, 'r')
logging.debug("config found!")
main('test.conf')
这在IPython的内部和外部都对我有用。
如果出于某种原因要避免使用basicConfig
,则需要手动注册处理程序,例如:
import logging
def main(config):
""" entry point"""
log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
# Minimal change: add StreamHandler to display to stdout
log.addHandler(logging.StreamHandler())
log.debug("opening config file...")
config_file = open(config, 'r')
log.debug("config found!")
答案 1 :(得分:0)
默认情况下,记录器将写入STDERR流,该流通常会打印到控制台本身。
基本上,您可以通过设置以下内容来更改日志文件的路径:
logging.basicConfig(filename="YourFileName.log")
log = logging.getLogger(__name__)