Sobes.tech
Middle

Vai jums ir pieredze žurnālu parsēšanā? Vai jūs varētu uzrakstīt kaut ko, lai meklētu notikumus Nginx žurnālos?

sobes.tech AI

Atbilde no 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.