Назад к вопросам
Middle
10
Есть ли опыт по парсингу логов? Сможешь написать что-то для поиска событий в логах Nginx?
Компании, где спрашивали
Магнит Тех
Ответ от нейросети
sobes.tech 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.