星号全日志解析器

时间:2011-04-12 10:24:35

标签: php ajax asterisk

我想为Asterisk PBX制作日志解析器,但不知道从哪里开始。 我从日志中找出了我需要的东西。我需要的行看起来像这样: [Apr 12 11:11:56] VERBOSE[3359] logger.c: -- Called 111 VERBOSE [....]中的数字对于1次呼叫是相同的。

我要做的第一件事是获取包含该VERBOSE号码的行,以便我可以识别该号码。第二件事是阅读文本,有一些标准文本,所以不难识别。

问题是我想实时阅读(文件是实时编写的),并将其显示在网页中。 PHP或Ajax。

我想要做的是,在用户调用时在网页中显示行。并且要在当前/已接听电话下添加新呼叫。

任何提示,例子都会很棒。

谢谢, 塞巴斯蒂安

1 个答案:

答案 0 :(得分:1)

我会在两个可以作为简单CGI程序工作的程序中完成。

  1. 第一个程序解析日志并显示日期和呼叫标识符。此类标识符将链接到第二个程序。在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()
    
  2. 此程序将显示具有呼叫标识符的行:

    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()
    
相关问题