我的问题很简单:写入日志的内容。 有没有约定? 我该怎么办?
由于我的应用程序必须发布,我希望有友好的日志,大多数人都可以阅读,而不会询问它是什么。
我已经有了一些想法,比如时间戳,每个函数/方法的唯一标识符等等。 我想要几个日志级别,如跟踪/调试,信息,错误/警告。
您是否使用了一些预先格式化的日志资源?
谢谢
答案 0 :(得分:18)
这很愉快,已经实施了。
阅读本文:http://docs.python.org/library/logging.html
修改强>
“易于解析,阅读”通常是矛盾的特征。英语 - 易于阅读,难以解析。 XML - 易于解析,难以阅读。没有格式可以实现易于阅读和易于解析。一些日志格式“读起来并不可怕,也无法解析”。有些人创建了多个处理程序,因此一个日志有多种格式:人们阅读的摘要和自动解析的XML版本。
答案 1 :(得分:9)
以下是对内容的一些建议:
实施的最佳做法:
编辑:我刚刚注意到这个问题是用Python标记的,所以请在我之前看到S. Lott的回答。这可能足以满足您的需求。
答案 2 :(得分:1)
由于你标记了你的问题python,我也推荐你this question。 至于内容,Brian的建议很好。但是请记住,如果使用共享日志,请添加程序名称。
关于日志文件的重要事情是“greppability”。尝试在一行中提供所有信息,并为特定条件提供唯一的(也是基数)正确的字符串标识符。至于时间戳,请使用ISO-8601标准,该标准可以很好地排序。
答案 3 :(得分:1)
一个好主意是查看日志分析软件。除非您打算自己编写,否则您可能希望利用现有的日志分析软件包,例如Analog。如果是这种情况,您可能希望生成一个类似于它接受的格式的日志输出。它可以让您轻松创建漂亮的图表和图形!
答案 4 :(得分:1)
在我看来,最好的方法是使用现有的日志记录库,例如log4j (or it's variations for other languages)。它使您可以控制消息的格式化,并且无需触摸代码即可对其进行更改。它遵循最佳实践,强大并且被数百万用户使用。当然,你可以编写自己的日志框架,但这样做很奇怪,除非你需要一些非常具体的东西。无论如何,请浏览他们的文档,看看如何在那里显示日志语句。
查看log4py - Python移植的log4j版本,我认为Python有几种实现方式..
答案 5 :(得分:0)
timeStamp,即DateTime YYYY / MM / DD:HH:mm:ss:ms 用户 线程ID 功能名称 消息/错误消息/成功消息/功能跟踪
以XML格式提供此格式,然后您可以轻松地为其编写解析器。
<log>
<logEntry DebugLevel="0|1|2|3|4|5....">
<TimeStamp format="YYYY/MM/DD:HH:mm:ss:ms" value="2009/04/22:14:12:33:120" />
<ThreadId value="" />
<FunctionName value="" />
<Message type="Error|Success|Failure|Status|Trace">
Your message goes here
</Message>
</logEntry>
</log>
答案 6 :(得分:0)
Python的日志库对单进程线程是线程安全的。