lazygophers/log

Производительная и гибкая библиотека логирования для Go, построенная на zap, которая предоставляет богатые функции и простой API.
📖 Языки документации
✨ Особенности
- 🚀 Высокая производительность : Построена на zap с повторным использованием объектов Entry через пул, снижая выделение памяти
- 📊 Богатые уровни логирования : Уровни Trace, Debug, Info, Warn, Error, Fatal, Panic
- ⚙️ Гибкая конфигурация :
- Контроль уровня логирования
- Запись информации о вызывающем
- Информация трассировки (включая ID горутины)
- Пользовательские префиксы и суффиксы логов
- Пользовательские целевые выходы (консоль, файлы и т.д.)
- Опции форматирования логов
- 🔄 Ротация файлов : Поддержка ежечасной ротации лог-файлов
- 🔌 Совместимость с Zap : Безшовная интеграция с zap WriteSyncer
- 🎯 Простой API : Чистый API, похожий на стандартную библиотеку логирования, легко использовать
🚀 Быстрый старт
Установка
go get github.com/lazygophers/log
Базовое использование
package main
import (
"github.com/lazygophers/log"
)
func main() {
// Использование глобального логгера по умолчанию
log.Debug("Отладочное сообщение")
log.Info("Общее сообщение")
log.Warn("Предупреждающее сообщение")
log.Error("Сообщение об ошибке")
// Использование форматированного вывода
log.Infof("Пользователь %s успешно вошел", "admin")
// Пользовательская конфигурация
customLogger := log.New().
SetLevel(log.InfoLevel).
EnableCaller(false).
SetPrefixMsg("[MyApp]")
customLogger.Info("Это лог из пользовательского логгера")
}
📚 Продвинутое использование
Пользовательский логгер с выходом в файл
package main
import (
"os"
"github.com/lazygophers/log"
)
func main() {
// Создание логгера с выходом в файл
logger := log.New().
SetLevel(log.DebugLevel).
EnableCaller(true).
EnableTrace(true).
SetOutput(os.Stdout, log.GetOutputWriterHourly("/var/log/myapp.log"))
logger.Debug("Отладочное сообщение с информацией о вызывающем")
logger.Info("Общее сообщение с информацией о трассировке")
}
Контроль уровня логирования
package main
import "github.com/lazygophers/log"
func main() {
logger := log.New().SetLevel(log.WarnLevel)
// Только сообщения warn и выше будут залогированы
logger.Debug("Это не будет залогировано") // Игнорировано
logger.Info("Это не будет залогировано") // Игнорировано
logger.Warn("Это будет залогировано") // Залогировано
logger.Error("Это будет залогировано") // Залогировано
}
🔧 Опции конфигурации
Конфигурация Logger
| Метод |
Описание |
Значение по умолчанию |
SetLevel(level) |
Установить минимальный уровень логирования |
DebugLevel |
EnableCaller(enable) |
Включить/выключить информацию о вызывающем |
false |
EnableTrace(enable) |
Включить/выключить информацию о трассировке |
false |
SetCallerDepth(depth) |
Установить глубину вызывающего |
2 |
SetPrefixMsg(prefix) |
Установить префикс лога |
"" |
SetSuffixMsg(suffix) |
Установить суффикс лога |
"" |
SetOutput(writers...) |
Установить целевые выходы |
os.Stdout |
Уровни логирования
| Уровень |
Описание |
TraceLevel |
Наиболее подробный, для детальной трассировки |
DebugLevel |
Отладочная информация |
InfoLevel |
Общая информация |
WarnLevel |
Предупреждающие сообщения |
ErrorLevel |
Сообщения об ошибках |
FatalLevel |
Фатальные ошибки (вызывает os.Exit(1)) |
PanicLevel |
Ошибки паники (вызывает panic()) |
🏗️ Архитектура
Основные компоненты
- Logger : Основная структура логирования с настраиваемыми уровнями, выходами, форматировщиками и глубиной вызывающего
- Entry : Индивидуальная запись лога с полной поддержкой метаданных
- Level : Определения уровней логирования и вспомогательные функции
- Format : Интерфейс и реализации форматирования логов
Оптимизации производительности
- Пул объектов : Повторное использование объектов Entry для снижения выделения памяти
- Условная запись : Запись дорогих полей только при необходимости
- Быстрая проверка уровня : Проверка уровня логирования на внешнем уровне
- Безблоковое проектирование : Большинство операций не требуют блокировки
📊 Сравнение производительности
| Характеристика |
lazygophers/log |
zap |
logrus |
стандартная логирование |
| Производительность |
Высокая |
Высокая |
Средняя |
Низкая |
| Простота API |
Высокая |
Средняя |
Высокая |
Высокая |
| Богатство функций |
Средняя |
Высокая |
Высокая |
Низкая |
| Гибкость |
Средняя |
Высокая |
Высокая |
Низкая |
| Кривая обучения |
Низкая |
Средняя |
Средняя |
Низкая |
🔗 Связанная документация
🚀 Получение помощи
📄 Лицензия
Этот проект лицензирован под лицензией MIT - см. файл LICENSE для деталей.
🤝 Вклад
Мы приветствуем вклады! Пожалуйста, ознакомьтесь с нашим Руководством по вкладу для деталей.
lazygophers/log предназначен для быть решением логирования по умолчанию для разработчиков Go, которые ценят как производительность, так и простоту. Независимо от того, строите ли вы небольшой утилиты или крупную распределенную систему, эта библиотека обеспечивает правильный баланс между функциональностью и удобством использования.