我想为Asterisk PBX制作日志解析器,但不知道从哪里开始。
我从日志中找出了我需要的东西。我需要的行看起来像这样:
[Apr 12 11:11:56] VERBOSE[3359] logger.c: -- Called 111
VERBOSE [....]中的数字对于1次呼叫是相同的。
我要做的第一件事是获取包含该VERBOSE号码的行,以便我可以识别该号码。第二件事是阅读文本,有一些标准文本,所以不难识别。
问题是我想实时阅读(文件是实时编写的),并将其显示在网页中。 PHP或Ajax。
我想要做的是,在用户调用时在网页中显示行。并且要在当前/已接听电话下添加新呼叫。
任何提示,例子都会很棒。
谢谢, 塞巴斯蒂安
答案 0 :(得分:1)
我会在两个可以作为简单CGI程序工作的程序中完成。
第一个程序解析日志并显示日期和呼叫标识符。此类标识符将链接到第二个程序。在Python中,您可以使用regexp:
# 1st group - date, 2nd - callid
RX_VERBOSE = re.compile(r'(.*) VERBOSE\[(\d+)\] ')
def make_link(call_id):
return(' <a href="show_call.cgi?call_id=%d>%d</a>' % (call_id, call_id))
def show_calls(logfn):
call_ids = []
f = open(logfn)
for line in f:
rx = RX_VERBOSE.search(line)
if rx:
call_id = int(rx.group(2))
if not call_id in call_ids:
print('%s %s' % (rx.group(1), make_link(call_id)))
call_ids.append(call_id)
f.close()
此程序将显示具有呼叫标识符的行:
def show_call_datails(logfn, call_id):
search_str = ' VERBOSE[%s] ' % call_id
f = open(logfn)
for line in f:
if search_str in line:
print(line.rstrip())
f.close()