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

OSCHINA-MIRROR/hardysimpson-zlog

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

Что такое zlog?


Zlog — надёжная, высокопроизводительная, многопоточная, гибкая, понятная модель логгирования на чистом C.

В мире C до сих пор не было хорошего логгера для приложений, подобно logback в Java или log4cxx в C++. Использование printf может работать, но его сложно переадресовать или переформатировать. Syslog медленен и предназначен для использования системой. Поэтому я создал zlog. Он быстрее, безопаснее и мощнее, чем log4c. Таким образом, он может широко использоваться.

Установка


Скачивание: https://github.com/HardySimpson/zlog/releases

$ tar -zxvf zlog-latest-stable.tar.gz
$ cd zlog-latest-stable/
$ make 
$ sudo make install

или

$ make PREFIX=/usr/local/
$ sudo make PREFIX=/usr/local/ install

PREFIX указывает место установки zlog. После установки обновите ваш динамический загрузчик библиотек, чтобы убедиться, что ваша программа может найти библиотеку zlog.

$ sudo vi /etc/ld.so.conf
/usr/local/lib
$ sudo ldconfig

Перед запуском реальной программы убедитесь, что libzlog.so находится в директории, доступной для динамической загрузки библиотек системы. Эти команды предназначены для Linux. Другие системы потребуют аналогичного набора действий.

Введение в конфигурационный файл


В zlog есть три важных концепта: категории, форматы и правила.Категории определяют различные виды записей журнала. В исходном коде zlog категория является переменной типа zlog_category_t *. В вашей программе различия между категориями помогут отличить записи друг от друга.Форматы описывают шаблоны журналов, такие как: наличие или отсутствие отметки времени, имени файла источника, строки источника.

Правила состоят из категории, уровня, выходного файла (или других каналов) и формата. Кратко говоря, если строка категории в правиле конфигурационного файла совпадает со значением переменной категории в исходном коде, то они совпадают. Однако существует сложный диапазон совпадений категории. Правило развязывает условия переменных. Например, log4j требует указания уровня для каждого логгера (или наследования от родительского логгера). Это неудобно, когда каждый уровень имеет свой собственный уровень вывода (например, дочерний логгер выводит на уровне отладки, а родительский — на уровне ошибки).

Теперь создайте конфигурационный файл. Функция zlog_init принимает путь к файлу как единственный аргумент.

$ cat /etc/zlog.conf 
[форматы]
простой = "%m%n"
[правила]
my_cat.DEBUG    >stdout; простой

В конфигурационном файле сообщения журнала в категории "my_cat" уровня DEBUG и выше выводятся в стандартный поток вывода с использованием простого формата (%m — пользовательское сообщение, %n — новая строка). Если вы хотите направить вывод в файл и ограничить максимальный размер файла, используйте следующую конфигурацию:

my_cat.DEBUG            "/var/log/aa.log", 1М; простой
```3. Использование API zlog в исходном файле C
-------------
	$ vi test_hello.c

    ```c
    #include <stdio.h>
    
    #include "zlog.h"
    
    int main(int argc, char** argv)
    {
        int rc;
        zlog_category_t *c;
    
        rc = zlog_init("/etc/zlog.conf");
        if (rc) {
            printf("Инициализация не удалась\n");
            return -1;
        }
    
        c = zlog_get_category("my_cat");
        if (!c) {
            printf("Получение категории не удалось\n");
            zlog_fini();
            return -2;
        }
    
        zlog_info(c, "Привет, zlog");
    
        zlog_fini();
    
        return 0;
    }
    ```

4. Компиляция и запуск программы
-------------
    $ cc -c -o test_hello.o test_hello.c -I/usr/local/include
    $ cc -o test_hello test_hello.o -L/usr/local/lib -lzlog -lpthread
    $ ./test_hello
    Привет, zlog5. Расширенное использование
-------------
 * модель syslog, лучше модели log4j
 * настраиваемый формат логов
 * несколько целевых мест для вывода, включая статический путь к файлу, динамический путь к файлу, stdout, stderr, syslog, пользовательски определённое место
 * ручная или автоматическая перезагрузка конфигурации во время выполнения (безопасно)
 * высокая производительность, до 250'000 записей в секунду на моём ноутбуке, примерно в 1000 раз быстрее syslog(3) с rsyslogd
 * пользовательская настройка уровней логгирования
 * безопасная ротация файлов журнала для потока и процесса
 * микросекундная точность
 * dzlog, API для работы с категориями журналов для удобства использования
 * MDC, карта ключ-значение в стиле log4j
 * возможность отладки, можно выводить сообщения отладки и ошибок zlog во время выполнения
 * нет внешних зависимостей, основано только на POSIX системе и стандарте C99 vsnprintf6. Ссылки:
-------------
 * Главная страница: http://hardysimpson.github.com/zlog
 * Скачивание: https://github.com/HardySimpson/zlog/releases
 * Адрес электронной почты автора: HardySimpson1984@gmail.com
 * Версия autoconf: https://github.com/bmanojlovic/zlog
 * Версия cmake: https://github.com/lisongmin/zlog
 * Версия для Windows: https://github.com/lopsd07/WinZlog

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

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

Введение

Надёжная, высокопроизводительная, потокобезопасная, гибкая, с понятной моделью, чистая C-библиотека логирования. Развернуть Свернуть
LGPL-2.1
Отмена

Обновления

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

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hardysimpson-zlog.git
git@api.gitlife.ru:oschina-mirror/hardysimpson-zlog.git
oschina-mirror
hardysimpson-zlog
hardysimpson-zlog
master