2012-07-09 23 views
0

我正在编写一个程序,它基本上从日志文件中拉出一行,解析它,并以简化形式返回解析的数据。我目前的主要问题是我应该解析日期时间的方法。以下是日志中的一行示例。日志文件的将日期时间字符串转换为整数(秒),然后添加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作为这种可能的解决方案。最后,我需要将日期时间解析为毫秒,然后将其添加到日期时间中的毫秒整数(用逗号分隔)。

我确信这个问题非常复杂,我提前道歉。感谢您的帮助。

回答

0
>>> datetime.datetime.strptime('2012-06-12 14:02:16,341' + '000', '%Y-%m-%d %H:%M:%S,%f') 
datetime.datetime(2012, 6, 12, 14, 2, 16, 341000) 
+0

这是完美的。我唯一的问题是如何将这个应用到我当前的代码中,从而使程序打开实际的日志文件而不是简单地提供一个字符串? – Raj 2012-07-09 21:31:16

+0

只需拆分第二个空格[每行](http://stackoverflow.com/questions/8009882/how-to-read-large-file-line-by-line-in-python)。 – 2012-07-09 21:33:15

+0

我明白了。这是否取代我的正则表达式?仍然有点困惑。 – Raj 2012-07-09 21:41:21

0

下面是如何解析行的例子:

>>> # A line from the logfile. 
>>> line = "2012-06-12 14:02:16,341 [main] INFO ---" 
>>> # Parse the line. 
>>> m = re.match(r"^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}),(\d{3}) \[([^]]*)\] (\S+) (.*)", line) 
>>> timestamp, line_number, filename, severity, message = m.groups() 
>>> # Show the various captured values. 
>>> timestamp 
'2012-06-12 14:02:16' 
>>> line_number 
'341' 
>>> filename 
'main' 
>>> severity 
'INFO' 
>>> message 
'---' 
相关问题