LogLint — анализатор для Go, который проверяет сообщения логирования и помогает поддерживать единый стиль логов.
Линтер анализирует вызовы логгеров и выявляет проблемы в текстах сообщений.
Поддерживаются:
log/sloggo.uber.org/zap
LogLint проверяет следующие правила.
Сообщение лога должно начинаться с маленькой буквы.
❌ Плохо
slog.Info("Server started")✅ Хорошо
slog.Info("server started")
Сообщения должны содержать только английский текст.
❌ Плохо
slog.Info("сервер запущен")
Сообщения не должны содержать спецсимволы или emoji.
❌ Плохо
logger.Info("server started!!!")
logger.Info("deployment finished 🚀")
Сообщения не должны содержать чувствительные данные.
По умолчанию проверяются:
password
token
api_key
secret
❌ Плохо
logger.Info("user password leaked")
Для некоторых правил линтер умеет автоматически исправлять код.
Например:
slog.Info("Server started!!!")
будет предложено исправить на:
slog.Info("server started")
Клонировать репозиторий:
git clone https://github.com/USERNAME/loglint.git
cd loglint
Собрать бинарник:
go build -o loglint ./cmd/mylinter
После этого появится исполняемый файл:
loglint
Запуск линтера:
./loglint ./...
Пример вывода:
example/example.go:8:12: log should start with lowercase
example/example.go:10:12: log should not contain special characters
example/example.go:11:2: log should not contain any sensitive words
Линтер возвращает exit code 3, если найдены ошибки.
Это удобно использовать в CI.
Линтер поддерживает конфигурационный файл.
Пример loglint.yaml:
enabled_rules:
- lowercase
- english
- special
- sensitive
sensitive_words:
- password
- token
- api_key
- secret
sensitive_patterns:
- '(?i)authorization'
- '(?i)bearer\s+[a-z0-9\-\._]+'
Запуск с конфигурацией:
./loglint -config=loglint.yaml ./...
Запуск всех тестов:
go test ./...
Тесты включают:
-
проверку диагностик (analysistest)
-
проверку автоисправлений (SuggestedFix)
-
unit-тесты правил
Проект использует GitHub Actions для автоматической проверки:
-
сборка проекта
-
запуск тестов
-
проверка статического анализа
CI запускается автоматически при каждом push.
cmd/mylinter — CLI для запуска линтера
analyzer — основной анализатор
rules — правила проверки логов
lint — поиск лог-вызовов в AST
config — загрузка конфигурации
testdata — тестовые кейсы analysistest
- Go 1.22+