我一直在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}
答案 0 :(得分:1)
使用\n
记录消息以分隔行,正如您已经考虑过的那样,然后编写一个自定义Formatter
子类,将消息拆分为单独的行,插入适当的空白前缀后续的行再次将它们连接在一起。