使用conf文件的日志模块不工作

2024-10-05 10:06:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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:\Users\vipin\PycharmProjects\PythonBehaveFramework\src\framework\LogHandler.py", line 28, in getInstance
    LogHandler(filename)
  File "C:\Users\vipin\PycharmProjects\PythonBehaveFramework\src\framework\LogHandler.py", line 50, in __init__
    logging.config.fileConfig(conf_path)
  File "C:\Users\vipin\AppData\Local\Programs\Python\Python36-32\lib\logging\config.py", line 84, in fileConfig
    handlers = _install_handlers(cp, formatters)
  File "C:\Users\vipin\AppData\Local\Programs\Python\Python36-32\lib\logging\config.py", line 148, in _install_handlers
    h = klass(*args)
TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given

Tags: pathinconfiglogginghandlersconflinecontent
1条回答
网友
1楼 · 发布于 2024-10-05 10:06:10

handler_consoleHandler的配置不一致

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

fileConfig基于指定的class创建一个^{}实例。这个类在实例化时接受一个位置参数(除了self

class logging.StreamHandler(stream=None)

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

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

相关问题 更多 >

    热门问题