使用 conf 文件的日志记录模块不起作用



我正在尝试使用 logging.conf 文件配置记录器,但出现错误, 在代码中,我正在尝试将 conf 文件中的文件路径替换为包含时间戳文件夹的动态路径 以下是我的代码

Python 模块配置日志 -

class LogHandler:
logger = None
def __init__(self,file_path):
conf_path = os.path.dirname(os.getcwd())+"\config\log_config.conf"
#Setting the log file path to configuration file
with open(conf_path,'r') as file:
content = file.readlines()
file_path = file_path.replace("\", "\\")
print(file_path)
for line_no in range(len(content)):
if re.search("args=('.*',", content[line_no]):
content[line_no] = "args=('" + file_path + "','a')n"
break
file.close()
with open(conf_path,'w') as file:
file.write(''.join(content))
file.close()
logging.config.fileConfig(conf_path)
LogHandler.logger = logging.getLogger("root")
LogHandler.logger.info("Testing")
@staticmethod
def getLogger():
return LogHandler.logger

用于配置的 logging.conf 模块 -

[loggers]
keys=root
[handlers]
keys=consoleHandler
[formatters]
keys=sampleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=sampleFormatter
args=('C:\Users\vipin\PycharmProjects\PythonBehaveFramework\output\201912100840\output.log','a')
[formatter_sampleFormatter]
format=%(asctime)s : %(lineno)s   -  %(funcName)s - %(levelname)s - %(message)s

错误-

Traceback (most recent call last):
File "C:/Users/vipin/PycharmProjects/PythonBehaveFramework/Features/test.py", line 8, in <module>
LogHandler.getInstance("C:\Users\vipin\PycharmProjects\PythonBehaveFramework\output\output.log")
File "C:UsersvipinPycharmProjectsPythonBehaveFrameworksrcframeworkLogHandler.py", line 28, in getInstance
LogHandler(filename)
File "C:UsersvipinPycharmProjectsPythonBehaveFrameworksrcframeworkLogHandler.py", line 50, in __init__
logging.config.fileConfig(conf_path)
File "C:UsersvipinAppDataLocalProgramsPythonPython36-32libloggingconfig.py", line 84, in fileConfig
handlers = _install_handlers(cp, formatters)
File "C:UsersvipinAppDataLocalProgramsPythonPython36-32libloggingconfig.py", line 148, in _install_handlers
h = klass(*args)
TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given

handler_consoleHandler的配置不一致。

[handler_consoleHandler]
class=StreamHandler
<snip>
args=('C:\Users\vipin\PycharmProjects\PythonBehaveFramework\output\201912100840\output.log','a')

fileConfig根据您指定的class创建StreamHandler实例。此类在实例化时接受一个位置参数(self除外(。

class logging.StreamHandler(stream=None)

您指定的args属于FileHandler或其子类,即指定日志文件路径和模式。
这会将两个位置参数传递给StreamHandler初始值设定项,从而导致 TypeError。

如果要记录到文件,请将处理程序的类更改为FileHandler或其任何派生。
如果您确实想登录到控制台,请完全删除args以坚持使用默认 stderr,或者指定您想要的任何其他流,例如args=(sys.stdout,)希望处理程序改为登录到标准输出。

最新更新