golang — это простой и мощный инструмент для логирования на языке Golang.
go get github.com/phachon/go-logger
go get ./...
Для работы требуется версия Go 1.8 и выше.
Поддерживается несколько типов вывода: консоль, файл, API и другие.
Синхронный способ:
import (
"github.com/phachon/go-logger"
)
func main() {
logger := go_logger.NewLogger()
logger.Info("this is a info log!")
logger.Errorf("this is a error %s log!", "format")
}
Асинхронный способ:
import (
"github.com/phachon/go-logger"
)
func main() {
logger := go_logger.NewLogger()
logger.SetAsync()
logger.Info("this is a info log!")
logger.Errorf("this is a error %s log!", "format")
// Программа должна завершиться вызовом Flush перед завершением.
logger.Flush()
}
Несколько выводов:
import (
"github.com/phachon/go-logger"
)
func main() {
logger := go_logger.NewLogger()
logger.Detach("console")
// Конфигурация вывода в командной строке
consoleConfig := &go_logger.ConsoleConfig{
Color: true, // Отображать ли цвет в выводе командной строки
JsonFormat: true, // Форматировать ли вывод командной строки в JSON
Format: "", // Если вывод не в формате JSON, JsonFormat: false, пользовательский формат вывода
}
// Добавить «console» как один из выводов logger
logger.Attach("console", go_logger.LOGGER_LEVEL_DEBUG, consoleConfig)
// Конфигурация вывода файла
fileConfig := &go_logger.FileConfig {
Filename : "./test.log", // Имя файла для вывода логов, не создаётся автоматически
// Если вы хотите разделить отдельные журналы на файлы, настройте параметр LealFrimeNem.
LevelFileName : map[int]string {
logger.LoggerLevel("error"): "./error.log", // Журналы уровня Error записываются в error.log
logger.LoggerLevel("info"): "./info.log", // Журналы уровня Info записываются в info.log
logger.LoggerLevel("debug"): "./debug.log", // Журналы уровня Debug записываются в debug.log
},
MaxSize : 1024 * 1024, // Максимальный размер файла (КБ), значение по умолчанию 0 без ограничений
MaxLine : 100000, // Максимальное количество строк в файле, значение по умолчанию 0 без ограничения
DateSlice : "d", // Разделение файлов по дате, поддерживает "Y" (год), "m" (месяц), "d" (день), "H" (час), по умолчанию "no", без разделения
JsonFormat: true, // Формат данных при записи в файл в формате JSON
Format: "", // Пользовательский формат журнала, если данные не в формате JSON
}
// Добавить файл как один из выводов logger
logger.Attach("file", go_logger.LOGGER_LEVEL_DEBUG, fileConfig)
logger.Info("this is a info log!")
logger.Errorf("this is a error %s log!", "format")
}
Пример вывода с раскраской в командной строке:
Пример пользовательского форматирования вывода:
Поле | Псевдоним | Тип | Описание | Пример |
---|---|---|---|---|
Timestamp | timestamp | int64 | Временная метка Unix | 1521791201 |
TimestampFormat | timestamp_format | string | Строка формата временной метки | 2018-3-23 15:46:41 |
Millisecond | millisecond | int64 | Метка времени в миллисекундах | 1524472688352 |
MillisecondFormat | millisecond_format | string | Строка формата метки времени в миллисекундах | 2018-3-23 15:46:41.970 |
Level | level | int | Уровень журнала | 1 |
LevelString | level_string | string | Строковое представление уровня журнала | Ошибка |
Body | body | string | Содержание журнала | this is a info log |
File | file | string | Имя файла, вызвавшего этот вывод журнала | main.go |
Line | line | int | Метод, вызвавший этот вывод журнала | 64 |
Function | function | string | Название метода, вызвавшего этот вывод журнала | main.main |
Если вы хотите настроить формат вывода журнала, вы можете сделать это, настроив параметр Format:
consoleConfig := &go_logger.ConsoleConfig{
Format: "%millisecond_format% [%level_string%] %body%",
}
fileConfig := &go_logger.FileConfig{
Format: "%millisecond_format% [%level_string%] %body%",
}
Вывод будет выглядеть так:
2018-03-23 14:55:07.003 [Critical] this is a critical log!
Чтобы настроить вывод, просто установите параметр Format в соответствии с форматом Logger Message. Core(TM) i5-3210M CPU @ 2.50GHz
memery: 4G
BenchmarkLoggerConsoleText 500000 11375 нс/оп 672 Б/оп 15 аллоков/оп
BenchmarkLoggerConsoleText-2 500000 11345 нс/оп 672 Б/оп 15 аллоков/оп
BenchmarkLoggerConsoleText-4 500000 9897 нс/оп 672 Б/оп 15 аллоков/оп
BenchmarkLoggerConsoleAsyncText 500000 9323 нс/оп 672 Б/оп 15 аллоков/оп
BenchmarkLoggerConsoleAsyncText-2 500000 9087 нс/оп 672 Б/оп 15 аллоков/оп
BenchmarkLoggerConsoleAsyncText-4 500000 10685 нс/оп 672 Б/оп 15 аллоков/оп
BenchmarkLoggerConsoleJson 200000 30918 нс/оп 2048 Б/оп 10 аллоков/оп
BenchmarkLoggerConsoleJson-2 200000 33153 нс/оп 2048 Б/оп 10 аллоков/оп
BenchmarkLoggerConsoleJson-4 200000 30918 нс/оп 2048 Б/оп 10 аллоков/оп
BenchmarkLoggerFileText 300000 14083 нс/оп 912 Б/оп 21 аллока/оп
BenchmarkLoggerFileText-2 200000 21159 нс/оп 912 Б/оп 21 аллок/оп
BenchmarkLoggerFileText-4 200000 23776 нс/оп 912 Б/оп 21 аллок/оп
BenchmarkLoggerFileAsyncText 300000 13956 нс/оп 912 Б/оп 21 аллок/оп
BenchmarkLoggerFileAsyncText-2 300000 16124 нс/оп 912 Б/оп 21 аллок/оп
BenchmarkLoggerFileAsyncText-4 300000 18641 нс/оп 912 Б/оп 21 аллок/оп
BenchmarkLoggerFileJson 200000 15472 нс/оп 1968 Б/оп 15 аллоков/оп
BenchmarkLoggerFileJson-2 200000 22523 нс/оп 1968 Б/оп 15 аллоков/оп
BenchmarkLoggerFileJson-4 200000 25596 нс/оп 1968 Б/оп 15 аллоков/оп
beego/logs : github.com/astaxie/beego/logs
欢迎提交意见和代码,联系信息 phachon@163.com
MIT
Create By phachon@163.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )