我正在編寫一個程序,它基本上從日誌文件中拉出一行,解析它,並以簡化形式返回解析的數據。我目前的主要問題是我應該解析日期時間的方法。以下是日誌中的一行示例。日誌文件的將日期時間字符串轉換爲整數(秒),然後添加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