如何从nodejs或Python中的文件解析日志数据?

时间:2019-06-18 07:34:22

标签: python node.js

我有几台服务器,以这种格式向我提供包含数百行的文件:

document.evaluate()

我如何在python或Nodejs中解析它?

计划将它们分为日期,设备,用户信息,然后是消息。

我计划将此数据存储在数据库中,但是我已经介绍了那部分。

1 个答案:

答案 0 :(得分:2)

这是在Python中执行此操作的简单方法。但是,它对日志结构的更改不是很可靠。如果您认为日志结构会发生很大变化,建议您考虑使用正则表达式。

from datetime import datetime

logs = []

with open("log.txt", "r") as log_file:
  for line in log_file:
    line_list = line.split()
    log = {}
    date = datetime.strptime(" ".join(line_list[:3]), '%b %d %H:%M:%S')
    log['Date'] = date.replace(year=2019) # no year in log
    log['Device'] = line_list[3]
    log['User_info'] = line_list[4]
    log['Message'] = " ".join(line_list[6:])
    logs.append(log)

print(logs)

[   {   'Date': datetime.datetime(2019, 6, 8, 19, 17, 52),
        'Device': 'icmp-73260f',
        'User_info': 'user.info',
        'message': 'SM- Security log event: Playout::CPLEnd'},
    {   'Date': datetime.datetime(2019, 6, 8, 19, 17, 52),
        'Device': 'icmp-73260f',
        'User_info': 'user.info',
        'message': 'SM- Security log event: Playout::PlayoutComplete'},
    {   'Date': datetime.datetime(2019, 6, 8, 19, 17, 52),
        'Device': 'icmp-73260f',
        'User_info': 'user.debug',
        'message': 'IMB Event- End of track CRC values: ffbbffbb - 00c7ffbb - '
                   '54c783e4 - 00e483e4'},
    {   'Date': datetime.datetime(2019, 6, 8, 19, 17, 52),
        'Device': 'icmp-73260f',
        'User_info': 'user.debug',
        'message': 'IMB Controller- Notify STOPPED state for frame 28465'}]