如何保留我的模块';将Python记录器从输出到控制台?

如何保留我的模块';将Python记录器从输出到控制台?,python,logging,python-logging,Python,Logging,Python Logging,我使用FileHandler为记录器提供了一个输出文件,如下所示: self.logger = logging.getLogger('my_module') handler = logging.FileHandler(filename = str(self.log_file), mode = "a") datefmt = "%Y-%m-%d %H:%M:%S" formatter = logging.Formatter(fmt = "[%(as

我使用FileHandler为记录器提供了一个输出文件,如下所示:

self.logger = logging.getLogger('my_module')

handler = logging.FileHandler(filename = str(self.log_file), mode = "a")
datefmt = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(fmt = "[%(asctime)s.%(msecs)03d][%(name)s:%(levelname)s]: %(message)s", datefmt = datefmt)
handler.setFormatter(formatter)

self.logger.addHandler(handler)
使用此代码时,它会记录到控制台和输出文件

如果我添加此代码:

default_logger = logging.getLogger()
default_logger.setLevel(logging.WARNING)
它会停止对控制台和输出文件的记录

我不知道如何使记录器只记录到传递给其处理程序的
文件名
。我该怎么做


以下是我尝试过的:

# LOGS TO CONSOLE AND FILE

root_logger = logging.getLogger()
root_logger.setLevel(logging.WARNING)

self.logger = logging.getLogger('my_module')
handler = logging.FileHandler(filename = str(self.log_file), mode = "a")
datefmt = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(fmt = "[%(asctime)s.%(msecs)03d][%(name)s:%(levelname)s]: %(message)s", datefmt = datefmt)
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)

self.logger.addHandler(handler)
self.logger.setLevel(logging.INFO)



# LOGS TO NEITHER CONSOLE OR FILE

root_logger = logging.getLogger()
root_logger.setLevel(logging.WARNING)

self.logger = logging.getLogger('my_module')
handler = logging.FileHandler(filename = str(self.log_file), mode = "a")
datefmt = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(fmt = "[%(asctime)s.%(msecs)03d][%(name)s:%(levelname)s]: %(message)s", datefmt = datefmt)
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)

self.logger.addHandler(handler)
# self.logger.setLevel(logging.INFO)



# LOGS TO CONSOLE AND FILE

root_logger = logging.getLogger()
root_logger.setLevel(logging.WARNING)

self.logger = logging.getLogger('my_module')
handler = logging.FileHandler(filename = str(self.log_file), mode = "a")
datefmt = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(fmt = "[%(asctime)s.%(msecs)03d][%(name)s:%(levelname)s]: %(message)s", datefmt = datefmt)
handler.setFormatter(formatter)
# handler.setLevel(logging.INFO)

self.logger.addHandler(handler)
self.logger.setLevel(logging.INFO)



# LOGS TO CONSOLE AND FILE

root_logger = logging.getLogger()
# root_logger.setLevel(logging.WARNING)

self.logger = logging.getLogger('my_module')
handler = logging.FileHandler(filename = str(self.log_file), mode = "a")
datefmt = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(fmt = "[%(asctime)s.%(msecs)03d][%(name)s:%(levelname)s]: %(message)s", datefmt = datefmt)
handler.setFormatter(formatter)
# handler.setLevel(logging.INFO)

self.logger.addHandler(handler)
self.logger.setLevel(logging.INFO)

不完全确定你在设置中做错了什么,你能试试这个(使用dictConfig的东西);为我工作:

import logging
import logging.config

LOG_CONFIG = {'version': 1,
              'handlers': {
                  'file_handler': {'class': 'logging.FileHandler', 'formatter': 'log_formatter', 'filename': '<your_file_name>'},
                  },
              'loggers': {'my_module': {'handlers': ['file_handler'], 'level': 'INFO'}},
              'formatters': {'<your_format>'}}
              }

logging.config.dictConfig(LOG_CONFIG)
self.logger = logging.getLogger('my_module')
导入日志
导入logging.config
LOG_CONFIG={'version':1,
“处理程序”:{
'文件处理程序':{'class':'logging.FileHandler','格式化程序':'日志格式化程序','文件名':''''},
},
'记录器':{'my_module':{'handlers':['file_handler'],'level':'INFO'},
'格式化程序':{'}
}
logging.config.dictConfig(LOG\u config)
self.logger=logging.getLogger('my_module')

您应该能够通过设置记录器和处理程序的级别来修复它。我将我的处理程序的级别设置为
logging.INFO
,将记录器的级别设置为
logging.WARNING
。这将停止对控制台的信息记录,但也会停止对文件处理程序的信息记录。如果记录器的级别为警告,则预期的行为是信息消息未发送到文件。记录器和处理程序都应设置为info。如果您不想让根日志记录器向控制台发送消息,您仍然应该将根日志记录器设置为警告,正如您已经做的那样。您可能误解了我,我希望它向文件发送日志,而不是向控制台发送日志。如果我将root logger设置为warning,它将停止发送到这两个日志,这是我不希望看到的。有没有办法只将日志发送到文件?您需要在两个记录器中设置级别,在代码中您只设置了根记录器的级别。您还必须设置
my\u模块
记录器的级别。