如何中断日志记录事件的信息

时间:2014-05-09 06:53:52

标签: python logging

我一直在Python中使用日志记录模块。我的疑问不是技术问题,而是我不确定信息的最佳做法。问题是有时会发生一个事件,我想在日志中转储有关它的信息,但是有很多信息。我可以构建一个长字符串,并在log.info()命令中使用它。没关系,除了结果几乎不可读的事实。在字符串中引入字符'\ n'确实会将消息分成日志文件中的单独行,但是左对齐,它看起来很难看,因为在记录格式化程序的开头我正在编写日期/时间,用户等。

另一方面,我可以将消息拆分为对log.info()的不同调用,但这使得它看起来好像是不同的事件。

编辑:其他信息。

如果我执行不同的日志调用,它看起来像

2012-10-01 11:55:00,674 - SQLBOLPVWBA01 - WARNING   | ---------- Warning 001: a test was not passed ----------
2012-10-01 11:55:00,694 - SQLBOLPVWBA01 - WARNING   | File: \\b1snnasries01.SAN.CORP\D_8525_50_01\ValidacionModelos\Usuarios\Equity\testsValidationLibrary\XMLs\barrierMC\barrierMCbasket_0002_Q011388.xml
2012-10-01 11:55:00,704 - SQLBOLPVWBA01 - WARNING   | Parametrization: configMatlabMC8192.m
2012-10-01 11:55:00,732 - SQLBOLPVWBA01 - WARNING   | Expected: {'premium': 0.1302634916172996, 'stdErr': 0.0016369990559715}
2012-10-01 11:55:00,765 - SQLBOLPVWBA01 - WARNING   | Calculated: {'premium': 0.13526349161729959, 'stdErr': 0.0016369990559715229}

这里通常/最佳做法是什么?

我想我想要像

这样的东西
2012-10-01 11:55:00,674 - SQLBOLPVWBA01 - WARNING  | ---------- Warning 001: a test was not passed ----------
                                                   | File: \\b1snnasries01.SAN.CORP\D_8525_50_01\ValidacionModelos\Usuarios\Equity\testsValidationLibrary\XMLs\barrierMC\barrierMCbasket_0002_Q011388.xml
                                                   | Parametrization: configMatlabMC8192.m
                                                   | Expected: {'premium': 0.1302634916172996, 'stdErr': 0.0016369990559715}
                                                   | Calculated: {'premium': 0.13526349161729959, 'stdErr': 0.0016369990559715229}

1 个答案:

答案 0 :(得分:1)

使用\n记录消息以分隔行,正如您已经考虑过的那样,然后编写一个自定义Formatter子类,将消息拆分为单独的行,插入适当的空白前缀后续的行再次将它们连接在一起。

相关问题