ifndef _LOGGER_H_ define _LOGGER_H_ include defines include vxlog log

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef _LOGGER_H_
#define _LOGGER_H_
#include <defines.h>
#include <vxlog/log.h>
#include <vxlog/file-outputter.h>
#include <vxlog/console-outputter.h>
/**
* Функция для инициализации модуля логгирования
* (под модулем логгирования понимается часть кода, которая при выводе сообщений должна
* выводить префикс в виде некоторого уникального имени модуля)
*/
typedef bool (*LoggerModuleInitializer)( vxcommon::SharedPtr<vxlog::OutputterInterface> outputter );
bool LoggerRegisterModuleInitializer( LoggerModuleInitializer initCB );
/**
* регистрация модуля(подсистемы) для логгирования
*/
#define ECSPLOG_REGISTER_MODULE(module_alias,module_descr) \
VXLOG_DEFINE_MODULE(module_alias,module_descr); \
class ECSPLogRegModule_##module_alias \
{ \
public: \
ECSPLogRegModule_##module_alias() \
{ \
LoggerRegisterModuleInitializer( &ECSPLogRegModule_##module_alias :: moduleInitializer ); \
} \
\
static bool moduleInitializer( vxcommon::SharedPtr<vxlog::OutputterInterface> outputter ) \
{ \
vxlog::InitModule( module_alias, vxlog::Level::kInfo, outputter ); \
return true; \
} \
}; \
ECSPLogRegModule_##module_alias logRegModule##module_alias;
/**
* объявление модуля(подсистемы) для логгирования
*/
#define ECSPLOG_DECLARE_MODULE(module_alias,module_descr) VXLOG_DEFINE_MODULE(module_alias,module_descr)
/**
* Функция инициализации системы логгирования для исполнимого файла
*
* должна быть вызвана один раз для каждого исполняемого файла
* слинкованного с библиотекой логгирования ( в функции main() )
*
* для плагинов, реализованных в виде DLL эту функцию вызывать не нужно
*/
extern bool LoggerInit();
/**
* Функция инициализации системы логгирования для плагина
*/
bool LoggerRegisterAndUpdateModule( LoggerModuleInitializer initCB );
#define LoggerRegDLL(module_alias) { static bool r = false; if ( !r ) { LoggerRegisterAndUpdateModule( &ECSPLogRegModule_##module_alias :: moduleInitializer ); r = true; } }
ECSP_NAMESPACE_BEGIN(core)
ECSP_NAMESPACE_END
#endif//_LOGGER_H_