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

OSCHINA-MIRROR/phachon-go-logger

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

go-logger

A simple but powerful golang log Toolkit

Sourcegraph godoc license

中文文档

Feature

  • Поддержка одновременной записи в консоль, файл и URL.
  • Вывод в консоли может быть оформлен с использованием цветов.
  • Файл вывода поддерживает три типа сегментации на основе размера файла, количества строк файла и даты.
  • Сохранение поддержки вывода файлов в разные файлы на уровне журнала.
  • Два способа записи для поддержки асинхронного и синхронного режима.
  • Поддерживает формат вывода json.
  • Код разработан с возможностью расширения, и вы можете разработать собственный адаптер по мере необходимости.

Установка

go get github.com/phachon/go-logger
go get ./...

Требования

Go 1.8

Поддержка вывода

  • консоль (запись в консоль);
  • файл (запись в файл);
  • api (HTTP-запрос URL);
  • ...

Быстрый старт

  • Синхронный режим:
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: "", // Если JsonFormat имеет значение false, вывод сообщения журнала в формате строки консоли
    }
    // Добавление вывода в консоль
    logger.Attach("console", go_logger.LOGGER_LEVEL_DEBUG, consoleConfig)

    // Конфигурирование адаптера файла
    fileConfig := &go_logger.FileConfig {
        Filename : "./test.log", // Имя файла вывода логгера, не существует автоматически
        // Если вы хотите разделить отдельные логи на файлы, настройте параметры LevelFileName.
        LevelFileName : map[int]string {
            logger.LoggerLevel("error"): "./error.log",    // Логи уровня ошибки записываются в файл error.log.
            logger.LoggerLevel("info"): "./info.log",      // Логи информационного уровня записываются в файл info.log.
            logger.LoggerLevel("debug"): "./debug.log",    // Логи отладочного уровня записываются в файл debug.log.
        },
        MaxSize : 1024 * 1024,  // Максимальный размер файла (КБ), по умолчанию 0 — не ограничен
        MaxLine : 100000, // Максимальное количество строк в файле, по умолчанию 0 — не ограничено
        DateSlice : "d",  // Разделение документа по дате, поддержка «Y» (год), «m» (месяц), «d» (день), «H» (час), по умолчанию «нет».
        JsonFormat: true, // Запись данных файла в формате JSON
        Format: "", // Если JsonFormat имеет значение false, сообщение журнала записывается в формат строки файла
    }
    // Добавление вывода в файл
    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

Уровень: level | int | уровень регистратора | 1 |

Строка уровня: level_string | строка | строка уровня регистратора | Error |

Тело: body | строка | тело сообщения регистратора | this is a info log |

Файл: file | строка | файл вызова регистратора | main.go |

Линия: line | int | номер конкретной строки для вызова регистратора |64|

Функция: function| строка | имя функции для вызова регистратора | main.main |

Если вы хотите настроить формат вывода журнала?

Конфигурационный формат:

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: "%Псевдоним сообщения регистратора%"

Дополнительные примеры адаптеров

Бенчмарк

Система: Linux Mint 18.2 Sonya
Процессор(ы): 4
Название модели: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
Память: 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

Спасибо

Создано Phachon@163.com

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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