peu*_*ing 3 python logging string-formatting
据我了解,
'hello {0}'.format("world")
Run Code Online (Sandbox Code Playgroud)
慢于:
"hello %s" % "world"
Run Code Online (Sandbox Code Playgroud)
我的问题是,当传递时,logger如何格式化字符串:
logger.debug("hello %s", "world")
Run Code Online (Sandbox Code Playgroud)
并且假设日志永远不会被关闭,那么最好这样做:
logger.debug("hello %s" % "world")
Run Code Online (Sandbox Code Playgroud)
Jon*_*ley 11
不要忘记,如果您最终使用Sentry等日志聚合服务,那么所有调用都会:
logger.error("hello %s", planet)
Run Code Online (Sandbox Code Playgroud)
将被分组在一起作为同一错误的多次出现,同时所有调用:
logger.error("hello %s" % (planet,))
Run Code Online (Sandbox Code Playgroud)
将列出许多不同的错误,每个错误都发生一次.这使得很难对实际经常发生的错误进行分类.
此分组行为基于日志记录调用的第一个参数的值.在第一个例子中,它们都是相同的,而在第二个例子中,它们都依赖于"行星"的价值.
因此,不要在传递给日志记录的字符串上使用'%'或.format运算符.让日志记录调用为您完成.
任何差异都可以忽略不计。记录器花费的时间主要取决于其输出通道的速度 - 而 IO总是很慢。%与 相比,记录器之间的差异.format约为每个字符串半微秒。平均而言,记录器会花费比这多得多的时间(可能是几秒钟)来实际记录每个字符串。
| 归档时间: |
|
| 查看次数: |
6299 次 |
| 最近记录: |