我使用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}发布于 2014-05-09 07:34:29
正如您已经考虑过的那样,使用\n记录消息以分隔行,然后编写一个自定义Formatter子类,该子类将消息拆分为单独的行,为后续行插入适当的空格前缀,并再次将它们连接到一起。
https://stackoverflow.com/questions/23558320
复制相似问题