我使用的是logging
模块,并且我传入了与当前正在工作的其他作业相同的参数:
import logging
from inst_config import config3
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s [%(levelname)s] - %(message)s',
filename=config3.GET_LOGFILE(config3.REQUESTS_USAGE_LOGFILE))
logging.warning('This should go in the file.')
if __name__ == '__main__':
logging.info('Starting unload.')
字符串
使用此方法创建文件名:
REQUESTS_USAGE_LOGFILE = r'C:\RunLogs\Requests_Usage\requests_usage_runlog_{}.txt'.format(
CUR_MONTH)
def GET_LOGFILE(logfile):
"""Truncates file and returns."""
with open(logfile, 'w'):
pass
return logfile
型
然而,当我运行它时,它正在创建文件,然后仍然将日志信息输出到控制台。我正在运行Powershell
。
我试着把它放在main语句中,像这样:
if __name__ == '__main__':
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s [%(levelname)s] - %(message)s',
filename=config3.GET_LOGFILE(config3.REQUESTS_USAGE_LOGFILE))
logging.warning('This should go in the file.')
型
还是没找到。
5条答案
按热度按时间c0vxltue1#
我在
logging.basicConfig()
之前添加了以下行,它对我很有效。字符串
sxpgvts32#
您可以尝试在主文件中运行此代码段。
字符串
djp7away3#
除了Forge关于使用
logging.basicConfig()
的回答之外,从Python 3.8开始,还添加了一个basicConfig()参数。引用文档:字符串
这就是为什么yue dong的删除所有处理程序的方法和 Alexandria 的将logger.handlers重置为[]的方法一样有效的原因。
调试
logger.handlers
(正如Forge的回答所暗示的那样)让我看到了一个单独的StreamHandler
(所以basicConfig()对我来说什么都没有,直到我使用force=True
作为参数)。希望这有助于除了所有其他答案在这里太!
gev0vcfq4#
如果您使用的是默认名称为“"的”root“日志记录器,那么您可以使用以下技巧:
字符串
此外,您可能希望像上面的代码中那样指定日志记录级别,此级别将对所有后代记录器保持不变。
相反,如果指定了特定的logger,则
型
上面的代码将创建新的logger 'my_service'。如果已经创建了记录器,则会清除所有句柄。它添加了用于在指定文件和控制台中写入的句柄。See official documentation as well的数据。
您也可以使用分层记录器。它直接完成。
型
dddzy1tm5#
字符串
设置level=0,filemode=“a”或“w”。如果您设置filemode w,那么它将覆盖以前日志,但是如果您想要附加日志,您必须使用filemode=“a”。