使用 python logging.Formatter() 时,我可以使用 pep8 样式还是必须在一行上

when using python logging.Formatter() can I use a pep8 style or does it have to be on one line

我正在学习如何使用 python 日志记录模块,想知道是否可以拆分下面的代码以便变量易于阅读和识别:

formatter_f = logging.Formatter('%(asctime)s,%(levelname)s,%(module)s,%(funcName)s,%(message)s',datefmt='%m/%d/%Y %H:%M:%S')

这导致:

03/25/2022 09:51:28,WARNING,main,<module>,first
03/25/2022 09:51:28,ERROR,sub2,div,error happened: division by zero
03/25/2022 09:51:28,WARNING,main,<module>,done

我试着用这个做一个更 pep8 的风格:

        formatter_f = logging.Formatter('%(asctime)s,\
            %(levelname)s,\
            %(module)s,\
            %(funcName)s,\
            %(message)s',
            datefmt='%m/%d/%Y %H:%M:%S')

但它产生了这个:

03/25/2022 10:01:32,            WARNING,            main,            <module>,            first
03/25/2022 10:01:32,            ERROR,            sub2,            div,            error happened: division by zero
03/25/2022 10:01:32,            WARNING,            main,            <module>,            done

我还尝试将每个部分设置为它自己的变量,这样我就可以设置一个单一的主字符串并将每个变量保持在它自己的行上,比如

        asctime = "asctime"
        levelname="levelname"
        module="module"
        funcName="funcName"
        message="message"
        date_format = "%m/%d/%Y %H:%M:%S"

        file_format_string =f"%({asctime})s,%({levelname})s,%({module})s,%({funcName})s,%({message})s', datefmt={date_format}"

        formatter_f = logging.Formatter(file_format_string)

当程序 运行 没有任何内容记录到文件中并且此错误出现在控制台中时:

TypeError: not enough arguments for format string

有没有办法组织 logging.Formatter(),每个变量都在自己的行上,或者我是否坚持这是一个巨大的行?

您可以使用一系列相邻的字符串文字,它们将由编译器自动连接。

formatter_f = logging.Formatter('%(asctime)s,'
                                '%(levelname)s,'
                                '%(module)s,'
                                '%(funcName)s,'
                                '%(message)s',
                    datefmt='%m/%d/%Y %H:%M:%S')