我在 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}
最佳答案
使用 \n
记录消息以分隔行,正如您已经考虑过的那样,然后编写一个自定义 Formatter
子类,将消息拆分为单独的行,插入后续行的适当空白前缀并将它们再次连接在一起。
关于python - 如何中断事件信息以进行记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23558320/