我是python的新手,我有一个/var/ log /messages文件,我正在尝试解决这个问题,而不是仅仅为了查看一个单词在日志中出现了多少次而显示整个日志,例如,我在日志中有多少次使用DHCP或Apache2。
我的代码
#!/usr/bin/env python
from collections import Counter
logfile = open("putty.log", "r")
count = 1
for line in logfile:
try:
#print count
line_split = line.split()
#print line_split
message = line_split[3], line_split[4], line_split[5], line_split[6]
print message
count = count + 1
except:
print "no data"我的日志看起来像这样
Sep 4 14:35:44 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1381):n2n : n2n :检查状态5
Sep 4 14:35:44 (无)服务器名称:通知服务::xxxx1045:服务::xexecve_cmd_with_delay(549):cmd 'ipsec status n2n_1‘
Sep 4 14:35:44 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1392):n2n : ipsec状态生成结果: 000 "n2n_1":1
Sep 4 14:35:44 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU getNextRemoteEp(230):Nb RemoteEp =0
Sep 4 14:35:44 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU getNextRemoteEp(235):没有可用的RemoteEp
onSet_INT_xxxxx_Established 4 14:35:44 (无)服务器名称:信息服务::xxxx1045:服务::TR181 14 WRAPPER onSet_INT_xxxxx_Established(1432):xxxx1045: Sep 4 14:35:44(无)服务器名称:信息服务::xxxx1045:服务::TR181 14 WRAPPER onSet_INT_xxxxx_Established(1432):xxxx1045值false
Sep 4 14:35:44 (无)服务器名称:调试服务::xxxx1045:服务::VPN-SMU setTunnelInactiveCause(1993):调用函数'void vpn_smu::NetToNet::setTunnelInactiveCause()‘
Sep 4 14:35:44 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1604):n2n :隧道'n2n_1‘未建立
Sep 4 14:35:44 (无)服务器名称:调试服务::xxxx1045:服务::VPN-SMU updateRoutes(1863):调用函数'void vpn_smu::NetToNet::updateRoutes(int)‘
Sep 4 14:35:44 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1647):n2n : m_Counter 5!=1,不重新连接重试
Sep 4 14:35:48 (无)服务器名称:调试服务::xxxx1045:服务::VPN-SMU setStatus(SetStatus):调用函数'void vpn_smu::NetToNet::setStatus()‘
Sep 4 14:35:48 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1381):n2n : n2n :检查状态6
Sep 4 14:35:48 (无)服务器名称:通知服务::xxxx1045:服务::xexecve_cmd_with_delay(549):cmd 'ipsec status n2n_1‘
Sep 4 14:35:48 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1392):n2n : ipsec status generated result : 000 "n2n_1":
Sep 4 14:35:48 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU getNextRemoteEp(230):Nb RemoteEp =0
Sep 4 14:35:48 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU getNextRemoteEp(235):没有可用的RemoteEp
onSet_INT_xxxx_Established 4 14:35:48 (无)服务器名称:信息服务::xxxx1045:服务::TR181 35 WRAPPER onSet_INT_OpenWifi_Established(1432):xxxx1045: Sep 4 14:35:48(无)服务器名称:信息服务::xxxx1045:服务::TR181 35 WRAPPER onSet_INT_xxxx_Established(1432):xxxx1045值false
Sep 4 14:35:48 (无)服务器名称:调试服务::xxxx1045:服务::VPN-SMU setTunnelInactiveCause(1993):调用函数'void vpn_smu::NetToNet::setTunnelInactiveCause()‘
Sep 4 14:35:48 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1604):n2n :隧道'n2n_1‘未建立
Sep 4 14:35:48 (无)服务器名称:调试服务::xxxx1045:服务::VPN-SMU updateRoutes(1863):调用函数'void vpn_smu::NetToNet::updateRoutes(int)‘
Sep 4 14:35:48 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1647):n2n : m_Counter 6!=1,不重新连接重试
Sep 4 14:35:51 (无)服务器名称:调试服务::xxxx1045:服务2::服务2-OSM recv_SERVICE2_msg(325):从SERVICE2应用程序接收请求(800)
Sep 4 14:35:51 (无) serverName:debug SERVICE::xxxx1045: SERVICE2::SERVICE2-OSM receive_request_get_parameter_values(388):内部请求获取路径(Aaa2)
Sep 4 14:35:51 (无) serverName:debug SERVICE::xxxx1045: SERVICE2::SERVICE2-OSM receive_request_get_parameter_values(388):内部请求获取路径(Aaa1)
Sep 4 14:35:51 (无) serverName:debug SERVICE::xxxx1045: SERVICE2::SERVICE2-OSM receive_request_get_parameter_values(388):内部请求获取路径(Xxx2)
Sep 4 14:35:51 (无) serverName:debug SERVICE::xxxx1045: SERVICE2::SERVICE2-OSM receive_request_get_parameter_values(388):内部请求获取路径(Xxx1)
Sep 4 14:35:51 (无)服务器名称:调试服务::xxxx1045: XMOS -> onReceive(386):接收XMO请求:标识符(838)会话的标识符(0)
Sep 4 14:35:51 (无)服务器名称:调试服务::xxxx1045: XMOR -> xmor_reply_send(214):发送XMO回复:标识符(838)会话的标识符(1)
Sep 4 14:35:51 (无) serverName:debug SERVICE::xxxx1045: SERVICE2::SERVICE2-OSM reply_to_SERVICE2(151):回复SERVICE2: XMO请求(0x1a03804) XMO代码(16777216)
Sep 4 14:35:52 (无)服务器名称:调试服务::xxxx1045:服务::VPN-SMU setStatus(SMU):调用函数'void vpn_smu::NetToNet::setStatus()‘
Sep 4 14:35:52 (无)服务器名称:信息服务::xxxx1045:服务::VPN-SMU setStatus(1381):n2n : n2n :检查状态7
Sep 4 14:35:52 (无)服务器名称:通知服务::xxxx1045:服务::xexecve_cmd_with_delay(549):cmd 'ipsec status n2n_1‘
输出应如下所示
服务::xxxx1045服务2::服务2-OSM receive_request_get_parameter_values(388):50次
SERVICE::xxxx1045: SERVICE::xexecve_cmd_with_delay(549):cmd 'ipsec状态n2n_1':100次
服务::xxxx1045:服务::VPN-SMU getNextRemoteEp(235):没有可用的RemoteEp: 150次
我正在尝试对输出进行分组和计数,这样我就不必搜索整个日志来找出报告了多少次错误。
发布于 2019-09-04 22:37:01
下面的代码使用正则表达式给出了完全相同的结果。
import re
import string
frequency = {}
document_text = open('log.txt', 'r')
text_string = document_text.read().lower()
match_pattern = re.findall(r'\bapache\b|\bdhcp\b|\bsshd\b', text_string)
for word in match_pattern:
count = frequency.get(word, 0)
frequency[word] = count + 1
frequency_list = frequency.keys()
for words in frequency_list:
print words, frequency[words]输出: apache 6 dhcp 7 sshd 1
https://stackoverflow.com/questions/57790570
复制相似问题