我正在编写一个程序,它基本上从日志文件中拉出一行,解析它,并以简化形式返回解析的数据。我目前的主要问题是我应该解析日期时间的方法。以下是日志中的一行示例。日志文件的将日期时间字符串转换为整数(秒),然后添加ms
例子:
2012-06-12 14:02:16,341 [main] INFO ---
2012-06-12 14:02:16,509 [main] INFO ---
2012-06-12 14:02:17,000 [main] INFO ---
2012-06-12 14:02:17,112 [main] INFO ---
2012-06-12 14:02:20,338 [main] INFO ---
2012-06-12 14:02:21,813 [main] INFO ---
我的代码来解析至今(很粗糙):
class LogLine:
SEVERITIES = ['EMERG','ALERT','CRIT','ERR','WARNING','NOTICE','INFO','DEBUG']
severity = 1
def __init__(self, line):
try:
t, s, self.filename, n, self.message =
re.match(r"^(\d\d\d\d-\d\d-\d\d[ \t]\d\d:\d\d:\d\d,\d\d\d)", line)
self.line = int(n)
self.sev = self.SEVERITIES.index(s)
self.time = time.strptime(t)
def get_t(self):
return
def get_severity(self):
return self.SEVERITIES.index(self)
def get_message(self):
return
def get_filename(self):
return
def get_line(self):
return
所以基本上(如果你无法从我可怕的代码来推断)我我正在使用正则表达式解析字符串以获取日期时间。我也一直在阅读关于strptime作为这种可能的解决方案。最后,我需要将日期时间解析为毫秒,然后将其添加到日期时间中的毫秒整数(用逗号分隔)。
我确信这个问题非常复杂,我提前道歉。感谢您的帮助。
这是完美的。我唯一的问题是如何将这个应用到我当前的代码中,从而使程序打开实际的日志文件而不是简单地提供一个字符串? – Raj 2012-07-09 21:31:16
只需拆分第二个空格[每行](http://stackoverflow.com/questions/8009882/how-to-read-large-file-line-by-line-in-python)。 – 2012-07-09 21:33:15
我明白了。这是否取代我的正则表达式?仍然有点困惑。 – Raj 2012-07-09 21:41:21