使用 Python 登录文件
logging in file using Python
我这样做是为了将信息保存到我的文件中,但我的控制台中也有输出。我该怎么做才能在我的控制台中看到信息,但在我的文件中看到它?
logger = logging.getLogger('resource_manager')
logger.setLevel(logging.DEBUG)
info_log = logging.FileHandler('/home/nvidia/Videos/Info.log')
info_log.setFormatter(logging.Formatter('%(asctime)s - %(message)s'))
info_log.setLevel(logging.INFO)
logger.addHandler(info_log)
logger.info(f'{(time.time()-delay)}')
在这里,您添加了一个处理程序来写入文件。您需要做的是 remove the default handler 写入 STDERR。
您可以禁止事件从这个记录器传播到它的父记录器(根记录器),这将防止它们被根记录器的 StreamHandler
处理(这是写入标准错误的内容)。
logger = logging.getLogger('resource_manager')
logger.propagate = False
I did this to save info to my file, but I also got output in my console.
这可能意味着其他一些日志记录配置已经处于活动状态(例如,您确定 logging.basicConfig()
没有在同一个 Python 程序中被调用吗?);特别是,根记录器 附加了一个 StreamHandler
。
记录器根据其名称按层次结构进行组织;例如,foo
是 foo.bar
和 foo.baz
的父级,而 foo.baz
是 foo.baz.spam
的父级。在该层次结构的顶端是 root logger(即 其名称为空 的记录器)。默认情况下,记录器将发出的记录(除非记录级别对于给定记录器而言太低)传播到它们的父级(以便最终这些记录到达 root 记录器)。
防止记录器将发出的记录传播给父级的一种简单方法是将记录器的 propagate
属性设置为 False
(默认情况下为 True
)。
所以试试这个:
logger.propagate = False
推荐阅读:
我这样做是为了将信息保存到我的文件中,但我的控制台中也有输出。我该怎么做才能在我的控制台中看到信息,但在我的文件中看到它?
logger = logging.getLogger('resource_manager')
logger.setLevel(logging.DEBUG)
info_log = logging.FileHandler('/home/nvidia/Videos/Info.log')
info_log.setFormatter(logging.Formatter('%(asctime)s - %(message)s'))
info_log.setLevel(logging.INFO)
logger.addHandler(info_log)
logger.info(f'{(time.time()-delay)}')
在这里,您添加了一个处理程序来写入文件。您需要做的是 remove the default handler 写入 STDERR。
您可以禁止事件从这个记录器传播到它的父记录器(根记录器),这将防止它们被根记录器的 StreamHandler
处理(这是写入标准错误的内容)。
logger = logging.getLogger('resource_manager')
logger.propagate = False
I did this to save info to my file, but I also got output in my console.
这可能意味着其他一些日志记录配置已经处于活动状态(例如,您确定 logging.basicConfig()
没有在同一个 Python 程序中被调用吗?);特别是,根记录器 附加了一个 StreamHandler
。
记录器根据其名称按层次结构进行组织;例如,foo
是 foo.bar
和 foo.baz
的父级,而 foo.baz
是 foo.baz.spam
的父级。在该层次结构的顶端是 root logger(即 其名称为空 的记录器)。默认情况下,记录器将发出的记录(除非记录级别对于给定记录器而言太低)传播到它们的父级(以便最终这些记录到达 root 记录器)。
防止记录器将发出的记录传播给父级的一种简单方法是将记录器的 propagate
属性设置为 False
(默认情况下为 True
)。
所以试试这个:
logger.propagate = False
推荐阅读: