1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/phachon-go-logger

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_CN.md 9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 05:34 cdcea79

go-logger

golang — это простой и мощный инструмент для логирования на языке Golang.

Функционал:

  • поддержка одновременной записи в консоль, файл и URL;
  • возможность добавления цвета в вывод в командной строке;
  • разделение файлов по размеру, количеству строк или дате;
  • сохранение разных уровней логов в разные файлы;
  • асинхронная и синхронная запись;
  • форматирование вывода в формате JSON;
  • расширяемость кода для создания собственных адаптеров.

Установка и использование:

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")
}

Пример вывода с раскраской в командной строке:

image

Пример пользовательского форматирования вывода:

Поле Псевдоним Тип Описание Пример
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

License

MIT

谢谢

Create By phachon@163.com

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/phachon-go-logger.git
git@api.gitlife.ru:oschina-mirror/phachon-go-logger.git
oschina-mirror
phachon-go-logger
phachon-go-logger
master