Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 消除日志消息中的字符串填充_Python_Logging_Filter - Fatal编程技术网

Python 消除日志消息中的字符串填充

Python 消除日志消息中的字符串填充,python,logging,filter,Python,Logging,Filter,我正在使用日志过滤器打印日志消息,其中包括一些常规日志框架中不存在的自定义字段 例如: class NISARLogger(object): def __init__(self, filename): self.filename = filename fid = logging.FileHandler(filename) formatter_str = '%(asctime)s, %(levelname)s, %(pge)s, %(mo

我正在使用日志过滤器打印日志消息,其中包括一些常规日志框架中不存在的自定义字段

例如:

class NISARLogger(object):

    def __init__(self, filename):
        self.filename = filename

        fid = logging.FileHandler(filename)
        formatter_str = '%(asctime)s, %(levelname)s, %(pge)s, %(module)s, %(error_code)i, \
                         %(source)s:%(line_number)i, "%(error_name)s: %(message)s"'
        formatter = logging.Formatter(formatter_str)
        fid.setFormatter(formatter)

        self.logger = logging.getLogger(name="NISAR")
        self.logger.setLevel(logging.DEBUG)
        self.logger.addHandler(fid)

    def log_message(self, class_filter, message):

        xfilter = class_filter()
        log_funct = getattr(self.logger, xfilter.level)
        
        self.logger.addFilter(xfilter)
        log_funct(message)

    def close(self):
        logging.shutdown()
除了我的日志如下所示之外,一切似乎都正常工作:

2020-08-18 14:41:07,431, INFO, QA, misc, 100000,                           '../verify_rslc.py':70, "N/A: Opening file L_JOINT_00213_LINE12_RUN1_FP_12122019134617.h5 with xml spec /Users/cmoroney/Desktop/working/NISAR/src/GitHub/QualityAssurance/xml/nisar_L1_SLC.xml"
2020-08-18 14:41:07,432, INFO, QA, misc, 100000,                           '/Users/cmoroney/Desktop/working/NISAR/src/GitHub/QualityAssurance/quality/SLCFile.py':28, "N/A: Opening file L_JOINT_00213_LINE12_RUN1_FP_12122019134617.h5"

其中,“100000”(错误代码参数)和文件名(源参数)之间有大量填充,这两个参数都是通过“addFilter”调用传递到记录器的额外参数。我尝试过在formatter_str变量中测试“source”和“error_code”字段的长度,但没有成功。知道那个填充是从哪里来的吗?

额外的空间来自源代码本身第二行开头的空白

        formatter_str = '%(asctime)s, %(levelname)s, %(pge)s, %(module)s, %(error_code)i, \
                         %(source)s:%(line_number)i, "%(error_name)s: %(message)s"'
请尝试以下方法:

        formatter_str = ('%(asctime)s, %(levelname)s, %(pge)s, %(module)s, %(error_code)i, '
                         '%(source)s:%(line_number)i, "%(error_name)s: %(message)s"')