Sobes.tech
Middle

Heb je ervaring met het parseren van logs? Kun je iets schrijven om gebeurtenissen in Nginx logs te zoeken?

sobes.tech AI

Antwoord van AI

Да, есть опыт парсинга логов. Для поиска событий в логах Nginx можно написать простой скрипт на Go, который будет читать файл лога и фильтровать строки по заданному условию.

Пример: поиск всех запросов с кодом ответа 500 (ошибка сервера).

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    file, err := os.Open("/var/log/nginx/access.log")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        line := scanner.Text()
        // Предположим, что код ответа - это 9-й элемент, разделенный пробелами
        parts := strings.Fields(line)
        if len(parts) > 8 && parts[8] == "500" {
            fmt.Println(line)
        }
    }

    if err := scanner.Err(); err != nil {
        panic(err)
    }
}

Этот код открывает лог, читает его построчно и выводит только те строки, где HTTP-статус равен 500. Аналогично можно искать другие события, например, по IP, времени или URL.