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

OSCHINA-MIRROR/jungleliu0923-mylog

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme
**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