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

OSCHINA-MIRROR/jungleliu0923-mylog

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
readme 4.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 16:58 3e77c3e
**1. Описание**
1) В данной папке содержатся исходные коды src и примеры файлов sample.
2) При компиляции src создаётся output, включающий iånclude и lib.
3) Используя output, lib и include, можно обратиться к sample, Makefile и code.
4) Уровни логирования: FATAL, WARNING, NOTICE, TRACE, DEBUG (в порядке убывания важности).
5) Для вывода логов используется MY_LOG_FATAL и другие функции, аналогичные printf. Это очень просто.
**2. Использование API (см. mylog.h)**
1. Инициализация каталога для логов:
```c
my_log_init(const char* log_path, const char* normal_path, const char* warn_fatal_path, const int log_level)
```
где:
* *log_path* — путь к логам;
* *normal_path* — каталог для обычных логов;
* *warn_fatal_path* — каталог для аварийных логов;
* *log_level* — уровень логирования.
2. Инициализация данных для многопоточного логирования:
```c
my_log_thread_init()
```
3. Установка идентификатора потока:
```c
my_log_set_logid(logid)
```
Использовать после my_log_thread_init().
4. Установка IP-адреса запроса:
```c
my_log_set_reqip(reqip)
```
Использовать после my_log_thread_init().
5. Установка модуля:
```c
my_log_set_mod(mod)
```
Установить модуль для одного потока или использовать после my_log_thread_init().
6. Установить тип времени выполнения:
```c
my_log_set_time_type(time_type)
```
Использовать в одном потоке или после my_log_thread_init().
7. Вывести журнал уровня FATAL:
```c
MY_LOG_FATAL(logfmt, arg...)
```
Будет выводиться при уровне логирования >= 1.
8. Вывести журнал уровня WARNING:
```c
MY_LOG_WARNING(logfmt, arg...)
```
Будет выводиться при уровне логирования >= 2.
9. Вывести журнал уровня NOTICE:
```c
MY_LOG_NOTICE(logfmt, arg...)
```
Будет выводиться при уровне логирования >= 4.
10. Вывести журнал уровня TRACE:
```c
MY_LOG_TRACE(logfmt, arg...)
```
Будет выводиться при уровне логирования >= 8.
11. Вывести журнал уровня DEBUG:
```c
MY_LOG_DEBUG(logfmt, arg...)
```
Будет выводиться при уровне логирования >= 16.
12. Закрыть дескриптор журнала:
```c
my_log_close();
```
**3. Пример**
Код:
```c
#include "mylog.h"
void* test_thread1(void*)
{
my_log_thread_init();
my_log_set_reqip("10.10.10.31");
my_log_set_time_type(TIME_TYPE_MSEC);
for(int i=0; i<100; i++)
{
my_log_set_logid(i);
MY_LOG_FATAL("thread 1 fatal is at %d, it's %s", i , "OK");
MY_LOG_WARNNING("thread 1 warning is at %d, it's %s", i , "OK");
MY_LOG_NOTICE("thread 1 notice is at %d, it's %s", i , "OK");
MY_LOG_TRACE("thread 1 trace is at %d, it's %s", i , "OK");
MY_LOG_DEBUG("thread 1 debug is at %d, it's %s", i , "OK");
sleep(1);
}
}
void* test_thread2(void*)
{
my_log_thread_init();
for(int i=0; i<3; i++)
{
my_log_set_mod("test2");
MY_LOG_FATAL("thread 2 fatal is at %d, it's %s", i , "OK");
MY_LOG_WARNNING("thread 2 warning is at %d, it's %s", i , "OK");
MY_LOG_NOTICE("thread 2 notice is at %d, it's %s", i , "OK");
MY_LOG_TRACE("thread 2 trace is at %d, it's %s", i , "OK");
MY_LOG_DEBUG("thread 2 debug is at %d, it's %s", i , "OK");
sleep(1);
}
}
int main()
{
my_log_init(".", "test.log", "test.log.wf", 16);
MY_LOG_DEBUG("main begin");
pthread_t t1, t2;
pthread_create(&t1, NULL, test_thread1, NULL);
pthread_create(&t2, NULL, test_thread2, NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
MY_LOG_DEBUG("main end");
}
```
Результат выполнения:
![blob](http://git.oschina.net/uploads/images/2013/1215/152929_2bce7fcf_60197.png)

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

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

1
https://api.gitlife.ru/oschina-mirror/jungleliu0923-mylog.git
git@api.gitlife.ru:oschina-mirror/jungleliu0923-mylog.git
oschina-mirror
jungleliu0923-mylog
jungleliu0923-mylog
master