Добавить IP-адрес и дату из файла журнала apache - PullRequest
0 голосов
/ 20 декабря 2018

Я создаю программу, которая будет сортировать IP-адреса в зависимости от того, сколько раз они посещают сайт в день.Я получу свои данные из журнала Apache . Этот пример я узнаю из

Что мне нужно использовать, чтобы добавлять только IP-адреса и даты изжурнал apache?

Если есть какая-либо документация, которую довольно легко прочитать (так как я довольно плохо знаком с python), я с удовольствием ее прочитаю!

Я попытался создать список, в котором язатем добавьте каждую строку в.Я думаю, что вместо добавления всей строки это должен быть способ добавить только IP-адрес и дату.В дальнейшем я также хотел бы отсортировать этот список по дате, при этом последняя должна быть первой.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Мне кажется, что ip указан первым.Это означает, что вы можете прочитать файл построчно и вычеркнуть первое слово, являющееся ip, и добавить его в список для возврата.Если вы хотите сделать более продвинутый поиск / фильтрацию, я бы предложил отформатировать этот журнал, читая и записывая этот файл журнала, в формат типа xml или json.Это будет легче искать, чем блоки строк.

 def append_log_storage(file, storage_file):
    root_elm = ET.Element('root')  
    # Load file to memory
    log_content = None
    with open(file) as f:
        log_content = f.readlines()
    f.close()
    # Write to file    
    f = open(file, 'w')
    for line in log_content:
        if line == '\n':
            continue 
        ip = line.partition(' ')[0]
        ip_log_elm = ET.SubElement(root_elm, 'log')
        ip_elm = ET.SubElement(ip_log_elm, 'ip')  
        # date_elm, etc. Add any other data for the log element
        ip_elm.text = ip  
    f.close()
    xml_data = ET.tostring(root_elm)
    xml_file = open(storage_file, 'wb')
    xml_file.write(xml_data)

def read_log_details(file):
    # Read file by line
    ip_list = []
    with open(file) as f:
        for line in f:
            if line == '\n':
                continue 
            ip = line.partition(' ')[0]
            ip_list.append(ip)
    f.close()
    return ip_list

read_log_details('log.txt')
#append_log_storage('log.txt', 'log.xml')

https://stackabuse.com/reading-and-writing-xml-files-in-python/

0 голосов
/ 20 декабря 2018
with open(log_file) as f:
    for line in f:
        IP, date = line.partition("]")[0].split(" - - [")

Учитывая пример файла журнала, если каждая новая строка начинается с IP, то этого должно быть достаточно.Как вы храните это зависит от вас.

...