From a91c04d9d4a7b45f7ef0ed1f6fbd9573e76a99b3 Mon Sep 17 00:00:00 2001 From: xiaojiazhu <258828110.@qq.com> Date: Thu, 20 Jul 2023 08:18:17 -0700 Subject: [PATCH] Add Log & ReturnCode. --- CMakeLists.txt | 7 +- build/global_config.cmake | 1 + doc/cmake_exploitReport.md | 58 +- doc/design.md | 269 +- external/gtest/Makefile | 8 + external/gtest/build_gtest.sh | 35 + .../gtest/googletest-release-1.11.0.tar.gz | Bin 0 -> 886330 bytes external/gtest/modify/CMakeList_gmock.txt | 224 + external/gtest/modify/CMakeList_gtest.txt | 329 ++ test/CMakeLists.txt | 13 + test/utils/CMakeLists.txt | 6 + test/utils/ReturnCode/CMakeLists.txt | 31 + test/utils/ReturnCode/mainTest.cpp | 9 + test/utils/ReturnCode/src/ReturnCodeTest.cpp | 14 + utils/CMakeLists.txt | 4 + utils/Log/CMakeLists.txt | 24 + utils/Log/include/Log.h | 112 + utils/Log/src/ILog.cpp | 32 + utils/Log/src/ILog.h | 48 + utils/Log/src/ILogMakePtr.cpp | 19 + utils/Log/src/ILogMakePtr.h | 25 + utils/Log/src/Log.cpp | 109 + utils/Log/src/LogCapture.cpp | 81 + utils/Log/src/LogCapture.h | 31 + utils/Log/src/LogEasylogging.cpp | 89 + utils/Log/src/LogEasylogging.h | 24 + utils/Log/src/LogImpl.cpp | 9 + utils/Log/src/LogImpl.h | 12 + utils/Log/src/easyloggingpp/README.txt | 9 + .../Log/src/easyloggingpp/default-logger.conf | 25 + utils/Log/src/easyloggingpp/easylogging++.cc | 3122 +++++++++++ utils/Log/src/easyloggingpp/easylogging++.h | 4580 +++++++++++++++++ utils/ReturnCode/CMakeLists.txt | 24 + utils/ReturnCode/include/ReturnCode.h | 28 + utils/ReturnCode/include/VReturnCode.h | 54 + utils/ReturnCode/src/ReturnCode.c | 35 + utils/ReturnCode/src/VReturnCode.cpp | 44 + 37 files changed, 9380 insertions(+), 164 deletions(-) create mode 100644 external/gtest/Makefile create mode 100644 external/gtest/build_gtest.sh create mode 100644 external/gtest/googletest-release-1.11.0.tar.gz create mode 100644 external/gtest/modify/CMakeList_gmock.txt create mode 100644 external/gtest/modify/CMakeList_gtest.txt create mode 100644 test/CMakeLists.txt create mode 100644 test/utils/CMakeLists.txt create mode 100644 test/utils/ReturnCode/CMakeLists.txt create mode 100644 test/utils/ReturnCode/mainTest.cpp create mode 100644 test/utils/ReturnCode/src/ReturnCodeTest.cpp create mode 100644 utils/CMakeLists.txt create mode 100644 utils/Log/CMakeLists.txt create mode 100644 utils/Log/include/Log.h create mode 100644 utils/Log/src/ILog.cpp create mode 100644 utils/Log/src/ILog.h create mode 100644 utils/Log/src/ILogMakePtr.cpp create mode 100644 utils/Log/src/ILogMakePtr.h create mode 100644 utils/Log/src/Log.cpp create mode 100644 utils/Log/src/LogCapture.cpp create mode 100644 utils/Log/src/LogCapture.h create mode 100644 utils/Log/src/LogEasylogging.cpp create mode 100644 utils/Log/src/LogEasylogging.h create mode 100644 utils/Log/src/LogImpl.cpp create mode 100644 utils/Log/src/LogImpl.h create mode 100644 utils/Log/src/easyloggingpp/README.txt create mode 100644 utils/Log/src/easyloggingpp/default-logger.conf create mode 100644 utils/Log/src/easyloggingpp/easylogging++.cc create mode 100644 utils/Log/src/easyloggingpp/easylogging++.h create mode 100644 utils/ReturnCode/CMakeLists.txt create mode 100644 utils/ReturnCode/include/ReturnCode.h create mode 100644 utils/ReturnCode/include/VReturnCode.h create mode 100644 utils/ReturnCode/src/ReturnCode.c create mode 100644 utils/ReturnCode/src/VReturnCode.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ad5b3ef1..8fc564b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,9 +46,10 @@ if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX}) endif() #添加编译目录 -add_subdirectory(application) -add_subdirectory(component) -add_subdirectory(hal) +# add_subdirectory(application) +# add_subdirectory(component) +# add_subdirectory(hal) +add_subdirectory(utils) add_subdirectory(test) diff --git a/build/global_config.cmake b/build/global_config.cmake index a6bed9ce..5f614a66 100644 --- a/build/global_config.cmake +++ b/build/global_config.cmake @@ -11,6 +11,7 @@ set(TEST_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/out/test") set(PROJECT_ROOT_PATH "${CMAKE_SOURCE_DIR}") set(APPLICATION_SOURCE_PATH "${CMAKE_SOURCE_DIR}/application") set(COMPONENT_SOURCE_PATH "${CMAKE_SOURCE_DIR}/component") +set(UTILS_SOURCE_PATH "${CMAKE_SOURCE_DIR}/utils") set(HAL_SOURCE_PATH "${CMAKE_SOURCE_DIR}/hal") set(TEST_SOURCE_PATH "${CMAKE_SOURCE_DIR}/test") set(EXTERNAL_SOURCE_PATH "${CMAKE_SOURCE_DIR}/external") diff --git a/doc/cmake_exploitReport.md b/doc/cmake_exploitReport.md index e664c6a5..6d2a630c 100644 --- a/doc/cmake_exploitReport.md +++ b/doc/cmake_exploitReport.md @@ -1,29 +1,29 @@ -# 1.cmake开发报告 - -## 1.1 前言 -该篇md用于ipc项目下log功能的cmakelist的开发报告,以阐述其功能和组成。 - -## 1.2 功能介绍 -* 设置库文件输出路径:`set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})`. -该语句用于设置该功能的静态库的生成路径,其中`${LIBS_OUTPUT_PATH}`在/build/cmake/global_config.cmake被定义在项目根目录的/out/libs/。 - -* 添加实现功能的文件目录:`include_directories(./)`. -该语句旨在向编译器告知该功能的实现文件和头文件的所在位置。 - -* 添加功能目录到搜索路径:`set(CMAKE_AUTOMOC ON);set(CMAKE_INCLUDE_CURRENT_DIR ON)` -这些 CMake 命令支持自动处理 Qt moc(元对象编译器),并将当前目录设置为包含在包含文件的搜索路径中;在构建过程中自动运行Qt moc编译器,用于包含Q_OBJECT宏的任何源文件。这对于为信号和插槽生成必要的C++代码是必需的;该选项将当前源目录添加到包含文件的搜索路径中。这允许构建系统查找与正在编译的源文件位于同一目录中的头文件。 - -* 收集、生成头文件列表:`file(GLOB_RECURSE HEADER_FILES "*.h")` -该语句的功能是搜索当前目录及其子目录中扩展名为 .h 的所有文件。生成的文件列表存储在 HEADER_FILES 变量中。 - -* 收集源文件列表:`aux_source_directory(. SRC_FILES)` -在本语句中,aux_source_directory(.SRC_FILES) 从当前目录(由 .) 及其子目录中收集所有源文件(例如,.cpp 个文件),生成的文件列表存储在 SRC_FILES 变量中。 - -* 添加编译器标志和定义到当前目录及其子目录:`add_definitions("-fexceptions")` -添加编译器标志`-fexceptions`以在代码中启用异常处理。此标志告诉编译器生成支持捕获和引发异常的代码。通过使用 add_definitions(),可以将特定的编译器标志或定义全局应用于项目或特定源文件。 - -* 创建静态库目标:`add_library(xlog STATIC ${SRC_FILES} ${HEADER_FILES})` -在这种情况下,本语句使用提供的源文件和头文件列表创建一个名为“xlog”的静态库目标;`STATIC`关键字指定库将构建为静态库,这意味着库代码将在编译时直接链接到最终可执行文件中;`${SRC_FILES}`变量包含应编译并链接到库中的源文件(通常.cpp文件)的列表。${HEADER_FILES} 变量包含头文件(通常为 .h 文件)的列表,这些文件定义库使用的接口和声明。 - -## 1.3 总结 -该篇cmakelists.txt的主要用途是对ipc项目下xlog功能的显现文件的编译和汇总。 +# 1.cmake开发报告 + +## 1.1 前言 +该篇md用于ipc项目下log功能的cmakelist的开发报告,以阐述其功能和组成。 + +## 1.2 功能介绍 +* 设置库文件输出路径:`set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})`. +该语句用于设置该功能的静态库的生成路径,其中`${LIBS_OUTPUT_PATH}`在/build/cmake/global_config.cmake被定义在项目根目录的/out/libs/。 + +* 添加实现功能的文件目录:`include_directories(./)`. +该语句旨在向编译器告知该功能的实现文件和头文件的所在位置。 + +* 添加功能目录到搜索路径:`set(CMAKE_AUTOMOC ON);set(CMAKE_INCLUDE_CURRENT_DIR ON)` +这些 CMake 命令支持自动处理 Qt moc(元对象编译器),并将当前目录设置为包含在包含文件的搜索路径中;在构建过程中自动运行Qt moc编译器,用于包含Q_OBJECT宏的任何源文件。这对于为信号和插槽生成必要的C++代码是必需的;该选项将当前源目录添加到包含文件的搜索路径中。这允许构建系统查找与正在编译的源文件位于同一目录中的头文件。 + +* 收集、生成头文件列表:`file(GLOB_RECURSE HEADER_FILES "*.h")` +该语句的功能是搜索当前目录及其子目录中扩展名为 .h 的所有文件。生成的文件列表存储在 HEADER_FILES 变量中。 + +* 收集源文件列表:`aux_source_directory(. SRC_FILES)` +在本语句中,aux_source_directory(.SRC_FILES) 从当前目录(由 .) 及其子目录中收集所有源文件(例如,.cpp 个文件),生成的文件列表存储在 SRC_FILES 变量中。 + +* 添加编译器标志和定义到当前目录及其子目录:`add_definitions("-fexceptions")` +添加编译器标志`-fexceptions`以在代码中启用异常处理。此标志告诉编译器生成支持捕获和引发异常的代码。通过使用 add_definitions(),可以将特定的编译器标志或定义全局应用于项目或特定源文件。 + +* 创建静态库目标:`add_library(xlog STATIC ${SRC_FILES} ${HEADER_FILES})` +在这种情况下,本语句使用提供的源文件和头文件列表创建一个名为“xlog”的静态库目标;`STATIC`关键字指定库将构建为静态库,这意味着库代码将在编译时直接链接到最终可执行文件中;`${SRC_FILES}`变量包含应编译并链接到库中的源文件(通常.cpp文件)的列表。${HEADER_FILES} 变量包含头文件(通常为 .h 文件)的列表,这些文件定义库使用的接口和声明。 + +## 1.3 总结 +该篇cmakelists.txt的主要用途是对ipc项目下xlog功能的显现文件的编译和汇总。 diff --git a/doc/design.md b/doc/design.md index 33dc8221..c3ede043 100644 --- a/doc/design.md +++ b/doc/design.md @@ -1,132 +1,137 @@ -# 1. 设计文档 - -## 1.1. 产品概述 - -## 1.2. 结构设计 -1. 迷彩外观; -2. 抽屉式电池箱组; -3. 捆绑/相机支架安装方式; -4. 案件翻盖保护; -5. 可拓展4G模块; -6. 户外防水; - -## 1.3. 硬件设计 - -### 1.3.1. 关键外设 -1. 摄像头; -2. PIR sensor; -3. IR leds; -4. 电池(箱体); -5. 启动模式拨键(三键); -6. 按键:同步/复位/格式化; -7. SD card; -8. usb接口; -9. NFC(绑定APP); -10. 光感传感器:白天/黑夜; -11. 指示灯:设备状态/SD卡状态/电量/无线信号灯/账号状态; - -### 1.3.2. 生产测试/研发调试 - -## 1.4. 软件设计 - -### 1.4.1. 多态单例设计模式 -   多态单例模式包含两部分:抽象接口 + 抽象接口实例,代码基于抽象接口存在,业务基于抽象接口实例存在。 - -#### 1.4.1.1. 多态单例图示 -   下述图示分别为:类图 / 依赖关系图 / 编译链接关系图 -```mermaid -classDiagram - APP --> AbstractInterface:使用 - AbstractInterface <|.. Instance:实现 - 应用 --> 抽象接口库:依赖 - 抽象接口库 ..> 实例库:依赖 - main线程 --> 抽象接口代码库:链接 - main线程 --> 实例代码库:链接 -``` -#### 1.4.1.2. 多态单例模块使用时序图 -   在使用多态单例设计模式开发功能模块时,使用统一的命名规则: -* 抽象接口命名:xxx + Abstract,例如:libLogAbstract.a; -* 实例库命名:xxx + 具体实例名称,例如:libLogEasylogging.a; - -**调用关系如下图** -```mermaid -sequenceDiagram -User ->> +libLogAbstract.a:调用抽象接口 -libLogAbstract.a --> +libLogEasylogging.a:实际调用实例接口 -libLogEasylogging.a --> -libLogAbstract.a:return -libLogAbstract.a -->> -User:return -``` -**只有main函数实际调用实例库的实例化接口时,log功能才会生效。** - -#### 1.4.1.3. 多态单例总结: -1. 应用代码只使用抽象接口,禁止直接依赖实例代码; -2. 应用代码只有在main线程初始化时实例化实例模块即可; -3. 多态单例模块由两个库组成,一个是抽象接口库,一个是实例代码库,支持静态多态和动态多态; - - -### 1.4.2. 根据软件模块作用域分层 - -#### 1.4.2.1. 应用层(application) - -##### 1.4.2.1.1. 应用层概述 -   应用层负责处理产品级的复杂业务关系,是产品功能的直接体现,应用层模块全部使用C++接口的多态单例模式设计,各模块之间可以互相调用接口,应用层各库可以随意任意调用中间件或者工具类接口。 - -##### 1.4.2.1.2. 网络服务模块 - -###### 1.4.2.1.2.1. 网络服务概述 -   根据产品联网属性,网络服务模块分为不联网 / 联网(B端)/ 联网(自研)三个多态属性。联网时,IPC的图片 / 视频资源通过网络服务器进行管理。 - -1. 不联网版本:网络服务模块不实例化即可; -2. 联网(B端):媒体资源由三方服务器管理; -3. 联网(自研):媒体资源由自研服务器管理; - -###### 1.4.2.1.2.2. 网络服务多态设计模式 -   通过构建配置文件选择需要实例化的网络服务模块代码。 - -#### 1.4.2.2. 中间件(middleware) - -##### 1.4.2.2.1. 中间件概述 -   一些相对中性的业务功能库,这些库可以提供给不同的产品需求使用,在应用层不同的调用方式可实现不同的产品功能。中间件只能被应用层调用或者向下调用适配层或者调用工具库,中间件各模块之间不能互相调用。中间件库接口可以使用C或者C++接口。 - -##### 1.4.2.2.2. 外设管理模块 - -   应用层唯一的硬件外设接口库。包含灯 / 按键 / GPIO / SD卡等。 - -##### 1.4.2.2.3. 相机管理模块 - -   应用层唯一的摄像头接口库。 - -##### 1.4.2.2.4. MCU管理模块 -   单片机通信接口库。 - -#### 1.4.2.3. 适配层(hal) - -#### 1.4.2.4. 工具库(utils) - -##### 1.4.2.4.1. 工具库概述 -   工具库是功能单一的不依赖任何三方库的独立库(日志库和返回码管理库除外),必须提供C语言接口,内部实现不限于C或者C++。工具类库可以被任意的其它模块调用,特别指hal/component/application三大层级。 - -##### 1.4.2.4.2. 日志库 - -###### 1.4.2.4.2.1. 日志库概述 -   提供程序的日志管理功能,含日志的实时打印/保存/跟踪(实时上传云端)。 - -###### 1.4.2.4.2.2. 日志库设计模式 -   C语言接口的多态单例模式,可动态/静态加载多态实例。 - -###### 1.4.2.4.2.3. 日志库启动 -   日志库是否启用一般来讲是dubug版本启用日志功能,release版本禁用日志功能,考虑到release版本的维护问题,标准启动时,main线程在启动时使用dlopen系列函数去加载日志库(多态),特殊版本仍可在main线程加载日志库后,二次实例化日志库(多态)来实现不同的日志功能。 - -1. 标准流程:main线程加载sd卡动态库,如有即可动态实现日志功能,正常出货sd卡不带日志库,此时没有日志功能; -2. 可以通过配置参数决定是否启用日志; -3. sd卡的日志动态,根据实际售后维护,可以是实时打印log/保存本地log/云log的多态实例库; -4. 多态日志功能,可以忽略debug和release版本的区别,只发布一个版本即可; - -##### 1.4.2.4.3. 返回码管理库 - -###### 1.4.2.4.3.1. 返回码管理库概述 -   提供整个应用程序的返回码管理功能,例如:打印返回码的字符串含义。提供C语言接口,内部实现不限于C或者C++,形成项目内部唯一返回码标准。 - -1. 创建返回码操作“句柄”; -2. 打印返回码/获取返回码(字符串); -3. 不同的模块可继承实现各自的返回码处理接口; \ No newline at end of file +# 1. 设计文档 + +## 1.1. 产品概述 + +## 1.2. 结构设计 +1. 迷彩外观; +2. 抽屉式电池箱组; +3. 捆绑/相机支架安装方式; +4. 案件翻盖保护; +5. 可拓展4G模块; +6. 户外防水; + +## 1.3. 硬件设计 + +### 1.3.1. 关键外设 +1. 摄像头; +2. PIR sensor; +3. IR leds; +4. 电池(箱体); +5. 启动模式拨键(三键); +6. 按键:同步/复位/格式化; +7. SD card; +8. usb接口; +9. NFC(绑定APP); +10. 光感传感器:白天/黑夜; +11. 指示灯:设备状态/SD卡状态/电量/无线信号灯/账号状态; + +### 1.3.2. 生产测试/研发调试 + +## 1.4. 软件设计 + +### 1.4.1. 多态单例设计模式 +   多态单例模式包含两部分:抽象接口 + 抽象接口实例,代码基于抽象接口存在,业务基于抽象接口实例存在。 + +#### 1.4.1.1. 多态单例图示 +   下述图示分别为:类图 / 依赖关系图 / 编译链接关系图 +```mermaid +classDiagram + APP --> AbstractInterface:使用 + AbstractInterface <|.. Instance:实现 + 应用 --> 抽象接口库:依赖 + 抽象接口库 ..> 实例库:依赖 + main线程 --> 抽象接口代码库:链接 + main线程 --> 实例代码库:链接 +``` +#### 1.4.1.2. 多态单例模块使用时序图 +   在使用多态单例设计模式开发功能模块时,使用统一的命名规则: +* 抽象接口命名:xxx + Abstract,例如:libLogAbstract.a; +* 实例库命名:xxx + 具体实例名称,例如:libLogEasylogging.a; + +**调用关系如下图** +```mermaid +sequenceDiagram +User ->> +libLogAbstract.a:调用抽象接口 +libLogAbstract.a --> +libLogEasylogging.a:实际调用实例接口 +libLogEasylogging.a --> -libLogAbstract.a:return +libLogAbstract.a -->> -User:return +``` +**只有main函数实际调用实例库的实例化接口时,log功能才会生效。** + +#### 1.4.1.3. 多态单例总结: +1. 应用代码只使用抽象接口,禁止直接依赖实例代码; +2. 应用代码只有在main线程初始化时实例化实例模块即可; +3. 多态单例模块由两个库组成,一个是抽象接口库,一个是实例代码库,支持静态多态和动态多态; + + +### 1.4.2. 根据软件模块作用域分层 + +#### 1.4.2.1. 应用层(application) + +##### 1.4.2.1.1. 应用层概述 +   应用层负责处理产品级的复杂业务关系,是产品功能的直接体现,应用层模块全部使用C++接口的多态单例模式设计,各模块之间可以互相调用接口,应用层各库可以随意任意调用中间件或者工具类接口。 + +##### 1.4.2.1.2. 网络服务模块 + +###### 1.4.2.1.2.1. 网络服务概述 +   根据产品联网属性,网络服务模块分为不联网 / 联网(B端)/ 联网(自研)三个多态属性。联网时,IPC的图片 / 视频资源通过网络服务器进行管理。 + +1. 不联网版本:网络服务模块不实例化即可; +2. 联网(B端):媒体资源由三方服务器管理; +3. 联网(自研):媒体资源由自研服务器管理; + +###### 1.4.2.1.2.2. 网络服务多态设计模式 +   通过构建配置文件选择需要实例化的网络服务模块代码。 + +#### 1.4.2.2. 中间件(middleware) + +##### 1.4.2.2.1. 中间件概述 +   一些相对中性的业务功能库,这些库可以提供给不同的产品需求使用,在应用层不同的调用方式可实现不同的产品功能。中间件只能被应用层调用或者向下调用适配层或者调用工具库,中间件各模块之间不能互相调用。中间件库接口可以使用C或者C++接口。 + +##### 1.4.2.2.2. 外设管理模块 + +   应用层唯一的硬件外设接口库。包含灯 / 按键 / GPIO / SD卡等。 + +##### 1.4.2.2.3. 相机管理模块 + +   应用层唯一的摄像头接口库。 + +##### 1.4.2.2.4. MCU管理模块 +   单片机通信接口库。 + +#### 1.4.2.3. 适配层(hal) + +#### 1.4.2.4. 工具库(utils) + +##### 1.4.2.4.1. 工具库概述 +   工具库是功能单一的不依赖任何三方库的独立库(日志库和返回码管理库除外),必须提供C语言接口,内部实现不限于C或者C++。工具类库可以被任意的其它模块调用,特别指hal/component/application三大层级。 + +##### 1.4.2.4.2. 日志库 + +###### 1.4.2.4.2.1. 日志库概述 +   提供程序的日志管理功能,含日志的实时打印/保存/跟踪(实时上传云端)。 + +###### 1.4.2.4.2.2. 日志库设计模式 +   C语言接口的多态单例模式,可动态/静态加载多态实例。 + +###### 1.4.2.4.2.3. 日志库启动 +   日志库是否启用一般来讲是dubug版本启用日志功能,release版本禁用日志功能,考虑到release版本的维护问题,标准启动时,main线程在启动时使用dlopen系列函数去加载日志库(多态),特殊版本仍可在main线程加载日志库后,二次实例化日志库(多态)来实现不同的日志功能。 + +1. 标准流程:main线程加载sd卡动态库,如有即可动态实现日志功能,正常出货sd卡不带日志库,此时没有日志功能; +2. 可以通过配置参数决定是否启用日志; +3. sd卡的日志动态,根据实际售后维护,可以是实时打印log/保存本地log/云log的多态实例库; +4. 多态日志功能,可以忽略debug和release版本的区别,只发布一个版本即可; + +##### 1.4.2.4.3. 返回码管理库 + +###### 1.4.2.4.3.1. 返回码管理库概述 +   提供整个应用程序的返回码管理功能,例如:打印返回码的字符串含义。提供C语言接口,纯C语言开发的模块,形成项目内部唯一返回码标准。 + +1. 创建返回码操作“句柄”; +2. 打印返回码/获取返回码(字符串); +3. 不同的模块可继承实现各自的返回码处理接口; + +##### 1.4.2.4.4. 系统标准接口库 +   对系统标准接口的套壳封装,主要是为了对系统标准打桩满足测试需求。 + +   使用普通的C语言接口封装即可,通过使用gcc编译参数在Linux x86系统中满足打桩需求,在交叉编译(担心工具链兼容问题)测试程序中无法对系统标准接口进行打桩。 \ No newline at end of file diff --git a/external/gtest/Makefile b/external/gtest/Makefile new file mode 100644 index 00000000..fe2f33f4 --- /dev/null +++ b/external/gtest/Makefile @@ -0,0 +1,8 @@ +all: + ./build_gtest.sh +clean: + @rm -rf googletest-release-1.11.0/googlemock/CMakeCache.txt \ + googletest-release-1.11.0/googlemock/CMakeFiles/ \ + googletest-release-1.11.0/googlemock/cmake_install.cmake \ + googletest-release-1.11.0/googlemock/Makefile \ + googletest-release-1.11.0/googlemock/lib \ No newline at end of file diff --git a/external/gtest/build_gtest.sh b/external/gtest/build_gtest.sh new file mode 100644 index 00000000..6f120fd6 --- /dev/null +++ b/external/gtest/build_gtest.sh @@ -0,0 +1,35 @@ +#!/bin/bash +#编译gtest库 +platform=$1 +CMAKE_SOURCE_DIR=$2 +echo "Compile gtest, platform = $platform, cmake source dir = $CMAKE_SOURCE_DIR." +export ROOT_PATH=$PWD +if [ ! -d "./googletest-release-1.11.0" ];then + echo "tar zxvf googletest-release-1.11.0.tar.gz" + tar zxvf googletest-release-1.11.0.tar.gz + cp ./modify/CMakeList_gmock.txt ./googletest-release-1.11.0/googlemock/CMakeLists.txt + cp ./modify/CMakeList_gtest.txt ./googletest-release-1.11.0/googletest/CMakeLists.txt +fi +if [ ! -f "./googletest-release-1.11.0/googlemock/lib/libgtest.a" ] || [ ! -f "./googletest-release-1.11.0/googlemock/lib/libgmock.a" ];then + echo "make gtest" + cd ./googletest-release-1.11.0/googlemock/ + rm CMakeCache.txt CMakeFiles/ cmake_install.cmake Makefile lib/ -rf + case $platform in + "linux") + echo "==Compile linux." + cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_SOURCE_DIR/build/cmake/toolchain/linux.toolchain.cmake . + make + ;; + "sigmastart_333DE") + echo "==Compile sigmastart_333DE." + cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_SOURCE_DIR/333DE/build/cmake/toolchain/sigmastart_333DE.toolchain.cmake . + make + ;; + *) + echo "Compile gtest failed." + ;; + esac +fi + +cd $ROOT_PATH +echo "Exit build_gtest.sh." \ No newline at end of file diff --git a/external/gtest/googletest-release-1.11.0.tar.gz b/external/gtest/googletest-release-1.11.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8163d74bfd6f44a3bcda0db06bad821c8774fb1c GIT binary patch literal 886330 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

a{mt?s~Y-b$jN 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" + "$/${CMAKE_INSTALL_INCLUDEDIR}>") + target_include_directories(gmock_main SYSTEM INTERFACE + "$" + "$/${CMAKE_INSTALL_INCLUDEDIR}>") +endif() + +######################################################################## +# +# Install rules +install_project(gmock gmock_main) + +######################################################################## +# +# Google Mock's own tests. +# +# You can skip this section if you aren't interested in testing +# Google Mock itself. +# +# The tests are not built by default. To build them, set the +# gmock_build_tests option to ON. You can do it by running ccmake +# or specifying the -Dgmock_build_tests=ON flag when running cmake. + +if (gmock_build_tests) + # This must be set in the root directory for the tests to be run by + # 'make test' or ctest. + enable_testing() + + if (MINGW OR CYGWIN) + if (CMAKE_VERSION VERSION_LESS "2.8.12") + add_compile_options("-Wa,-mbig-obj") + else() + add_definitions("-Wa,-mbig-obj") + endif() + endif() + + ############################################################ + # C++ tests built with standard compiler flags. + + cxx_test(gmock-actions_test gmock_main) + cxx_test(gmock-cardinalities_test gmock_main) + cxx_test(gmock_ex_test gmock_main) + cxx_test(gmock-function-mocker_test gmock_main) + cxx_test(gmock-internal-utils_test gmock_main) + cxx_test(gmock-matchers_test gmock_main) + cxx_test(gmock-more-actions_test gmock_main) + cxx_test(gmock-nice-strict_test gmock_main) + cxx_test(gmock-port_test gmock_main) + cxx_test(gmock-spec-builders_test gmock_main) + cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc) + cxx_test(gmock_test gmock_main) + + if (DEFINED GTEST_HAS_PTHREAD) + cxx_test(gmock_stress_test gmock) + endif() + + # gmock_all_test is commented to save time building and running tests. + # Uncomment if necessary. + # cxx_test(gmock_all_test gmock_main) + + ############################################################ + # C++ tests built with non-standard compiler flags. + + if (MSVC) + cxx_library(gmock_main_no_exception "${cxx_no_exception}" + "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + + cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" + "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + + else() + cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc) + target_link_libraries(gmock_main_no_exception PUBLIC gmock) + + cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc) + target_link_libraries(gmock_main_no_rtti PUBLIC gmock) + endif() + cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}" + gmock_main_no_exception test/gmock-more-actions_test.cc) + + cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}" + gmock_main_no_rtti test/gmock-spec-builders_test.cc) + + cxx_shared_library(shared_gmock_main "${cxx_default}" + "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + + # Tests that a binary can be built with Google Mock as a shared library. On + # some system configurations, it may not possible to run the binary without + # knowing more details about the system configurations. We do not try to run + # this binary. To get a more robust shared library coverage, configure with + # -DBUILD_SHARED_LIBS=ON. + cxx_executable_with_flags(shared_gmock_test_ "${cxx_default}" + shared_gmock_main test/gmock-spec-builders_test.cc) + set_target_properties(shared_gmock_test_ + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + + ############################################################ + # Python tests. + + cxx_executable(gmock_leak_test_ test gmock_main) + py_test(gmock_leak_test) + + cxx_executable(gmock_output_test_ test gmock) + py_test(gmock_output_test) +endif() diff --git a/external/gtest/modify/CMakeList_gtest.txt b/external/gtest/modify/CMakeList_gtest.txt new file mode 100644 index 00000000..ca19c818 --- /dev/null +++ b/external/gtest/modify/CMakeList_gtest.txt @@ -0,0 +1,329 @@ +######################################################################## +# Note: CMake support is community-based. The maintainers do not use CMake +# internally. +# +# CMake build script for Google Test. +# +# To run the tests for Google Test itself on Linux, use 'make test' or +# ctest. You can select which tests to run using 'ctest -R regex'. +# For more options, run 'ctest --help'. + +# When other libraries are using a shared version of runtime libraries, +# Google Test also has to use one. +option( + gtest_force_shared_crt + "Use shared (DLL) run-time lib even when Google Test is built as static lib." + OFF) + +option(gtest_build_tests "Build all of gtest's own tests." OFF) + +option(gtest_build_samples "Build gtest's sample programs." OFF) + +option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF) + +option( + gtest_hide_internal_symbols + "Build gtest with internal symbols hidden in shared libraries." + OFF) + +# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build(). +include(cmake/hermetic_build.cmake OPTIONAL) + +if (COMMAND pre_project_set_up_hermetic_build) + pre_project_set_up_hermetic_build() +endif() + +######################################################################## +# +# Project-wide settings + +# Name of the project. +# +# CMake files in this project can refer to the root source directory +# as ${gtest_SOURCE_DIR} and to the root binary directory as +# ${gtest_BINARY_DIR}. +# Language "C" is required for find_package(Threads). + +# Project version: + +if (CMAKE_VERSION VERSION_LESS 3.0) + project(gtest CXX C) + set(PROJECT_VERSION ${GOOGLETEST_VERSION}) +else() + cmake_policy(SET CMP0048 NEW) + project(gtest VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C) +endif() +cmake_minimum_required(VERSION 2.8.12) + +#交叉编译工具链 +#set(CMAKE_SYSTEM_NAME Linux) +#set(CMAKE_SYSTEM_PROCESSOR arm) +#set(CMAKE_C_COMPILER /home/beal.wu/sip/ssd20x_awtk/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc) +#set(CMAKE_CXX_COMPILER /home/beal.wu/sip/ssd20x_awtk/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++) + +if (POLICY CMP0063) # Visibility + cmake_policy(SET CMP0063 NEW) +endif (POLICY CMP0063) + +if (COMMAND set_up_hermetic_build) + set_up_hermetic_build() +endif() + +# These commands only run if this is the main project +if(CMAKE_PROJECT_NAME STREQUAL "gtest" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution") + + # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to + # make it prominent in the GUI. + option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF) + +else() + + mark_as_advanced( + gtest_force_shared_crt + gtest_build_tests + gtest_build_samples + gtest_disable_pthreads + gtest_hide_internal_symbols) + +endif() + + +if (gtest_hide_internal_symbols) + set(CMAKE_CXX_VISIBILITY_PRESET hidden) + set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) +endif() + +# Define helper functions and macros used by Google Test. +include(cmake/internal_utils.cmake) + +config_compiler_and_linker() # Defined in internal_utils.cmake. + +# Needed to set the namespace for both the export targets and the +# alias libraries +set(cmake_package_name GTest CACHE INTERNAL "") + +# Create the CMake package file descriptors. +if (INSTALL_GTEST) + include(CMakePackageConfigHelpers) + set(targets_export_name ${cmake_package_name}Targets CACHE INTERNAL "") + set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated" CACHE INTERNAL "") + set(cmake_files_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${cmake_package_name}") + set(version_file "${generated_dir}/${cmake_package_name}ConfigVersion.cmake") + write_basic_package_version_file(${version_file} VERSION ${GOOGLETEST_VERSION} COMPATIBILITY AnyNewerVersion) + install(EXPORT ${targets_export_name} + NAMESPACE ${cmake_package_name}:: + DESTINATION ${cmake_files_install_dir}) + set(config_file "${generated_dir}/${cmake_package_name}Config.cmake") + configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in" + "${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir}) + install(FILES ${version_file} ${config_file} + DESTINATION ${cmake_files_install_dir}) +endif() + +# Where Google Test's .h files can be found. +set(gtest_build_include_dirs + "${gtest_SOURCE_DIR}/include" + "${gtest_SOURCE_DIR}") +include_directories(${gtest_build_include_dirs}) + +######################################################################## +# +# Defines the gtest & gtest_main libraries. User tests should link +# with one of them. + +# Google Test libraries. We build them using more strict warnings than what +# are used for other targets, to ensure that gtest can be compiled by a user +# aggressive about warnings. +cxx_library(gtest "${cxx_strict}" src/gtest-all.cc) +#set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION}) +cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc) +#set_target_properties(gtest_main PROPERTIES VERSION ${GOOGLETEST_VERSION}) +# If the CMake version supports it, attach header directory information +# to the targets for when we are part of a parent build (ie being pulled +# in via add_subdirectory() rather than being a standalone build). +if (DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11") + target_include_directories(gtest SYSTEM INTERFACE + "$" + "$/${CMAKE_INSTALL_INCLUDEDIR}>") + target_include_directories(gtest_main SYSTEM INTERFACE + "$" + "$/${CMAKE_INSTALL_INCLUDEDIR}>") +endif() +target_link_libraries(gtest_main PUBLIC gtest) + +######################################################################## +# +# Install rules +install_project(gtest gtest_main) + +######################################################################## +# +# Samples on how to link user tests with gtest or gtest_main. +# +# They are not built by default. To build them, set the +# gtest_build_samples option to ON. You can do it by running ccmake +# or specifying the -Dgtest_build_samples=ON flag when running cmake. + +if (gtest_build_samples) + cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc) + cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc) + cxx_executable(sample3_unittest samples gtest_main) + cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc) + cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc) + cxx_executable(sample6_unittest samples gtest_main) + cxx_executable(sample7_unittest samples gtest_main) + cxx_executable(sample8_unittest samples gtest_main) + cxx_executable(sample9_unittest samples gtest) + cxx_executable(sample10_unittest samples gtest) +endif() + +######################################################################## +# +# Google Test's own tests. +# +# You can skip this section if you aren't interested in testing +# Google Test itself. +# +# The tests are not built by default. To build them, set the +# gtest_build_tests option to ON. You can do it by running ccmake +# or specifying the -Dgtest_build_tests=ON flag when running cmake. + +if (gtest_build_tests) + # This must be set in the root directory for the tests to be run by + # 'make test' or ctest. + enable_testing() + + ############################################################ + # C++ tests built with standard compiler flags. + + cxx_test(googletest-death-test-test gtest_main) + cxx_test(gtest_environment_test gtest) + cxx_test(googletest-filepath-test gtest_main) + cxx_test(googletest-listener-test gtest_main) + cxx_test(gtest_main_unittest gtest_main) + cxx_test(googletest-message-test gtest_main) + cxx_test(gtest_no_test_unittest gtest) + cxx_test(googletest-options-test gtest_main) + cxx_test(googletest-param-test-test gtest + test/googletest-param-test2-test.cc) + cxx_test(googletest-port-test gtest_main) + cxx_test(gtest_pred_impl_unittest gtest_main) + cxx_test(gtest_premature_exit_test gtest + test/gtest_premature_exit_test.cc) + cxx_test(googletest-printers-test gtest_main) + cxx_test(gtest_prod_test gtest_main + test/production.cc) + cxx_test(gtest_repeat_test gtest) + cxx_test(gtest_sole_header_test gtest_main) + cxx_test(gtest_stress_test gtest) + cxx_test(googletest-test-part-test gtest_main) + cxx_test(gtest_throw_on_failure_ex_test gtest) + cxx_test(gtest-typed-test_test gtest_main + test/gtest-typed-test2_test.cc) + cxx_test(gtest_unittest gtest_main) + cxx_test(gtest-unittest-api_test gtest) + cxx_test(gtest_skip_in_environment_setup_test gtest_main) + cxx_test(gtest_skip_test gtest_main) + + ############################################################ + # C++ tests built with non-standard compiler flags. + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_library(gtest_no_exception "${cxx_no_exception}" + src/gtest-all.cc) + cxx_library(gtest_main_no_exception "${cxx_no_exception}" + src/gtest-all.cc src/gtest_main.cc) + endif() + cxx_library(gtest_main_no_rtti "${cxx_no_rtti}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_test_with_flags(gtest-death-test_ex_nocatch_test + "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0" + gtest test/googletest-death-test_ex_test.cc) + cxx_test_with_flags(gtest-death-test_ex_catch_test + "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1" + gtest test/googletest-death-test_ex_test.cc) + + cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}" + gtest_main_no_rtti test/gtest_unittest.cc) + + cxx_shared_library(gtest_dll "${cxx_default}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}" + gtest_dll test/gtest_all_test.cc) + set_target_properties(gtest_dll_test_ + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + + ############################################################ + # Python tests. + + cxx_executable(googletest-break-on-failure-unittest_ test gtest) + py_test(googletest-break-on-failure-unittest) + + py_test(gtest_skip_check_output_test) + py_test(gtest_skip_environment_check_output_test) + + # Visual Studio .NET 2003 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) # 1310 is Visual Studio .NET 2003 + cxx_executable_with_flags( + googletest-catch-exceptions-no-ex-test_ + "${cxx_no_exception}" + gtest_main_no_exception + test/googletest-catch-exceptions-test_.cc) + endif() + + cxx_executable_with_flags( + googletest-catch-exceptions-ex-test_ + "${cxx_exception}" + gtest_main + test/googletest-catch-exceptions-test_.cc) + py_test(googletest-catch-exceptions-test) + + cxx_executable(googletest-color-test_ test gtest) + py_test(googletest-color-test) + + cxx_executable(googletest-env-var-test_ test gtest) + py_test(googletest-env-var-test) + + cxx_executable(googletest-filter-unittest_ test gtest) + py_test(googletest-filter-unittest) + + cxx_executable(gtest_help_test_ test gtest_main) + py_test(gtest_help_test) + + cxx_executable(googletest-list-tests-unittest_ test gtest) + py_test(googletest-list-tests-unittest) + + cxx_executable(googletest-output-test_ test gtest) + py_test(googletest-output-test --no_stacktrace_support) + + cxx_executable(googletest-shuffle-test_ test gtest) + py_test(googletest-shuffle-test) + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_executable(googletest-throw-on-failure-test_ test gtest_no_exception) + set_target_properties(googletest-throw-on-failure-test_ + PROPERTIES + COMPILE_FLAGS "${cxx_no_exception}") + py_test(googletest-throw-on-failure-test) + endif() + + cxx_executable(googletest-uninitialized-test_ test gtest) + py_test(googletest-uninitialized-test) + + cxx_executable(gtest_list_output_unittest_ test gtest) + py_test(gtest_list_output_unittest) + + cxx_executable(gtest_xml_outfile1_test_ test gtest_main) + cxx_executable(gtest_xml_outfile2_test_ test gtest_main) + py_test(gtest_xml_outfiles_test) + py_test(googletest-json-outfiles-test) + + cxx_executable(gtest_xml_output_unittest_ test gtest) + py_test(gtest_xml_output_unittest --no_stacktrace_support) + py_test(googletest-json-output-unittest --no_stacktrace_support) +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 00000000..a040023c --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,13 @@ + +# cmake_minimum_required(VERSION 2.8.0) +# Mock Linux api. +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_LINUX_MOCK}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TEST_LINUX_MOCK}") +# Compile gtest for test code. +execute_process(COMMAND sh build_gtest.sh ${TARGET_PLATFORM} ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/gtest/) +# add_subdirectory(test_utils) +# add_subdirectory(application) +# add_subdirectory(component) +add_subdirectory(utils) +# add_subdirectory(hal) + diff --git a/test/utils/CMakeLists.txt b/test/utils/CMakeLists.txt new file mode 100644 index 00000000..a93dc76e --- /dev/null +++ b/test/utils/CMakeLists.txt @@ -0,0 +1,6 @@ + +# cmake_minimum_required(VERSION 2.8.0) +#Compile gtest for test code. +add_subdirectory(ReturnCode) + + diff --git a/test/utils/ReturnCode/CMakeLists.txt b/test/utils/ReturnCode/CMakeLists.txt new file mode 100644 index 00000000..d5df4ce9 --- /dev/null +++ b/test/utils/ReturnCode/CMakeLists.txt @@ -0,0 +1,31 @@ +# include(${CMAKE_SOURCE_DIR}/build/independent_source.cmake) +set(EXECUTABLE_OUTPUT_PATH ${TEST_OUTPUT_PATH}/bin) + +include_directories( + ${UTILS_SOURCE_PATH}/ReturnCode/include + ${UTILS_SOURCE_PATH}/Log/include + ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include + ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include +) + +link_directories( + ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/lib + ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/lib + ${LIBS_OUTPUT_PATH} +) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +aux_source_directory(./ SRC_FILES) +aux_source_directory(./src SRC_FILES) + +set(TARGET_NAME ReturnCodeTest) +add_executable(${TARGET_NAME} ${SRC_FILES}) +target_link_libraries(${TARGET_NAME} gtest gmock pthread Log) +if(${COVERAGE_ON} MATCHES "true") + target_link_libraries(${TARGET_NAME} gcov) +endif() \ No newline at end of file diff --git a/test/utils/ReturnCode/mainTest.cpp b/test/utils/ReturnCode/mainTest.cpp new file mode 100644 index 00000000..fb1d91b4 --- /dev/null +++ b/test/utils/ReturnCode/mainTest.cpp @@ -0,0 +1,9 @@ +#include +#include +#include +#include +int main(int argc, char *argv[]) +{ + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/test/utils/ReturnCode/src/ReturnCodeTest.cpp b/test/utils/ReturnCode/src/ReturnCodeTest.cpp new file mode 100644 index 00000000..36a99c19 --- /dev/null +++ b/test/utils/ReturnCode/src/ReturnCodeTest.cpp @@ -0,0 +1,14 @@ +#include "ReturnCode.h" +#include "Log.h" +#include +#include +namespace ReturnCodeTest +{ + // ../out/test/bin/ReturnCodeTest --gtest_filter=ReturnCodeTest.Demo + TEST(ReturnCodeTest, Demo) + { + InitLog(LOG_EASYLOGGING, nullptr); + LogInfo("hello world.\n"); + UnInitLog(); + } +} \ No newline at end of file diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 00000000..e8914d0e --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1,4 @@ + +# cmake_minimum_required(VERSION 2.8.0) +add_subdirectory(ReturnCode) +add_subdirectory(Log) \ No newline at end of file diff --git a/utils/Log/CMakeLists.txt b/utils/Log/CMakeLists.txt new file mode 100644 index 00000000..df30e585 --- /dev/null +++ b/utils/Log/CMakeLists.txt @@ -0,0 +1,24 @@ + +include(${CMAKE_SOURCE_DIR}/build/global_config.cmake) +set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) +set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) + +include_directories( + ./src + ./include + ${UTILS_SOURCE_PATH}/Log/src/easyloggingpp +) +#do not rely on any other library +#link_directories( +#) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +aux_source_directory(./src SRC_FILES) +aux_source_directory(./src/easyloggingpp SRC_FILES) + +set(TARGET_NAME Log) +add_library(${TARGET_NAME} STATIC ${SRC_FILES}) + + diff --git a/utils/Log/include/Log.h b/utils/Log/include/Log.h new file mode 100644 index 00000000..d10e68ef --- /dev/null +++ b/utils/Log/include/Log.h @@ -0,0 +1,112 @@ +/** + * @brief + * The only one header file for the other modules to use log module. + */ +#ifndef LOG_H +#define LOG_H +#define LogVerbose(...) Log(__FUNCTION__, __LINE__, LOG_TYPE_VERBOSE, __VA_ARGS__) +#define LogDebug(...) Log(__FUNCTION__, __LINE__, LOG_TYPE_DEBUG, __VA_ARGS__) +#define LogInfo(...) Log(__FUNCTION__, __LINE__, LOG_TYPE_INFORMATION, __VA_ARGS__) +#define LogWarning(...) Log(__FUNCTION__, __LINE__, LOG_TYPE_WARNING, __VA_ARGS__) +#define LogError(...) Log(__FUNCTION__, __LINE__, LOG_TYPE_ERROR, __VA_ARGS__) +#define LogTrace(...) Log(__FUNCTION__, __LINE__, LOG_TYPE_TRACE, __VA_ARGS__) +// For test code, never using in release version. +// #define LogTestTips(...) TestTips(LOG_TYPE_TEST_TIPS, __VA_ARGS__) + +// TODO: +#if 1 // For wifi log, should delete finally. +#define LOGD(...) + +#define LOGI(...) + +#define LOGW(...) + +#define LOGE(...) + +#define LOGF(...) +#endif + +/** + * @brief + * log type. + */ +enum LogType +{ + LOG_TYPE_VERBOSE = 0, + LOG_TYPE_DEBUG, + LOG_TYPE_INFORMATION, + LOG_TYPE_WARNING, + LOG_TYPE_ERROR, + LOG_TYPE_TRACE, + LOG_TYPE_TEST_TIPS, + LOG_TYPE_END +}; +/** + * @brief + * instance type of log module. + */ +enum LogInstanceType +{ + LOG_SERIAL_PRINT = 0, // for serial print. + LOG_EASYLOGGING, // for easylogging++. + LOG_CAPTURE_LOG, // capture log to other who need it + LOG_INSTANCE_TYPE_END + +}; +/** + * @brief + * Log setting + */ +typedef struct LogSetting +{ + const char *fileName; // File name of saving log. + const char *maxSize; // Max size of saving log. + const int (*callback)(const char *); // + + const int (*callback_InFo)(const char *); + const int (*callback_Warning)(const char *); + const int (*callback_Error)(const char *); + const int (*callback_Debug)(const char *); + const int (*callback_Trace)(const char *); +} LogSetting; +/* +** Make sure we can call this stuff from C++. +*/ +#ifdef __cplusplus +extern "C" +{ +#endif + /** + * @brief + * Init what type of log to run, see LogInstanceType in this file. + * @param logInstanceType + * @param setting Setting of log module, See LogSetting. + * @return true + * @return false + */ + int InitLog(const int logInstanceType, const LogSetting *setting); + int UnInitLog(); + /** + * @brief + * Print log + * TODO: Crash will happen if print a string without '\0'. + * @param function + * @param line + * @param type + * @param format + * @param ... + * @return int + */ + int Log(const char *function, int line, int type, const char *format, ...); + /** + * @brief + * Only for test code. + * @param format + * @param ... + * @return const char* + */ + // const char *TestTips(int type, const char *format, ...); +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file diff --git a/utils/Log/src/ILog.cpp b/utils/Log/src/ILog.cpp new file mode 100644 index 00000000..a153496d --- /dev/null +++ b/utils/Log/src/ILog.cpp @@ -0,0 +1,32 @@ +#include "ILog.h" +#include +std::shared_ptr &ILog::GetInstance(std::shared_ptr *impl) +{ + static std::shared_ptr instance = std::make_shared(); + static bool instanceChanging = false; + if (impl && false == instanceChanging) + { + // Don't use std::mutex for runing faster. + // Sleep for difference thread to release instance. + instanceChanging = true; + //std::this_thread::sleep_for(std::chrono::milliseconds(100)); + if (instance.use_count() == 1) // bug? + { + instance->Log("Instance change succeed.\n"); + instance->UnInit(); + (*impl)->Init(); + instance = *impl; + } + else + { + instance->Log("[ error ] instance change failed, using by some one.\n"); + } + instanceChanging = false; + } + if (instanceChanging) + { + static std::shared_ptr tmporaryInstance = std::make_shared(); + return tmporaryInstance; + } + return instance; +} \ No newline at end of file diff --git a/utils/Log/src/ILog.h b/utils/Log/src/ILog.h new file mode 100644 index 00000000..f9102f3d --- /dev/null +++ b/utils/Log/src/ILog.h @@ -0,0 +1,48 @@ +#ifndef I_LOG_H +#define I_LOG_H +// #include "VReturnCode.h" +#include +#include +class ILog +{ +public: + /** + * @brief Get the Instance object + * Return reference for runing faster. Usage : ILog::GetInstance()->Init(); + * Don't use ILog like this: + * std::shared_ptr &log = ILog::GetInstance(); or std::shared_ptr log = ILog::GetInstance(); + * log->Log("Your log."); + * @param impl Change the instance. + * @return std::shared_ptr& + */ + static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); + ILog() = default; + virtual ~ILog() = default; + virtual bool Init() { return false; } + virtual bool UnInit() { return false; } + /** + * @brief + * If the Log module is working. + * @return true + * @return false + */ + virtual bool IsWorking() { return false; } + /** + * @brief + * Virtual log function. + * @param buff + * @return int + */ + virtual int Log(const char *buff) { return 0; } + + virtual int InFo(const char *buff) { return 0; } + + virtual int Warning(const char *buff) { return 0; } + + virtual int Error(const char *buff) { return 0; } + + virtual int Trace(const char *buff) { return 0; } + + virtual int Debug(const char *buff) { return 0; } +}; +#endif \ No newline at end of file diff --git a/utils/Log/src/ILogMakePtr.cpp b/utils/Log/src/ILogMakePtr.cpp new file mode 100644 index 00000000..382917b1 --- /dev/null +++ b/utils/Log/src/ILogMakePtr.cpp @@ -0,0 +1,19 @@ +#include "ILogMakePtr.h" +#include "LogImpl.h" +#include "LogEasylogging.h" +#include "LogCapture.h" +std::shared_ptr ILogMakePtr::MakeLogImplPtr() +{ + std::shared_ptr logImpl = std::make_shared(); + return logImpl; +} +std::shared_ptr ILogMakePtr::MakeLogEasylogging(const LogSetting *setting) +{ + std::shared_ptr logImpl = std::make_shared(setting); + return logImpl; +} +std::shared_ptr ILogMakePtr::MakeLongCapture(const LogSetting *setting) +{ + std::shared_ptr logImpl = std::make_shared(*setting); + return logImpl; +} \ No newline at end of file diff --git a/utils/Log/src/ILogMakePtr.h b/utils/Log/src/ILogMakePtr.h new file mode 100644 index 00000000..f6700427 --- /dev/null +++ b/utils/Log/src/ILogMakePtr.h @@ -0,0 +1,25 @@ +#ifndef ILOG_MAKE_PTR_H +#define ILOG_MAKE_PTR_H +#include "ILog.h" +#include "Log.h" +#include +#include +class ILogMakePtr +{ +public: + static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr) + { + static std::shared_ptr instance = std::make_shared(); + if (impl) + { + instance = *impl; + } + return instance; + } + ILogMakePtr() = default; + virtual ~ILogMakePtr() = default; + virtual std::shared_ptr MakeLogImplPtr(); + virtual std::shared_ptr MakeLogEasylogging(const LogSetting *setting); + virtual std::shared_ptr MakeLongCapture(const LogSetting *setting); +}; +#endif \ No newline at end of file diff --git a/utils/Log/src/Log.cpp b/utils/Log/src/Log.cpp new file mode 100644 index 00000000..fa4f4366 --- /dev/null +++ b/utils/Log/src/Log.cpp @@ -0,0 +1,109 @@ +#include "Log.h" +#include "ILog.h" +#include "LogImpl.h" +#include "ILogMakePtr.h" +#include +#include +#include +#include +#include + +int InitLog(const int logInstanceType, const LogSetting *setting) +{ + switch (logInstanceType) + { + case LOG_SERIAL_PRINT: + { + std::shared_ptr logImpl = ILogMakePtr::GetInstance()->MakeLogImplPtr(); + ILog::GetInstance(&logImpl); + break; + } + case LOG_EASYLOGGING: + { + std::shared_ptr logImpl = ILogMakePtr::GetInstance()->MakeLogEasylogging(setting); + ILog::GetInstance(&logImpl); + break; + } + case LOG_CAPTURE_LOG: + { + std::shared_ptr logImpl = ILogMakePtr::GetInstance()->MakeLongCapture(setting); + ILog::GetInstance(&logImpl); + break; + } + + default: + { + LogError("Log module init error.\n"); + return -1; + } + } + return 0; +} +int UnInitLog() +{ + std::shared_ptr logImpl = std::make_shared(); + ILog::GetInstance(&logImpl); + return 0; +} +// static void LogTypeToString(const int type) +// { +// switch (type) +// { +// case LOG_TYPE_ERROR: +// { +// ILog::GetInstance()->Log("[ ERROR ]"); +// break; +// } +// case LOG_TYPE_TEST_TIPS: +// { +// ILog::GetInstance()->Log("[ FAILURE ]"); +// break; +// } +// default: +// break; +// } +// } +int Log(const char *function, int line, int type, const char *format, ...) +{ + if (!ILog::GetInstance()->IsWorking()) + { + return -1; + } + // TODO: + // LogTypeToString(type); + constexpr int SEND_TRACE_BUFF_SIZE = 2048; + char buff[SEND_TRACE_BUFF_SIZE] = {0}; + snprintf(buff, SEND_TRACE_BUFF_SIZE, "[%s][line:%d]:", function, line); + // ILog::GetInstance()->Log(buff); + const int headLen = strlen(buff); + va_list vargs; + va_start(vargs, format); + int len = vsnprintf(buff + headLen, SEND_TRACE_BUFF_SIZE - headLen, format, vargs); + va_end(vargs); + switch (type) + { + case LOG_TYPE_INFORMATION: + ILog::GetInstance()->InFo(buff); + break; + + case LOG_TYPE_WARNING: + ILog::GetInstance()->Warning(buff); + break; + + case LOG_TYPE_ERROR: + ILog::GetInstance()->Error(buff); + break; + + case LOG_TYPE_DEBUG: + ILog::GetInstance()->Debug(buff); + break; + + case LOG_TYPE_TRACE: + ILog::GetInstance()->Trace(buff); + break; + + default: + break; + } + return len; +} \ No newline at end of file diff --git a/utils/Log/src/LogCapture.cpp b/utils/Log/src/LogCapture.cpp new file mode 100644 index 00000000..8c3be179 --- /dev/null +++ b/utils/Log/src/LogCapture.cpp @@ -0,0 +1,81 @@ +#include "LogCapture.h" +#include +#include + +LogCapture::LogCapture(const LogSetting setting) : mLogCapture(setting.callback), + mLogCapture_InFo(setting.callback_InFo), mLogCapture_Warning(setting.callback_Warning), + mLogCapture_Error(setting.callback_Error), mLogCapture_Debug(setting.callback_Debug), + mLogCapture_Trace(setting.callback_Trace) +{ + if (!setting.callback) + { + return; + } +} + +bool LogCapture::Init() +{ + return true; +} +bool LogCapture::UnInit() +{ + return true; +} + +bool LogCapture::IsWorking() +{ + return true; +} +int LogCapture::Log(const char *buff) +{ + if (mLogCapture) + { + mLogCapture(buff); + } + return 0; +} + +int LogCapture::InFo(const char *buff) +{ + if (mLogCapture_InFo) + { + mLogCapture_InFo(buff); + } + return 0; +} + +int LogCapture::Warning(const char *buff) +{ + if (mLogCapture_Warning) + { + mLogCapture_Warning(buff); + } + return 0; +} + +int LogCapture::Error(const char *buff) +{ + if (mLogCapture_Error) + { + mLogCapture_Error(buff); + } + return 0; +} + +int LogCapture::Debug(const char *buff) +{ + if (mLogCapture_Debug) + { + mLogCapture_Debug(buff); + } + return 0; +} + +int LogCapture::Trace(const char *buff) +{ + if (mLogCapture_Trace) + { + mLogCapture_Trace(buff); + } + return 0; +} diff --git a/utils/Log/src/LogCapture.h b/utils/Log/src/LogCapture.h new file mode 100644 index 00000000..a0904ed2 --- /dev/null +++ b/utils/Log/src/LogCapture.h @@ -0,0 +1,31 @@ +#ifndef LOG_CAPTURE_H +#define LOG_CAPTURE_H +#include "ILog.h" +#include "Log.h" + +class LogCapture : public ILog +{ +public: + LogCapture(const LogSetting settings); // settings may it should add (*)? + virtual ~LogCapture() = default; + bool Init() override; + bool UnInit() override; + bool IsWorking() override; + int Log(const char *buff) override; + int InFo(const char *buff) override; + int Warning(const char *buff) override; + int Error(const char *buff) override; + int Trace(const char *buff) override; + int Debug(const char *buff) override; + +private: + std::string mFileName; // File name of saving log. + std::string mMaxSize; // Max size of saving log. + const int (*mLogCapture)(const char *buff); // For other modules to capture what to print. + const int (*mLogCapture_InFo)(const char *buff); + const int (*mLogCapture_Warning)(const char *buff); + const int (*mLogCapture_Error)(const char *buff); + const int (*mLogCapture_Debug)(const char *buff); + const int (*mLogCapture_Trace)(const char *buff); +}; +#endif \ No newline at end of file diff --git a/utils/Log/src/LogEasylogging.cpp b/utils/Log/src/LogEasylogging.cpp new file mode 100644 index 00000000..15e2caac --- /dev/null +++ b/utils/Log/src/LogEasylogging.cpp @@ -0,0 +1,89 @@ +#include "LogEasylogging.h" +#include "easylogging++.h" +#include +// #define ELPP_UNICODE // Define for easylogging +INITIALIZE_EASYLOGGINGPP // Init easylogging + // static bool initFlag = false; // Only used for init easyloggingpp + bool test = false; +LogEasylogging::LogEasylogging(const LogSetting *setting) +{ + if (!setting) + { + return; + } + if (setting->fileName) + { + mFileName = setting->fileName; + } + if (setting->maxSize) + { + mMaxSize = setting->maxSize; + } +} +bool LogEasylogging::Init() +{ +#if 0 + el::Configurations conf("/home/xiaojiazhu/project/OS/OSThings/test/out/bin/default-logger.conf"); + el::Loggers::reconfigureAllLoggers(conf); +#endif + // Set the log path. + if (mFileName.size() > 0) + { + el::Loggers::reconfigureAllLoggers(el::ConfigurationType::Filename, mFileName.c_str()); + } + + // Set the max size of log file. + // el::Loggers::reconfigureAllLoggers(el::ConfigurationType::MaxLogFileSize, "1048576"); + if (mMaxSize.size() > 0) + { + el::Loggers::reconfigureAllLoggers(el::ConfigurationType::MaxLogFileSize, mMaxSize.c_str()); + } + el::Loggers::reconfigureAllLoggers(el::ConfigurationType::Enabled, "true"); + el::Loggers::reconfigureAllLoggers(el::ConfigurationType::ToFile, "true"); + return true; +} +bool LogEasylogging::UnInit() +{ + el::Loggers::reconfigureAllLoggers(el::ConfigurationType::ToFile, "false"); + el::Loggers::reconfigureAllLoggers(el::ConfigurationType::Enabled, "false"); + return true; +} +bool LogEasylogging::IsWorking() +{ + return true; +} +int LogEasylogging::Log(const char *buff) +{ + // LOG(INFO) << buff; + return 0; +} + +int LogEasylogging::InFo(const char *buff) +{ + LOG(INFO) << buff; + return 0; +} + +int LogEasylogging::Warning(const char *buff) +{ + LOG(WARNING) << buff; + return 0; +} + +int LogEasylogging::Error(const char *buff) +{ + LOG(ERROR) << buff; + return 0; +} + +int LogEasylogging::Debug(const char *buff) +{ + LOG(DEBUG) << buff; + return 0; +} + +int LogEasylogging::Trace(const char *buff) +{ + LOG(TRACE) << buff; + return 0; +} \ No newline at end of file diff --git a/utils/Log/src/LogEasylogging.h b/utils/Log/src/LogEasylogging.h new file mode 100644 index 00000000..4ca30af6 --- /dev/null +++ b/utils/Log/src/LogEasylogging.h @@ -0,0 +1,24 @@ +#ifndef LOG_EASYLOGGING_H +#define LOG_EASYLOGGING_H +#include "ILog.h" +#include "Log.h" +class LogEasylogging : public ILog +{ +public: + LogEasylogging(const LogSetting *setting); + virtual ~LogEasylogging() = default; + bool Init() override; + bool UnInit() override; + bool IsWorking() override; + int Log(const char *buff) override; + int InFo(const char *buff) override; + int Warning(const char *buff) override; + int Error(const char *buff) override; + int Trace(const char *buff) override; + int Debug(const char *buff) override; + +private: + std::string mFileName; // File name of saving log. + std::string mMaxSize; // Max size of saving log. +}; +#endif \ No newline at end of file diff --git a/utils/Log/src/LogImpl.cpp b/utils/Log/src/LogImpl.cpp new file mode 100644 index 00000000..b039eb11 --- /dev/null +++ b/utils/Log/src/LogImpl.cpp @@ -0,0 +1,9 @@ +#include "LogImpl.h" +bool LogImpl::IsWorking() +{ + return true; +} +int LogImpl::Log(const char *buff) +{ + return printf("%s", buff); +} \ No newline at end of file diff --git a/utils/Log/src/LogImpl.h b/utils/Log/src/LogImpl.h new file mode 100644 index 00000000..ee1d59b0 --- /dev/null +++ b/utils/Log/src/LogImpl.h @@ -0,0 +1,12 @@ +#ifndef LOG_IMPL_H +#define LOG_IMPL_H +#include "ILog.h" +class LogImpl : public ILog +{ +public: + LogImpl() = default; + virtual ~LogImpl() = default; + bool IsWorking() override; + int Log(const char *buff) override; +}; +#endif \ No newline at end of file diff --git a/utils/Log/src/easyloggingpp/README.txt b/utils/Log/src/easyloggingpp/README.txt new file mode 100644 index 00000000..de33e5b7 --- /dev/null +++ b/utils/Log/src/easyloggingpp/README.txt @@ -0,0 +1,9 @@ +这是一个开源库的源码。 +注意: +//1. 需要定义宏 +//#define ELPP_UNICODE // Define for easylogging +2. 初始化 +INITIALIZE_EASYLOGGINGPP // Init easylogging +//3. 支持多线程,在源码头文件"easyloggingpp.h"定义宏 +//#define ELPP_THREAD_SAFE // Working in threads. Added by xiaojiazhu +4. ELPP_NO_DEFAULT_LOG_FILE 此宏屏蔽生成默认的log文件 diff --git a/utils/Log/src/easyloggingpp/default-logger.conf b/utils/Log/src/easyloggingpp/default-logger.conf new file mode 100644 index 00000000..9e34afd2 --- /dev/null +++ b/utils/Log/src/easyloggingpp/default-logger.conf @@ -0,0 +1,25 @@ +* GLOBAL: + FORMAT = "%datetime | %level | %logger | %msg" + FILENAME = "/tmp/logs/myeasylog-configuration.cpp.log" + ENABLED = true + TO_FILE = true + TO_STANDARD_OUTPUT = true + SUBSECOND_PRECISION = 3 + PERFORMANCE_TRACKING = false + MAX_LOG_FILE_SIZE = 2097152 ## Throw log files away after 2MB +* DEBUG: + FILENAME = "/tmp/logs/myeasylog-configuration.cpp-debug.log" + TO_STANDARD_OUTPUT = true + ENABLED = true ## We will set it to false after development completed +* WARNING: + FILENAME = "/tmp/logs/filename-with-time-%datetime{%H:%m}" +* TRACE: + TO_FILE = true ## Unnecessary configuration cuz its already true in GLOBAL but doing it anyway! +* VERBOSE: + FORMAT = "%datetime{%d/%M/%y} | %level-%vlevel | %msg" +## Error logs +* ERROR: + ENABLED = false + FILENAME = "/tmp/logs/myeasylog-configuration.cpp-error.log" +* FATAL: + ENABLED = false diff --git a/utils/Log/src/easyloggingpp/easylogging++.cc b/utils/Log/src/easyloggingpp/easylogging++.cc new file mode 100644 index 00000000..889e5c22 --- /dev/null +++ b/utils/Log/src/easyloggingpp/easylogging++.cc @@ -0,0 +1,3122 @@ +// +// Bismillah ar-Rahmaan ar-Raheem +// +// Easylogging++ v9.96.7 +// Cross-platform logging library for C++ applications +// +// Copyright (c) 2012-2018 Amrayn Web Services +// Copyright (c) 2012-2018 @abumusamq +// +// This library is released under the MIT Licence. +// https://github.com/amrayn/easyloggingpp/blob/master/LICENSE +// +// https://amrayn.com +// http://muflihun.com +// + +#include "easylogging++.h" + +#define ELPP_NO_DEFAULT_LOG_FILE // Don't build the default log file. Added by xiaojiazhu + +#if defined(AUTO_INITIALIZE_EASYLOGGINGPP) +INITIALIZE_EASYLOGGINGPP +#endif + +namespace el { + +// el::base +namespace base { +// el::base::consts +namespace consts { + +// Level log values - These are values that are replaced in place of %level format specifier +// Extra spaces after format specifiers are only for readability purposes in log files +static const base::type::char_t* kInfoLevelLogValue = ELPP_LITERAL("INFO"); +static const base::type::char_t* kDebugLevelLogValue = ELPP_LITERAL("DEBUG"); +static const base::type::char_t* kWarningLevelLogValue = ELPP_LITERAL("WARNING"); +static const base::type::char_t* kErrorLevelLogValue = ELPP_LITERAL("ERROR"); +static const base::type::char_t* kFatalLevelLogValue = ELPP_LITERAL("FATAL"); +static const base::type::char_t* kVerboseLevelLogValue = + ELPP_LITERAL("VERBOSE"); // will become VERBOSE-x where x = verbose level +static const base::type::char_t* kTraceLevelLogValue = ELPP_LITERAL("TRACE"); +static const base::type::char_t* kInfoLevelShortLogValue = ELPP_LITERAL("I"); +static const base::type::char_t* kDebugLevelShortLogValue = ELPP_LITERAL("D"); +static const base::type::char_t* kWarningLevelShortLogValue = ELPP_LITERAL("W"); +static const base::type::char_t* kErrorLevelShortLogValue = ELPP_LITERAL("E"); +static const base::type::char_t* kFatalLevelShortLogValue = ELPP_LITERAL("F"); +static const base::type::char_t* kVerboseLevelShortLogValue = ELPP_LITERAL("V"); +static const base::type::char_t* kTraceLevelShortLogValue = ELPP_LITERAL("T"); +// Format specifiers - These are used to define log format +static const base::type::char_t* kAppNameFormatSpecifier = ELPP_LITERAL("%app"); +static const base::type::char_t* kLoggerIdFormatSpecifier = ELPP_LITERAL("%logger"); +static const base::type::char_t* kThreadIdFormatSpecifier = ELPP_LITERAL("%thread"); +static const base::type::char_t* kSeverityLevelFormatSpecifier = ELPP_LITERAL("%level"); +static const base::type::char_t* kSeverityLevelShortFormatSpecifier = ELPP_LITERAL("%levshort"); +static const base::type::char_t* kDateTimeFormatSpecifier = ELPP_LITERAL("%datetime"); +static const base::type::char_t* kLogFileFormatSpecifier = ELPP_LITERAL("%file"); +static const base::type::char_t* kLogFileBaseFormatSpecifier = ELPP_LITERAL("%fbase"); +static const base::type::char_t* kLogLineFormatSpecifier = ELPP_LITERAL("%line"); +static const base::type::char_t* kLogLocationFormatSpecifier = ELPP_LITERAL("%loc"); +static const base::type::char_t* kLogFunctionFormatSpecifier = ELPP_LITERAL("%func"); +static const base::type::char_t* kCurrentUserFormatSpecifier = ELPP_LITERAL("%user"); +static const base::type::char_t* kCurrentHostFormatSpecifier = ELPP_LITERAL("%host"); +static const base::type::char_t* kMessageFormatSpecifier = ELPP_LITERAL("%msg"); +static const base::type::char_t* kVerboseLevelFormatSpecifier = ELPP_LITERAL("%vlevel"); +static const char* kDateTimeFormatSpecifierForFilename = "%datetime"; +// Date/time +static const char* kDays[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; +static const char* kDaysAbbrev[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; +static const char* kMonths[12] = { "January", "February", "March", "April", "May", "June", "July", "August", + "September", "October", "November", "December" + }; +static const char* kMonthsAbbrev[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; +static const char* kDefaultDateTimeFormat = "%Y-%M-%d %H:%m:%s,%g"; +static const char* kDefaultDateTimeFormatInFilename = "%Y-%M-%d_%H-%m"; +static const int kYearBase = 1900; +static const char* kAm = "AM"; +static const char* kPm = "PM"; +// Miscellaneous constants + +static const char* kNullPointer = "nullptr"; +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED +static const base::type::VerboseLevel kMaxVerboseLevel = 9; +static const char* kUnknownUser = "unknown-user"; +static const char* kUnknownHost = "unknown-host"; + + +//---------------- DEFAULT LOG FILE ----------------------- + +#if defined(ELPP_NO_DEFAULT_LOG_FILE) +# if ELPP_OS_UNIX +static const char* kDefaultLogFile = "/dev/null"; +# elif ELPP_OS_WINDOWS +static const char* kDefaultLogFile = "nul"; +# endif // ELPP_OS_UNIX +#elif defined(ELPP_DEFAULT_LOG_FILE) +static const char* kDefaultLogFile = ELPP_DEFAULT_LOG_FILE; +#else +static const char* kDefaultLogFile = "myeasylog.log"; +#endif // defined(ELPP_NO_DEFAULT_LOG_FILE) + + +#if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +static const char* kDefaultLogFileParam = "--default-log-file"; +#endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +#if defined(ELPP_LOGGING_FLAGS_FROM_ARG) +static const char* kLoggingFlagsParam = "--logging-flags"; +#endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) +static const char* kValidLoggerIdSymbols = + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._"; +static const char* kConfigurationComment = "##"; +static const char* kConfigurationLevel = "*"; +static const char* kConfigurationLoggerId = "--"; +} +// el::base::utils +namespace utils { + +/// @brief Aborts application due with user-defined status +static void abort(int status, const std::string& reason) { + // Both status and reason params are there for debugging with tools like gdb etc + ELPP_UNUSED(status); + ELPP_UNUSED(reason); +#if defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) + // Ignore msvc critical error dialog - break instead (on debug mode) + _asm int 3 +#else + ::abort(); +#endif // defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) +} + +} // namespace utils +} // namespace base + +// el + +// LevelHelper + +const char* LevelHelper::convertToString(Level level) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (level == Level::Global) return "GLOBAL"; + if (level == Level::Debug) return "DEBUG"; + if (level == Level::Info) return "INFO"; + if (level == Level::Warning) return "WARNING"; + if (level == Level::Error) return "ERROR"; + if (level == Level::Fatal) return "FATAL"; + if (level == Level::Verbose) return "VERBOSE"; + if (level == Level::Trace) return "TRACE"; + return "UNKNOWN"; +} + +struct StringToLevelItem { + const char* levelString; + Level level; +}; + +static struct StringToLevelItem stringToLevelMap[] = { + { "global", Level::Global }, + { "debug", Level::Debug }, + { "info", Level::Info }, + { "warning", Level::Warning }, + { "error", Level::Error }, + { "fatal", Level::Fatal }, + { "verbose", Level::Verbose }, + { "trace", Level::Trace } +}; + +Level LevelHelper::convertFromString(const char* levelStr) { + for (auto& item : stringToLevelMap) { + if (base::utils::Str::cStringCaseEq(levelStr, item.levelString)) { + return item.level; + } + } + return Level::Unknown; +} + +void LevelHelper::forEachLevel(base::type::EnumType* startIndex, const std::function& fn) { + base::type::EnumType lIndexMax = LevelHelper::kMaxValid; + do { + if (fn()) { + break; + } + *startIndex = static_cast(*startIndex << 1); + } while (*startIndex <= lIndexMax); +} + +// ConfigurationTypeHelper + +const char* ConfigurationTypeHelper::convertToString(ConfigurationType configurationType) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (configurationType == ConfigurationType::Enabled) return "ENABLED"; + if (configurationType == ConfigurationType::Filename) return "FILENAME"; + if (configurationType == ConfigurationType::Format) return "FORMAT"; + if (configurationType == ConfigurationType::ToFile) return "TO_FILE"; + if (configurationType == ConfigurationType::ToStandardOutput) return "TO_STANDARD_OUTPUT"; + if (configurationType == ConfigurationType::SubsecondPrecision) return "SUBSECOND_PRECISION"; + if (configurationType == ConfigurationType::PerformanceTracking) return "PERFORMANCE_TRACKING"; + if (configurationType == ConfigurationType::MaxLogFileSize) return "MAX_LOG_FILE_SIZE"; + if (configurationType == ConfigurationType::LogFlushThreshold) return "LOG_FLUSH_THRESHOLD"; + return "UNKNOWN"; +} + +struct ConfigurationStringToTypeItem { + const char* configString; + ConfigurationType configType; +}; + +static struct ConfigurationStringToTypeItem configStringToTypeMap[] = { + { "enabled", ConfigurationType::Enabled }, + { "to_file", ConfigurationType::ToFile }, + { "to_standard_output", ConfigurationType::ToStandardOutput }, + { "format", ConfigurationType::Format }, + { "filename", ConfigurationType::Filename }, + { "subsecond_precision", ConfigurationType::SubsecondPrecision }, + { "milliseconds_width", ConfigurationType::MillisecondsWidth }, + { "performance_tracking", ConfigurationType::PerformanceTracking }, + { "max_log_file_size", ConfigurationType::MaxLogFileSize }, + { "log_flush_threshold", ConfigurationType::LogFlushThreshold }, +}; + +ConfigurationType ConfigurationTypeHelper::convertFromString(const char* configStr) { + for (auto& item : configStringToTypeMap) { + if (base::utils::Str::cStringCaseEq(configStr, item.configString)) { + return item.configType; + } + } + return ConfigurationType::Unknown; +} + +void ConfigurationTypeHelper::forEachConfigType(base::type::EnumType* startIndex, const std::function& fn) { + base::type::EnumType cIndexMax = ConfigurationTypeHelper::kMaxValid; + do { + if (fn()) { + break; + } + *startIndex = static_cast(*startIndex << 1); + } while (*startIndex <= cIndexMax); +} + +// Configuration + +Configuration::Configuration(const Configuration& c) : + m_level(c.m_level), + m_configurationType(c.m_configurationType), + m_value(c.m_value) { +} + +Configuration& Configuration::operator=(const Configuration& c) { + if (&c != this) { + m_level = c.m_level; + m_configurationType = c.m_configurationType; + m_value = c.m_value; + } + return *this; +} + +/// @brief Full constructor used to sets value of configuration +Configuration::Configuration(Level level, ConfigurationType configurationType, const std::string& value) : + m_level(level), + m_configurationType(configurationType), + m_value(value) { +} + +void Configuration::log(el::base::type::ostream_t& os) const { + os << LevelHelper::convertToString(m_level) + << ELPP_LITERAL(" ") << ConfigurationTypeHelper::convertToString(m_configurationType) + << ELPP_LITERAL(" = ") << m_value.c_str(); +} + +/// @brief Used to find configuration from configuration (pointers) repository. Avoid using it. +Configuration::Predicate::Predicate(Level level, ConfigurationType configurationType) : + m_level(level), + m_configurationType(configurationType) { +} + +bool Configuration::Predicate::operator()(const Configuration* conf) const { + return ((conf != nullptr) && (conf->level() == m_level) && (conf->configurationType() == m_configurationType)); +} + +// Configurations + +Configurations::Configurations(void) : + m_configurationFile(std::string()), + m_isFromFile(false) { +} + +Configurations::Configurations(const std::string& configurationFile, bool useDefaultsForRemaining, + Configurations* base) : + m_configurationFile(configurationFile), + m_isFromFile(false) { + parseFromFile(configurationFile, base); + if (useDefaultsForRemaining) { + setRemainingToDefault(); + } +} + +bool Configurations::parseFromFile(const std::string& configurationFile, Configurations* base) { + // We initial assertion with true because if we have assertion disabled, we want to pass this + // check and if assertion is enabled we will have values re-assigned any way. + bool assertionPassed = true; + ELPP_ASSERT((assertionPassed = base::utils::File::pathExists(configurationFile.c_str(), true)) == true, + "Configuration file [" << configurationFile << "] does not exist!"); + if (!assertionPassed) { + return false; + } + bool success = Parser::parseFromFile(configurationFile, this, base); + m_isFromFile = success; + return success; +} + +bool Configurations::parseFromText(const std::string& configurationsString, Configurations* base) { + bool success = Parser::parseFromText(configurationsString, this, base); + if (success) { + m_isFromFile = false; + } + return success; +} + +void Configurations::setFromBase(Configurations* base) { + if (base == nullptr || base == this) { + return; + } + base::threading::ScopedLock scopedLock(base->lock()); + for (Configuration*& conf : base->list()) { + set(conf); + } +} + +bool Configurations::hasConfiguration(ConfigurationType configurationType) { + base::type::EnumType lIndex = LevelHelper::kMinValid; + bool result = false; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + if (hasConfiguration(LevelHelper::castFromInt(lIndex), configurationType)) { + result = true; + } + return result; + }); + return result; +} + +bool Configurations::hasConfiguration(Level level, ConfigurationType configurationType) { + base::threading::ScopedLock scopedLock(lock()); +#if ELPP_COMPILER_INTEL + // We cant specify template types here, Intel C++ throws compilation error + // "error: type name is not allowed" + return RegistryWithPred::get(level, configurationType) != nullptr; +#else + return RegistryWithPred::get(level, configurationType) != nullptr; +#endif // ELPP_COMPILER_INTEL +} + +void Configurations::set(Level level, ConfigurationType configurationType, const std::string& value) { + base::threading::ScopedLock scopedLock(lock()); + unsafeSet(level, configurationType, value); // This is not unsafe anymore as we have locked mutex + if (level == Level::Global) { + unsafeSetGlobally(configurationType, value, false); // Again this is not unsafe either + } +} + +void Configurations::set(Configuration* conf) { + if (conf == nullptr) { + return; + } + set(conf->level(), conf->configurationType(), conf->value()); +} + +void Configurations::setToDefault(void) { + setGlobally(ConfigurationType::Enabled, std::string("true"), true); + setGlobally(ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile), true); +#if defined(ELPP_NO_LOG_TO_FILE) + setGlobally(ConfigurationType::ToFile, std::string("false"), true); +#else + setGlobally(ConfigurationType::ToFile, std::string("true"), true); +#endif // defined(ELPP_NO_LOG_TO_FILE) + setGlobally(ConfigurationType::ToStandardOutput, std::string("true"), true); + setGlobally(ConfigurationType::SubsecondPrecision, std::string("3"), true); + setGlobally(ConfigurationType::PerformanceTracking, std::string("true"), true); + setGlobally(ConfigurationType::MaxLogFileSize, std::string("0"), true); + setGlobally(ConfigurationType::LogFlushThreshold, std::string("0"), true); + + setGlobally(ConfigurationType::Format, std::string("%datetime %level [%logger] %msg"), true); + set(Level::Debug, ConfigurationType::Format, + std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); + // INFO and WARNING are set to default by Level::Global + set(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + set(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + set(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); + set(Level::Trace, ConfigurationType::Format, std::string("%datetime %level [%logger] [%func] [%loc] %msg")); +} + +void Configurations::setRemainingToDefault(void) { + base::threading::ScopedLock scopedLock(lock()); +#if defined(ELPP_NO_LOG_TO_FILE) + unsafeSetIfNotExist(Level::Global, ConfigurationType::Enabled, std::string("false")); +#else + unsafeSetIfNotExist(Level::Global, ConfigurationType::Enabled, std::string("true")); +#endif // defined(ELPP_NO_LOG_TO_FILE) + unsafeSetIfNotExist(Level::Global, ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile)); + unsafeSetIfNotExist(Level::Global, ConfigurationType::ToStandardOutput, std::string("true")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::SubsecondPrecision, std::string("3")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::PerformanceTracking, std::string("true")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::MaxLogFileSize, std::string("0")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Debug, ConfigurationType::Format, + std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); + // INFO and WARNING are set to default by Level::Global + unsafeSetIfNotExist(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); + unsafeSetIfNotExist(Level::Trace, ConfigurationType::Format, + std::string("%datetime %level [%logger] [%func] [%loc] %msg")); +} + +bool Configurations::Parser::parseFromFile(const std::string& configurationFile, Configurations* sender, + Configurations* base) { + sender->setFromBase(base); + std::ifstream fileStream_(configurationFile.c_str(), std::ifstream::in); + ELPP_ASSERT(fileStream_.is_open(), "Unable to open configuration file [" << configurationFile << "] for parsing."); + bool parsedSuccessfully = false; + std::string line = std::string(); + Level currLevel = Level::Unknown; + std::string currConfigStr = std::string(); + std::string currLevelStr = std::string(); + while (fileStream_.good()) { + std::getline(fileStream_, line); + parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); + ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); + } + return parsedSuccessfully; +} + +bool Configurations::Parser::parseFromText(const std::string& configurationsString, Configurations* sender, + Configurations* base) { + sender->setFromBase(base); + bool parsedSuccessfully = false; + std::stringstream ss(configurationsString); + std::string line = std::string(); + Level currLevel = Level::Unknown; + std::string currConfigStr = std::string(); + std::string currLevelStr = std::string(); + while (std::getline(ss, line)) { + parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); + ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); + } + return parsedSuccessfully; +} + +void Configurations::Parser::ignoreComments(std::string* line) { + std::size_t foundAt = 0; + std::size_t quotesStart = line->find("\""); + std::size_t quotesEnd = std::string::npos; + if (quotesStart != std::string::npos) { + quotesEnd = line->find("\"", quotesStart + 1); + while (quotesEnd != std::string::npos && line->at(quotesEnd - 1) == '\\') { + // Do not erase slash yet - we will erase it in parseLine(..) while loop + quotesEnd = line->find("\"", quotesEnd + 2); + } + } + if ((foundAt = line->find(base::consts::kConfigurationComment)) != std::string::npos) { + if (foundAt < quotesEnd) { + foundAt = line->find(base::consts::kConfigurationComment, quotesEnd + 1); + } + *line = line->substr(0, foundAt); + } +} + +bool Configurations::Parser::isLevel(const std::string& line) { + return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLevel)); +} + +bool Configurations::Parser::isComment(const std::string& line) { + return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationComment)); +} + +bool Configurations::Parser::isConfig(const std::string& line) { + std::size_t assignment = line.find('='); + return line != "" && + ((line[0] >= 'A' && line[0] <= 'Z') || (line[0] >= 'a' && line[0] <= 'z')) && + (assignment != std::string::npos) && + (line.size() > assignment); +} + +bool Configurations::Parser::parseLine(std::string* line, std::string* currConfigStr, std::string* currLevelStr, + Level* currLevel, + Configurations* conf) { + ConfigurationType currConfig = ConfigurationType::Unknown; + std::string currValue = std::string(); + *line = base::utils::Str::trim(*line); + if (isComment(*line)) return true; + ignoreComments(line); + *line = base::utils::Str::trim(*line); + if (line->empty()) { + // Comment ignored + return true; + } + if (isLevel(*line)) { + if (line->size() <= 2) { + return true; + } + *currLevelStr = line->substr(1, line->size() - 2); + *currLevelStr = base::utils::Str::toUpper(*currLevelStr); + *currLevelStr = base::utils::Str::trim(*currLevelStr); + *currLevel = LevelHelper::convertFromString(currLevelStr->c_str()); + return true; + } + if (isConfig(*line)) { + std::size_t assignment = line->find('='); + *currConfigStr = line->substr(0, assignment); + *currConfigStr = base::utils::Str::toUpper(*currConfigStr); + *currConfigStr = base::utils::Str::trim(*currConfigStr); + currConfig = ConfigurationTypeHelper::convertFromString(currConfigStr->c_str()); + currValue = line->substr(assignment + 1); + currValue = base::utils::Str::trim(currValue); + std::size_t quotesStart = currValue.find("\"", 0); + std::size_t quotesEnd = std::string::npos; + if (quotesStart != std::string::npos) { + quotesEnd = currValue.find("\"", quotesStart + 1); + while (quotesEnd != std::string::npos && currValue.at(quotesEnd - 1) == '\\') { + currValue = currValue.erase(quotesEnd - 1, 1); + quotesEnd = currValue.find("\"", quotesEnd + 2); + } + } + if (quotesStart != std::string::npos && quotesEnd != std::string::npos) { + // Quote provided - check and strip if valid + ELPP_ASSERT((quotesStart < quotesEnd), "Configuration error - No ending quote found in [" + << currConfigStr << "]"); + ELPP_ASSERT((quotesStart + 1 != quotesEnd), "Empty configuration value for [" << currConfigStr << "]"); + if ((quotesStart != quotesEnd) && (quotesStart + 1 != quotesEnd)) { + // Explicit check in case if assertion is disabled + currValue = currValue.substr(quotesStart + 1, quotesEnd - 1); + } + } + } + ELPP_ASSERT(*currLevel != Level::Unknown, "Unrecognized severity level [" << *currLevelStr << "]"); + ELPP_ASSERT(currConfig != ConfigurationType::Unknown, "Unrecognized configuration [" << *currConfigStr << "]"); + if (*currLevel == Level::Unknown || currConfig == ConfigurationType::Unknown) { + return false; // unrecognizable level or config + } + conf->set(*currLevel, currConfig, currValue); + return true; +} + +void Configurations::unsafeSetIfNotExist(Level level, ConfigurationType configurationType, const std::string& value) { + Configuration* conf = RegistryWithPred::get(level, configurationType); + if (conf == nullptr) { + unsafeSet(level, configurationType, value); + } +} + +void Configurations::unsafeSet(Level level, ConfigurationType configurationType, const std::string& value) { + Configuration* conf = RegistryWithPred::get(level, configurationType); + if (conf == nullptr) { + registerNew(new Configuration(level, configurationType, value)); + } else { + conf->setValue(value); + } + if (level == Level::Global) { + unsafeSetGlobally(configurationType, value, false); + } +} + +void Configurations::setGlobally(ConfigurationType configurationType, const std::string& value, + bool includeGlobalLevel) { + if (includeGlobalLevel) { + set(Level::Global, configurationType, value); + } + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + set(LevelHelper::castFromInt(lIndex), configurationType, value); + return false; // Do not break lambda function yet as we need to set all levels regardless + }); +} + +void Configurations::unsafeSetGlobally(ConfigurationType configurationType, const std::string& value, + bool includeGlobalLevel) { + if (includeGlobalLevel) { + unsafeSet(Level::Global, configurationType, value); + } + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + unsafeSet(LevelHelper::castFromInt(lIndex), configurationType, value); + return false; // Do not break lambda function yet as we need to set all levels regardless + }); +} + +// LogBuilder + +void LogBuilder::convertToColoredOutput(base::type::string_t* logLine, Level level) { + if (!m_termSupportsColor) return; + const base::type::char_t* resetColor = ELPP_LITERAL("\x1b[0m"); + if (level == Level::Error || level == Level::Fatal) + *logLine = ELPP_LITERAL("\x1b[31m") + *logLine + resetColor; + else if (level == Level::Warning) + *logLine = ELPP_LITERAL("\x1b[33m") + *logLine + resetColor; + else if (level == Level::Debug) + *logLine = ELPP_LITERAL("\x1b[32m") + *logLine + resetColor; + else if (level == Level::Info) + *logLine = ELPP_LITERAL("\x1b[36m") + *logLine + resetColor; + else if (level == Level::Trace) + *logLine = ELPP_LITERAL("\x1b[35m") + *logLine + resetColor; +} + +// Logger + +Logger::Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference) : + m_id(id), + m_typedConfigurations(nullptr), + m_parentApplicationName(std::string()), + m_isConfigured(false), + m_logStreamsReference(logStreamsReference) { + initUnflushedCount(); +} + +Logger::Logger(const std::string& id, const Configurations& configurations, + base::LogStreamsReferenceMapPtr logStreamsReference) : + m_id(id), + m_typedConfigurations(nullptr), + m_parentApplicationName(std::string()), + m_isConfigured(false), + m_logStreamsReference(logStreamsReference) { + initUnflushedCount(); + configure(configurations); +} + +Logger::Logger(const Logger& logger) { + base::utils::safeDelete(m_typedConfigurations); + m_id = logger.m_id; + m_typedConfigurations = logger.m_typedConfigurations; + m_parentApplicationName = logger.m_parentApplicationName; + m_isConfigured = logger.m_isConfigured; + m_configurations = logger.m_configurations; + m_unflushedCount = logger.m_unflushedCount; + m_logStreamsReference = logger.m_logStreamsReference; +} + +Logger& Logger::operator=(const Logger& logger) { + if (&logger != this) { + base::utils::safeDelete(m_typedConfigurations); + m_id = logger.m_id; + m_typedConfigurations = logger.m_typedConfigurations; + m_parentApplicationName = logger.m_parentApplicationName; + m_isConfigured = logger.m_isConfigured; + m_configurations = logger.m_configurations; + m_unflushedCount = logger.m_unflushedCount; + m_logStreamsReference = logger.m_logStreamsReference; + } + return *this; +} + +void Logger::configure(const Configurations& configurations) { + m_isConfigured = false; // we set it to false in case if we fail + initUnflushedCount(); + if (m_typedConfigurations != nullptr) { + Configurations* c = const_cast(m_typedConfigurations->configurations()); + if (c->hasConfiguration(Level::Global, ConfigurationType::Filename)) { + flush(); + } + } + base::threading::ScopedLock scopedLock(lock()); + if (m_configurations != configurations) { + m_configurations.setFromBase(const_cast(&configurations)); + } + base::utils::safeDelete(m_typedConfigurations); + m_typedConfigurations = new base::TypedConfigurations(&m_configurations, m_logStreamsReference); + resolveLoggerFormatSpec(); + m_isConfigured = true; +} + +void Logger::reconfigure(void) { + ELPP_INTERNAL_INFO(1, "Reconfiguring logger [" << m_id << "]"); + configure(m_configurations); +} + +bool Logger::isValidId(const std::string& id) { + for (std::string::const_iterator it = id.begin(); it != id.end(); ++it) { + if (!base::utils::Str::contains(base::consts::kValidLoggerIdSymbols, *it)) { + return false; + } + } + return true; +} + +void Logger::flush(void) { + ELPP_INTERNAL_INFO(3, "Flushing logger [" << m_id << "] all levels"); + base::threading::ScopedLock scopedLock(lock()); + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + flush(LevelHelper::castFromInt(lIndex), nullptr); + return false; + }); +} + +void Logger::flush(Level level, base::type::fstream_t* fs) { + if (fs == nullptr && m_typedConfigurations->toFile(level)) { + fs = m_typedConfigurations->fileStream(level); + } + if (fs != nullptr) { + fs->flush(); + std::unordered_map::iterator iter = m_unflushedCount.find(level); + if (iter != m_unflushedCount.end()) { + iter->second = 0; + } + Helpers::validateFileRolling(this, level); + } +} + +void Logger::initUnflushedCount(void) { + m_unflushedCount.clear(); + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + m_unflushedCount.insert(std::make_pair(LevelHelper::castFromInt(lIndex), 0)); + return false; + }); +} + +void Logger::resolveLoggerFormatSpec(void) const { + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + base::LogFormat* logFormat = + const_cast(&m_typedConfigurations->logFormat(LevelHelper::castFromInt(lIndex))); + base::utils::Str::replaceFirstWithEscape(logFormat->m_format, base::consts::kLoggerIdFormatSpecifier, m_id); + return false; + }); +} + +// el::base +namespace base { + +// el::base::utils +namespace utils { + +// File + +base::type::fstream_t* File::newFileStream(const std::string& filename) { + base::type::fstream_t *fs = new base::type::fstream_t(filename.c_str(), + base::type::fstream_t::out +#if !defined(ELPP_FRESH_LOG_FILE) + | base::type::fstream_t::app +#endif + ); +#if defined(ELPP_UNICODE) + std::locale elppUnicodeLocale(""); +# if ELPP_OS_WINDOWS + std::locale elppUnicodeLocaleWindows(elppUnicodeLocale, new std::codecvt_utf8_utf16); + elppUnicodeLocale = elppUnicodeLocaleWindows; +# endif // ELPP_OS_WINDOWS + fs->imbue(elppUnicodeLocale); +#endif // defined(ELPP_UNICODE) + if (fs->is_open()) { + fs->flush(); + } else { + base::utils::safeDelete(fs); + ELPP_INTERNAL_ERROR("Bad file [" << filename << "]", true); + } + return fs; +} + +std::size_t File::getSizeOfFile(base::type::fstream_t* fs) { + if (fs == nullptr) { + return 0; + } + // Since the file stream is appended to or truncated, the current + // offset is the file size. + std::size_t size = static_cast(fs->tellg()); + return size; +} + +bool File::pathExists(const char* path, bool considerFile) { + if (path == nullptr) { + return false; + } +#if ELPP_OS_UNIX + ELPP_UNUSED(considerFile); + struct stat st; + return (stat(path, &st) == 0); +#elif ELPP_OS_WINDOWS + DWORD fileType = GetFileAttributesA(path); + if (fileType == INVALID_FILE_ATTRIBUTES) { + return false; + } + return considerFile ? true : ((fileType & FILE_ATTRIBUTE_DIRECTORY) == 0 ? false : true); +#endif // ELPP_OS_UNIX +} + +bool File::createPath(const std::string& path) { + if (path.empty()) { + return false; + } + if (base::utils::File::pathExists(path.c_str())) { + return true; + } + int status = -1; + + char* currPath = const_cast(path.c_str()); + std::string builtPath = std::string(); +#if ELPP_OS_UNIX + if (path[0] == '/') { + builtPath = "/"; + } + currPath = STRTOK(currPath, base::consts::kFilePathSeparator, 0); +#elif ELPP_OS_WINDOWS + // Use secure functions API + char* nextTok_ = nullptr; + currPath = STRTOK(currPath, base::consts::kFilePathSeparator, &nextTok_); + ELPP_UNUSED(nextTok_); +#endif // ELPP_OS_UNIX + while (currPath != nullptr) { + builtPath.append(currPath); + builtPath.append(base::consts::kFilePathSeparator); +#if ELPP_OS_UNIX + status = mkdir(builtPath.c_str(), ELPP_LOG_PERMS); + currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, 0); +#elif ELPP_OS_WINDOWS + status = _mkdir(builtPath.c_str()); + currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, &nextTok_); +#endif // ELPP_OS_UNIX + } + if (status == -1) { + ELPP_INTERNAL_ERROR("Error while creating path [" << path << "]", true); + return false; + } + return true; +} + +std::string File::extractPathFromFilename(const std::string& fullPath, const char* separator) { + if ((fullPath == "") || (fullPath.find(separator) == std::string::npos)) { + return fullPath; + } + std::size_t lastSlashAt = fullPath.find_last_of(separator); + if (lastSlashAt == 0) { + return std::string(separator); + } + return fullPath.substr(0, lastSlashAt + 1); +} + +void File::buildStrippedFilename(const char* filename, char buff[], std::size_t limit) { + std::size_t sizeOfFilename = strlen(filename); + if (sizeOfFilename >= limit) { + filename += (sizeOfFilename - limit); + if (filename[0] != '.' && filename[1] != '.') { // prepend if not already + filename += 3; // 3 = '..' + STRCAT(buff, "..", limit); + } + } + STRCAT(buff, filename, limit); +} + +void File::buildBaseFilename(const std::string& fullPath, char buff[], std::size_t limit, const char* separator) { + const char *filename = fullPath.c_str(); + std::size_t lastSlashAt = fullPath.find_last_of(separator); + filename += lastSlashAt ? lastSlashAt+1 : 0; + std::size_t sizeOfFilename = strlen(filename); + if (sizeOfFilename >= limit) { + filename += (sizeOfFilename - limit); + if (filename[0] != '.' && filename[1] != '.') { // prepend if not already + filename += 3; // 3 = '..' + STRCAT(buff, "..", limit); + } + } + STRCAT(buff, filename, limit); +} + +// Str + +bool Str::wildCardMatch(const char* str, const char* pattern) { + while (*pattern) { + switch (*pattern) { + case '?': + if (!*str) + return false; + ++str; + ++pattern; + break; + case '*': + if (wildCardMatch(str, pattern + 1)) + return true; + if (*str && wildCardMatch(str + 1, pattern)) + return true; + return false; + default: + if (*str++ != *pattern++) + return false; + break; + } + } + return !*str && !*pattern; +} + +std::string& Str::ltrim(std::string& str) { + str.erase(str.begin(), std::find_if(str.begin(), str.end(), [](char c) { + return !std::isspace(c); + } )); + return str; +} + +std::string& Str::rtrim(std::string& str) { + str.erase(std::find_if(str.rbegin(), str.rend(), [](char c) { + return !std::isspace(c); + }).base(), str.end()); + return str; +} + +std::string& Str::trim(std::string& str) { + return ltrim(rtrim(str)); +} + +bool Str::startsWith(const std::string& str, const std::string& start) { + return (str.length() >= start.length()) && (str.compare(0, start.length(), start) == 0); +} + +bool Str::endsWith(const std::string& str, const std::string& end) { + return (str.length() >= end.length()) && (str.compare(str.length() - end.length(), end.length(), end) == 0); +} + +std::string& Str::replaceAll(std::string& str, char replaceWhat, char replaceWith) { + std::replace(str.begin(), str.end(), replaceWhat, replaceWith); + return str; +} + +std::string& Str::replaceAll(std::string& str, const std::string& replaceWhat, + const std::string& replaceWith) { + if (replaceWhat == replaceWith) + return str; + std::size_t foundAt = std::string::npos; + while ((foundAt = str.find(replaceWhat, foundAt + 1)) != std::string::npos) { + str.replace(foundAt, replaceWhat.length(), replaceWith); + } + return str; +} + +void Str::replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const base::type::string_t& replaceWith) { + std::size_t foundAt = base::type::string_t::npos; + while ((foundAt = str.find(replaceWhat, foundAt + 1)) != base::type::string_t::npos) { + if (foundAt > 0 && str[foundAt - 1] == base::consts::kFormatSpecifierChar) { + str.erase(foundAt - 1, 1); + ++foundAt; + } else { + str.replace(foundAt, replaceWhat.length(), replaceWith); + return; + } + } +} +#if defined(ELPP_UNICODE) +void Str::replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const std::string& replaceWith) { + replaceFirstWithEscape(str, replaceWhat, base::type::string_t(replaceWith.begin(), replaceWith.end())); +} +#endif // defined(ELPP_UNICODE) + +std::string& Str::toUpper(std::string& str) { + std::transform(str.begin(), str.end(), str.begin(), + [](char c) { + return static_cast(::toupper(c)); + }); + return str; +} + +bool Str::cStringEq(const char* s1, const char* s2) { + if (s1 == nullptr && s2 == nullptr) return true; + if (s1 == nullptr || s2 == nullptr) return false; + return strcmp(s1, s2) == 0; +} + +bool Str::cStringCaseEq(const char* s1, const char* s2) { + if (s1 == nullptr && s2 == nullptr) return true; + if (s1 == nullptr || s2 == nullptr) return false; + + // With thanks to cygwin for this code + int d = 0; + + while (true) { + const int c1 = toupper(*s1++); + const int c2 = toupper(*s2++); + + if (((d = c1 - c2) != 0) || (c2 == '\0')) { + break; + } + } + + return d == 0; +} + +bool Str::contains(const char* str, char c) { + for (; *str; ++str) { + if (*str == c) + return true; + } + return false; +} + +char* Str::convertAndAddToBuff(std::size_t n, int len, char* buf, const char* bufLim, bool zeroPadded) { + char localBuff[10] = ""; + char* p = localBuff + sizeof(localBuff) - 2; + if (n > 0) { + for (; n > 0 && p > localBuff && len > 0; n /= 10, --len) + *--p = static_cast(n % 10 + '0'); + } else { + *--p = '0'; + --len; + } + if (zeroPadded) + while (p > localBuff && len-- > 0) *--p = static_cast('0'); + return addToBuff(p, buf, bufLim); +} + +char* Str::addToBuff(const char* str, char* buf, const char* bufLim) { + while ((buf < bufLim) && ((*buf = *str++) != '\0')) + ++buf; + return buf; +} + +char* Str::clearBuff(char buff[], std::size_t lim) { + STRCPY(buff, "", lim); + ELPP_UNUSED(lim); // For *nix we dont have anything using lim in above STRCPY macro + return buff; +} + +/// @brief Converts wchar* to char* +/// NOTE: Need to free return value after use! +char* Str::wcharPtrToCharPtr(const wchar_t* line) { + std::size_t len_ = wcslen(line) + 1; + char* buff_ = static_cast(malloc(len_ + 1)); +# if ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) + std::wcstombs(buff_, line, len_); +# elif ELPP_OS_WINDOWS + std::size_t convCount_ = 0; + mbstate_t mbState_; + ::memset(static_cast(&mbState_), 0, sizeof(mbState_)); + wcsrtombs_s(&convCount_, buff_, len_, &line, len_, &mbState_); +# endif // ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) + return buff_; +} + +// OS + +#if ELPP_OS_WINDOWS +/// @brief Gets environment variables for Windows based OS. +/// We are not using getenv(const char*) because of CRT deprecation +/// @param varname Variable name to get environment variable value for +/// @return If variable exist the value of it otherwise nullptr +const char* OS::getWindowsEnvironmentVariable(const char* varname) { + const DWORD bufferLen = 50; + static char buffer[bufferLen]; + if (GetEnvironmentVariableA(varname, buffer, bufferLen)) { + return buffer; + } + return nullptr; +} +#endif // ELPP_OS_WINDOWS +#if ELPP_OS_ANDROID +std::string OS::getProperty(const char* prop) { + char propVal[PROP_VALUE_MAX + 1]; + int ret = __system_property_get(prop, propVal); + return ret == 0 ? std::string() : std::string(propVal); +} + +std::string OS::getDeviceName(void) { + std::stringstream ss; + std::string manufacturer = getProperty("ro.product.manufacturer"); + std::string model = getProperty("ro.product.model"); + if (manufacturer.empty() || model.empty()) { + return std::string(); + } + ss << manufacturer << "-" << model; + return ss.str(); +} +#endif // ELPP_OS_ANDROID + +const std::string OS::getBashOutput(const char* command) { +#if (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) + if (command == nullptr) { + return std::string(); + } + FILE* proc = nullptr; + if ((proc = popen(command, "r")) == nullptr) { + ELPP_INTERNAL_ERROR("\nUnable to run command [" << command << "]", true); + return std::string(); + } + char hBuff[4096]; + if (fgets(hBuff, sizeof(hBuff), proc) != nullptr) { + pclose(proc); + const std::size_t buffLen = strlen(hBuff); + if (buffLen > 0 && hBuff[buffLen - 1] == '\n') { + hBuff[buffLen - 1] = '\0'; + } + return std::string(hBuff); + } else { + pclose(proc); + } + return std::string(); +#else + ELPP_UNUSED(command); + return std::string(); +#endif // (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) +} + +std::string OS::getEnvironmentVariable(const char* variableName, const char* defaultVal, + const char* alternativeBashCommand) { +#if ELPP_OS_UNIX + const char* val = getenv(variableName); +#elif ELPP_OS_WINDOWS + const char* val = getWindowsEnvironmentVariable(variableName); +#endif // ELPP_OS_UNIX + if ((val == nullptr) || ((strcmp(val, "") == 0))) { +#if ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) + // Try harder on unix-based systems + std::string valBash = base::utils::OS::getBashOutput(alternativeBashCommand); + if (valBash.empty()) { + return std::string(defaultVal); + } else { + return valBash; + } +#elif ELPP_OS_WINDOWS || ELPP_OS_UNIX + ELPP_UNUSED(alternativeBashCommand); + return std::string(defaultVal); +#endif // ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) + } + return std::string(val); +} + +std::string OS::currentUser(void) { +#if ELPP_OS_UNIX && !ELPP_OS_ANDROID + return getEnvironmentVariable("USER", base::consts::kUnknownUser, "whoami"); +#elif ELPP_OS_WINDOWS + return getEnvironmentVariable("USERNAME", base::consts::kUnknownUser); +#elif ELPP_OS_ANDROID + ELPP_UNUSED(base::consts::kUnknownUser); + return std::string("android"); +#else + return std::string(); +#endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID +} + +std::string OS::currentHost(void) { +#if ELPP_OS_UNIX && !ELPP_OS_ANDROID + return getEnvironmentVariable("HOSTNAME", base::consts::kUnknownHost, "hostname"); +#elif ELPP_OS_WINDOWS + return getEnvironmentVariable("COMPUTERNAME", base::consts::kUnknownHost); +#elif ELPP_OS_ANDROID + ELPP_UNUSED(base::consts::kUnknownHost); + return getDeviceName(); +#else + return std::string(); +#endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID +} + +bool OS::termSupportsColor(void) { + std::string term = getEnvironmentVariable("TERM", ""); + return term == "xterm" || term == "xterm-color" || term == "xterm-256color" + || term == "screen" || term == "linux" || term == "cygwin" + || term == "screen-256color"; +} + +// DateTime + +void DateTime::gettimeofday(struct timeval* tv) { +#if ELPP_OS_WINDOWS + if (tv != nullptr) { +# if ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) + const unsigned __int64 delta_ = 11644473600000000Ui64; +# else + const unsigned __int64 delta_ = 11644473600000000ULL; +# endif // ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) + const double secOffSet = 0.000001; + const unsigned long usecOffSet = 1000000; + FILETIME fileTime; + GetSystemTimeAsFileTime(&fileTime); + unsigned __int64 present = 0; + present |= fileTime.dwHighDateTime; + present = present << 32; + present |= fileTime.dwLowDateTime; + present /= 10; // mic-sec + // Subtract the difference + present -= delta_; + tv->tv_sec = static_cast(present * secOffSet); + tv->tv_usec = static_cast(present % usecOffSet); + } +#else + ::gettimeofday(tv, nullptr); +#endif // ELPP_OS_WINDOWS +} + +std::string DateTime::getDateTime(const char* format, const base::SubsecondPrecision* ssPrec) { + struct timeval currTime; + gettimeofday(&currTime); + return timevalToString(currTime, format, ssPrec); +} + +std::string DateTime::timevalToString(struct timeval tval, const char* format, + const el::base::SubsecondPrecision* ssPrec) { + struct ::tm timeInfo; + buildTimeInfo(&tval, &timeInfo); + const int kBuffSize = 30; + char buff_[kBuffSize] = ""; + parseFormat(buff_, kBuffSize, format, &timeInfo, static_cast(tval.tv_usec / ssPrec->m_offset), + ssPrec); + return std::string(buff_); +} + +base::type::string_t DateTime::formatTime(unsigned long long time, base::TimestampUnit timestampUnit) { + base::type::EnumType start = static_cast(timestampUnit); + const base::type::char_t* unit = base::consts::kTimeFormats[start].unit; + for (base::type::EnumType i = start; i < base::consts::kTimeFormatsCount - 1; ++i) { + if (time <= base::consts::kTimeFormats[i].value) { + break; + } + if (base::consts::kTimeFormats[i].value == 1000.0f && time / 1000.0f < 1.9f) { + break; + } + time /= static_cast(base::consts::kTimeFormats[i].value); + unit = base::consts::kTimeFormats[i + 1].unit; + } + base::type::stringstream_t ss; + ss << time << " " << unit; + return ss.str(); +} + +unsigned long long DateTime::getTimeDifference(const struct timeval& endTime, const struct timeval& startTime, + base::TimestampUnit timestampUnit) { + if (timestampUnit == base::TimestampUnit::Microsecond) { + return static_cast(static_cast(1000000 * endTime.tv_sec + endTime.tv_usec) - + static_cast(1000000 * startTime.tv_sec + startTime.tv_usec)); + } + // milliseconds + auto conv = [](const struct timeval& tim) { + return static_cast((tim.tv_sec * 1000) + (tim.tv_usec / 1000)); + }; + return static_cast(conv(endTime) - conv(startTime)); +} + +struct ::tm* DateTime::buildTimeInfo(struct timeval* currTime, struct ::tm* timeInfo) { +#if ELPP_OS_UNIX + time_t rawTime = currTime->tv_sec; + ::elpptime_r(&rawTime, timeInfo); + return timeInfo; +#else +# if ELPP_COMPILER_MSVC + ELPP_UNUSED(currTime); + time_t t; +# if defined(_USE_32BIT_TIME_T) + _time32(&t); +# else + _time64(&t); +# endif + elpptime_s(timeInfo, &t); + return timeInfo; +# else + // For any other compilers that don't have CRT warnings issue e.g, MinGW or TDM GCC- we use different method + time_t rawTime = currTime->tv_sec; + struct tm* tmInf = elpptime(&rawTime); + *timeInfo = *tmInf; + return timeInfo; +# endif // ELPP_COMPILER_MSVC +#endif // ELPP_OS_UNIX +} + +char* DateTime::parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, + std::size_t msec, const base::SubsecondPrecision* ssPrec) { + const char* bufLim = buf + bufSz; + for (; *format; ++format) { + if (*format == base::consts::kFormatSpecifierChar) { + switch (*++format) { + case base::consts::kFormatSpecifierChar: // Escape + break; + case '\0': // End + --format; + break; + case 'd': // Day + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mday, 2, buf, bufLim); + continue; + case 'a': // Day of week (short) + buf = base::utils::Str::addToBuff(base::consts::kDaysAbbrev[tInfo->tm_wday], buf, bufLim); + continue; + case 'A': // Day of week (long) + buf = base::utils::Str::addToBuff(base::consts::kDays[tInfo->tm_wday], buf, bufLim); + continue; + case 'M': // month + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mon + 1, 2, buf, bufLim); + continue; + case 'b': // month (short) + buf = base::utils::Str::addToBuff(base::consts::kMonthsAbbrev[tInfo->tm_mon], buf, bufLim); + continue; + case 'B': // month (long) + buf = base::utils::Str::addToBuff(base::consts::kMonths[tInfo->tm_mon], buf, bufLim); + continue; + case 'y': // year (two digits) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 2, buf, bufLim); + continue; + case 'Y': // year (four digits) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 4, buf, bufLim); + continue; + case 'h': // hour (12-hour) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour % 12, 2, buf, bufLim); + continue; + case 'H': // hour (24-hour) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour, 2, buf, bufLim); + continue; + case 'm': // minute + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_min, 2, buf, bufLim); + continue; + case 's': // second + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_sec, 2, buf, bufLim); + continue; + case 'z': // subsecond part + case 'g': + buf = base::utils::Str::convertAndAddToBuff(msec, ssPrec->m_width, buf, bufLim); + continue; + case 'F': // AM/PM + buf = base::utils::Str::addToBuff((tInfo->tm_hour >= 12) ? base::consts::kPm : base::consts::kAm, buf, bufLim); + continue; + default: + continue; + } + } + if (buf == bufLim) break; + *buf++ = *format; + } + return buf; +} + +// CommandLineArgs + +void CommandLineArgs::setArgs(int argc, char** argv) { + m_params.clear(); + m_paramsWithValue.clear(); + if (argc == 0 || argv == nullptr) { + return; + } + m_argc = argc; + m_argv = argv; + for (int i = 1; i < m_argc; ++i) { + const char* v = (strstr(m_argv[i], "=")); + if (v != nullptr && strlen(v) > 0) { + std::string key = std::string(m_argv[i]); + key = key.substr(0, key.find_first_of('=')); + if (hasParamWithValue(key.c_str())) { + ELPP_INTERNAL_INFO(1, "Skipping [" << key << "] arg since it already has value [" + << getParamValue(key.c_str()) << "]"); + } else { + m_paramsWithValue.insert(std::make_pair(key, std::string(v + 1))); + } + } + if (v == nullptr) { + if (hasParam(m_argv[i])) { + ELPP_INTERNAL_INFO(1, "Skipping [" << m_argv[i] << "] arg since it already exists"); + } else { + m_params.push_back(std::string(m_argv[i])); + } + } + } +} + +bool CommandLineArgs::hasParamWithValue(const char* paramKey) const { + return m_paramsWithValue.find(std::string(paramKey)) != m_paramsWithValue.end(); +} + +const char* CommandLineArgs::getParamValue(const char* paramKey) const { + std::unordered_map::const_iterator iter = m_paramsWithValue.find(std::string(paramKey)); + return iter != m_paramsWithValue.end() ? iter->second.c_str() : ""; +} + +bool CommandLineArgs::hasParam(const char* paramKey) const { + return std::find(m_params.begin(), m_params.end(), std::string(paramKey)) != m_params.end(); +} + +bool CommandLineArgs::empty(void) const { + return m_params.empty() && m_paramsWithValue.empty(); +} + +std::size_t CommandLineArgs::size(void) const { + return m_params.size() + m_paramsWithValue.size(); +} + +base::type::ostream_t& operator<<(base::type::ostream_t& os, const CommandLineArgs& c) { + for (int i = 1; i < c.m_argc; ++i) { + os << ELPP_LITERAL("[") << c.m_argv[i] << ELPP_LITERAL("]"); + if (i < c.m_argc - 1) { + os << ELPP_LITERAL(" "); + } + } + return os; +} + +} // namespace utils + +// el::base::threading +namespace threading { + +#if ELPP_THREADING_ENABLED +# if ELPP_USE_STD_THREADING +# if ELPP_ASYNC_LOGGING +static void msleep(int ms) { + // Only when async logging enabled - this is because async is strict on compiler +# if defined(ELPP_NO_SLEEP_FOR) + usleep(ms * 1000); +# else + std::this_thread::sleep_for(std::chrono::milliseconds(ms)); +# endif // defined(ELPP_NO_SLEEP_FOR) +} +# endif // ELPP_ASYNC_LOGGING +# endif // !ELPP_USE_STD_THREADING +#endif // ELPP_THREADING_ENABLED + +} // namespace threading + +// el::base + +// SubsecondPrecision + +void SubsecondPrecision::init(int width) { + if (width < 1 || width > 6) { + width = base::consts::kDefaultSubsecondPrecision; + } + m_width = width; + switch (m_width) { + case 3: + m_offset = 1000; + break; + case 4: + m_offset = 100; + break; + case 5: + m_offset = 10; + break; + case 6: + m_offset = 1; + break; + default: + m_offset = 1000; + break; + } +} + +// LogFormat + +LogFormat::LogFormat(void) : + m_level(Level::Unknown), + m_userFormat(base::type::string_t()), + m_format(base::type::string_t()), + m_dateTimeFormat(std::string()), + m_flags(0x0), + m_currentUser(base::utils::OS::currentUser()), + m_currentHost(base::utils::OS::currentHost()) { +} + +LogFormat::LogFormat(Level level, const base::type::string_t& format) + : m_level(level), m_userFormat(format), m_currentUser(base::utils::OS::currentUser()), + m_currentHost(base::utils::OS::currentHost()) { + parseFromFormat(m_userFormat); +} + +LogFormat::LogFormat(const LogFormat& logFormat): + m_level(logFormat.m_level), + m_userFormat(logFormat.m_userFormat), + m_format(logFormat.m_format), + m_dateTimeFormat(logFormat.m_dateTimeFormat), + m_flags(logFormat.m_flags), + m_currentUser(logFormat.m_currentUser), + m_currentHost(logFormat.m_currentHost) { +} + +LogFormat::LogFormat(LogFormat&& logFormat) { + m_level = std::move(logFormat.m_level); + m_userFormat = std::move(logFormat.m_userFormat); + m_format = std::move(logFormat.m_format); + m_dateTimeFormat = std::move(logFormat.m_dateTimeFormat); + m_flags = std::move(logFormat.m_flags); + m_currentUser = std::move(logFormat.m_currentUser); + m_currentHost = std::move(logFormat.m_currentHost); +} + +LogFormat& LogFormat::operator=(const LogFormat& logFormat) { + if (&logFormat != this) { + m_level = logFormat.m_level; + m_userFormat = logFormat.m_userFormat; + m_dateTimeFormat = logFormat.m_dateTimeFormat; + m_flags = logFormat.m_flags; + m_currentUser = logFormat.m_currentUser; + m_currentHost = logFormat.m_currentHost; + } + return *this; +} + +bool LogFormat::operator==(const LogFormat& other) { + return m_level == other.m_level && m_userFormat == other.m_userFormat && m_format == other.m_format && + m_dateTimeFormat == other.m_dateTimeFormat && m_flags == other.m_flags; +} + +/// @brief Updates format to be used while logging. +/// @param userFormat User provided format +void LogFormat::parseFromFormat(const base::type::string_t& userFormat) { + // We make copy because we will be changing the format + // i.e, removing user provided date format from original format + // and then storing it. + base::type::string_t formatCopy = userFormat; + m_flags = 0x0; + auto conditionalAddFlag = [&](const base::type::char_t* specifier, base::FormatFlags flag) { + std::size_t foundAt = base::type::string_t::npos; + while ((foundAt = formatCopy.find(specifier, foundAt + 1)) != base::type::string_t::npos) { + if (foundAt > 0 && formatCopy[foundAt - 1] == base::consts::kFormatSpecifierChar) { + if (hasFlag(flag)) { + // If we already have flag we remove the escape chars so that '%%' is turned to '%' + // even after specifier resolution - this is because we only replaceFirst specifier + formatCopy.erase(foundAt - 1, 1); + ++foundAt; + } + } else { + if (!hasFlag(flag)) addFlag(flag); + } + } + }; + conditionalAddFlag(base::consts::kAppNameFormatSpecifier, base::FormatFlags::AppName); + conditionalAddFlag(base::consts::kSeverityLevelFormatSpecifier, base::FormatFlags::Level); + conditionalAddFlag(base::consts::kSeverityLevelShortFormatSpecifier, base::FormatFlags::LevelShort); + conditionalAddFlag(base::consts::kLoggerIdFormatSpecifier, base::FormatFlags::LoggerId); + conditionalAddFlag(base::consts::kThreadIdFormatSpecifier, base::FormatFlags::ThreadId); + conditionalAddFlag(base::consts::kLogFileFormatSpecifier, base::FormatFlags::File); + conditionalAddFlag(base::consts::kLogFileBaseFormatSpecifier, base::FormatFlags::FileBase); + conditionalAddFlag(base::consts::kLogLineFormatSpecifier, base::FormatFlags::Line); + conditionalAddFlag(base::consts::kLogLocationFormatSpecifier, base::FormatFlags::Location); + conditionalAddFlag(base::consts::kLogFunctionFormatSpecifier, base::FormatFlags::Function); + conditionalAddFlag(base::consts::kCurrentUserFormatSpecifier, base::FormatFlags::User); + conditionalAddFlag(base::consts::kCurrentHostFormatSpecifier, base::FormatFlags::Host); + conditionalAddFlag(base::consts::kMessageFormatSpecifier, base::FormatFlags::LogMessage); + conditionalAddFlag(base::consts::kVerboseLevelFormatSpecifier, base::FormatFlags::VerboseLevel); + // For date/time we need to extract user's date format first + std::size_t dateIndex = std::string::npos; + if ((dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier)) != std::string::npos) { + while (dateIndex != std::string::npos && dateIndex > 0 && formatCopy[dateIndex - 1] == base::consts::kFormatSpecifierChar) { + dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier, dateIndex + 1); + } + if (dateIndex != std::string::npos) { + addFlag(base::FormatFlags::DateTime); + updateDateFormat(dateIndex, formatCopy); + } + } + m_format = formatCopy; + updateFormatSpec(); +} + +void LogFormat::updateDateFormat(std::size_t index, base::type::string_t& currFormat) { + if (hasFlag(base::FormatFlags::DateTime)) { + index += ELPP_STRLEN(base::consts::kDateTimeFormatSpecifier); + } + const base::type::char_t* ptr = currFormat.c_str() + index; + if ((currFormat.size() > index) && (ptr[0] == '{')) { + // User has provided format for date/time + ++ptr; + int count = 1; // Start by 1 in order to remove starting brace + std::stringstream ss; + for (; *ptr; ++ptr, ++count) { + if (*ptr == '}') { + ++count; // In order to remove ending brace + break; + } + ss << static_cast(*ptr); + } + currFormat.erase(index, count); + m_dateTimeFormat = ss.str(); + } else { + // No format provided, use default + if (hasFlag(base::FormatFlags::DateTime)) { + m_dateTimeFormat = std::string(base::consts::kDefaultDateTimeFormat); + } + } +} + +void LogFormat::updateFormatSpec(void) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (m_level == Level::Debug) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kDebugLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kDebugLevelShortLogValue); + } else if (m_level == Level::Info) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kInfoLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kInfoLevelShortLogValue); + } else if (m_level == Level::Warning) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kWarningLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kWarningLevelShortLogValue); + } else if (m_level == Level::Error) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kErrorLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kErrorLevelShortLogValue); + } else if (m_level == Level::Fatal) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kFatalLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kFatalLevelShortLogValue); + } else if (m_level == Level::Verbose) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kVerboseLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kVerboseLevelShortLogValue); + } else if (m_level == Level::Trace) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kTraceLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kTraceLevelShortLogValue); + } + if (hasFlag(base::FormatFlags::User)) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentUserFormatSpecifier, + m_currentUser); + } + if (hasFlag(base::FormatFlags::Host)) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentHostFormatSpecifier, + m_currentHost); + } + // Ignore Level::Global and Level::Unknown +} + +// TypedConfigurations + +TypedConfigurations::TypedConfigurations(Configurations* configurations, + LogStreamsReferenceMapPtr logStreamsReference) { + m_configurations = configurations; + m_logStreamsReference = logStreamsReference; + build(m_configurations); +} + +TypedConfigurations::TypedConfigurations(const TypedConfigurations& other) { + this->m_configurations = other.m_configurations; + this->m_logStreamsReference = other.m_logStreamsReference; + build(m_configurations); +} + +bool TypedConfigurations::enabled(Level level) { + return getConfigByVal(level, &m_enabledMap, "enabled"); +} + +bool TypedConfigurations::toFile(Level level) { + return getConfigByVal(level, &m_toFileMap, "toFile"); +} + +const std::string& TypedConfigurations::filename(Level level) { + return getConfigByRef(level, &m_filenameMap, "filename"); +} + +bool TypedConfigurations::toStandardOutput(Level level) { + return getConfigByVal(level, &m_toStandardOutputMap, "toStandardOutput"); +} + +const base::LogFormat& TypedConfigurations::logFormat(Level level) { + return getConfigByRef(level, &m_logFormatMap, "logFormat"); +} + +const base::SubsecondPrecision& TypedConfigurations::subsecondPrecision(Level level) { + return getConfigByRef(level, &m_subsecondPrecisionMap, "subsecondPrecision"); +} + +const base::MillisecondsWidth& TypedConfigurations::millisecondsWidth(Level level) { + return getConfigByRef(level, &m_subsecondPrecisionMap, "millisecondsWidth"); +} + +bool TypedConfigurations::performanceTracking(Level level) { + return getConfigByVal(level, &m_performanceTrackingMap, "performanceTracking"); +} + +base::type::fstream_t* TypedConfigurations::fileStream(Level level) { + return getConfigByRef(level, &m_fileStreamMap, "fileStream").get(); +} + +std::size_t TypedConfigurations::maxLogFileSize(Level level) { + return getConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); +} + +std::size_t TypedConfigurations::logFlushThreshold(Level level) { + return getConfigByVal(level, &m_logFlushThresholdMap, "logFlushThreshold"); +} + +void TypedConfigurations::build(Configurations* configurations) { + base::threading::ScopedLock scopedLock(lock()); + auto getBool = [] (std::string boolStr) -> bool { // Pass by value for trimming + base::utils::Str::trim(boolStr); + return (boolStr == "TRUE" || boolStr == "true" || boolStr == "1"); + }; + std::vector withFileSizeLimit; + for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { + Configuration* conf = *it; + // We cannot use switch on strong enums because Intel C++ dont support them yet + if (conf->configurationType() == ConfigurationType::Enabled) { + setValue(conf->level(), getBool(conf->value()), &m_enabledMap); + } else if (conf->configurationType() == ConfigurationType::ToFile) { + setValue(conf->level(), getBool(conf->value()), &m_toFileMap); + } else if (conf->configurationType() == ConfigurationType::ToStandardOutput) { + setValue(conf->level(), getBool(conf->value()), &m_toStandardOutputMap); + } else if (conf->configurationType() == ConfigurationType::Filename) { + // We do not yet configure filename but we will configure in another + // loop. This is because if file cannot be created, we will force ToFile + // to be false. Because configuring logger is not necessarily performance + // sensitive operation, we can live with another loop; (by the way this loop + // is not very heavy either) + } else if (conf->configurationType() == ConfigurationType::Format) { + setValue(conf->level(), base::LogFormat(conf->level(), + base::type::string_t(conf->value().begin(), conf->value().end())), &m_logFormatMap); + } else if (conf->configurationType() == ConfigurationType::SubsecondPrecision) { + setValue(Level::Global, + base::SubsecondPrecision(static_cast(getULong(conf->value()))), &m_subsecondPrecisionMap); + } else if (conf->configurationType() == ConfigurationType::PerformanceTracking) { + setValue(Level::Global, getBool(conf->value()), &m_performanceTrackingMap); + } else if (conf->configurationType() == ConfigurationType::MaxLogFileSize) { + auto v = getULong(conf->value()); + setValue(conf->level(), static_cast(v), &m_maxLogFileSizeMap); + if (v != 0) { + withFileSizeLimit.push_back(conf); + } + } else if (conf->configurationType() == ConfigurationType::LogFlushThreshold) { + setValue(conf->level(), static_cast(getULong(conf->value())), &m_logFlushThresholdMap); + } + } + // As mentioned earlier, we will now set filename configuration in separate loop to deal with non-existent files + for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { + Configuration* conf = *it; + if (conf->configurationType() == ConfigurationType::Filename) { + insertFile(conf->level(), conf->value()); + } + } + for (std::vector::iterator conf = withFileSizeLimit.begin(); + conf != withFileSizeLimit.end(); ++conf) { + // This is not unsafe as mutex is locked in currect scope + unsafeValidateFileRolling((*conf)->level(), base::defaultPreRollOutCallback); + } +} + +unsigned long TypedConfigurations::getULong(std::string confVal) { + bool valid = true; + base::utils::Str::trim(confVal); + valid = !confVal.empty() && std::find_if(confVal.begin(), confVal.end(), + [](char c) { + return !base::utils::Str::isDigit(c); + }) == confVal.end(); + if (!valid) { + valid = false; + ELPP_ASSERT(valid, "Configuration value not a valid integer [" << confVal << "]"); + return 0; + } + return atol(confVal.c_str()); +} + +std::string TypedConfigurations::resolveFilename(const std::string& filename) { + std::string resultingFilename = filename; + std::size_t dateIndex = std::string::npos; + std::string dateTimeFormatSpecifierStr = std::string(base::consts::kDateTimeFormatSpecifierForFilename); + if ((dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str())) != std::string::npos) { + while (dateIndex > 0 && resultingFilename[dateIndex - 1] == base::consts::kFormatSpecifierChar) { + dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str(), dateIndex + 1); + } + if (dateIndex != std::string::npos) { + const char* ptr = resultingFilename.c_str() + dateIndex; + // Goto end of specifier + ptr += dateTimeFormatSpecifierStr.size(); + std::string fmt; + if ((resultingFilename.size() > dateIndex) && (ptr[0] == '{')) { + // User has provided format for date/time + ++ptr; + int count = 1; // Start by 1 in order to remove starting brace + std::stringstream ss; + for (; *ptr; ++ptr, ++count) { + if (*ptr == '}') { + ++count; // In order to remove ending brace + break; + } + ss << *ptr; + } + resultingFilename.erase(dateIndex + dateTimeFormatSpecifierStr.size(), count); + fmt = ss.str(); + } else { + fmt = std::string(base::consts::kDefaultDateTimeFormatInFilename); + } + base::SubsecondPrecision ssPrec(3); + std::string now = base::utils::DateTime::getDateTime(fmt.c_str(), &ssPrec); + base::utils::Str::replaceAll(now, '/', '-'); // Replace path element since we are dealing with filename + base::utils::Str::replaceAll(resultingFilename, dateTimeFormatSpecifierStr, now); + } + } + return resultingFilename; +} + +void TypedConfigurations::insertFile(Level level, const std::string& fullFilename) { + std::string resolvedFilename = resolveFilename(fullFilename); + if (resolvedFilename.empty()) { + std::cerr << "Could not load empty file for logging, please re-check your configurations for level [" + << LevelHelper::convertToString(level) << "]"; + } + std::string filePath = base::utils::File::extractPathFromFilename(resolvedFilename, base::consts::kFilePathSeparator); + if (filePath.size() < resolvedFilename.size()) { + base::utils::File::createPath(filePath); + } + auto create = [&](Level level) { + base::LogStreamsReferenceMap::iterator filestreamIter = m_logStreamsReference->find(resolvedFilename); + base::type::fstream_t* fs = nullptr; + if (filestreamIter == m_logStreamsReference->end()) { + // We need a completely new stream, nothing to share with + fs = base::utils::File::newFileStream(resolvedFilename); + m_filenameMap.insert(std::make_pair(level, resolvedFilename)); + m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(fs))); + m_logStreamsReference->insert(std::make_pair(resolvedFilename, base::FileStreamPtr(m_fileStreamMap.at(level)))); + } else { + // Woops! we have an existing one, share it! + m_filenameMap.insert(std::make_pair(level, filestreamIter->first)); + m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(filestreamIter->second))); + fs = filestreamIter->second.get(); + } + if (fs == nullptr) { + // We display bad file error from newFileStream() + ELPP_INTERNAL_ERROR("Setting [TO_FILE] of [" + << LevelHelper::convertToString(level) << "] to FALSE", false); + setValue(level, false, &m_toFileMap); + } + }; + // If we dont have file conf for any level, create it for Level::Global first + // otherwise create for specified level + create(m_filenameMap.empty() && m_fileStreamMap.empty() ? Level::Global : level); +} + +bool TypedConfigurations::unsafeValidateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback) { + base::type::fstream_t* fs = unsafeGetConfigByRef(level, &m_fileStreamMap, "fileStream").get(); + if (fs == nullptr) { + return true; + } + std::size_t maxLogFileSize = unsafeGetConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); + std::size_t currFileSize = base::utils::File::getSizeOfFile(fs); + if (maxLogFileSize != 0 && currFileSize >= maxLogFileSize) { + std::string fname = unsafeGetConfigByRef(level, &m_filenameMap, "filename"); + ELPP_INTERNAL_INFO(1, "Truncating log file [" << fname << "] as a result of configurations for level [" + << LevelHelper::convertToString(level) << "]"); + fs->close(); + preRollOutCallback(fname.c_str(), currFileSize); + fs->open(fname, std::fstream::out | std::fstream::trunc); + return true; + } + return false; +} + +// RegisteredHitCounters + +bool RegisteredHitCounters::validateEveryN(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + counter->validateHitCounts(n); + bool result = (n >= 1 && counter->hitCounts() != 0 && counter->hitCounts() % n == 0); + return result; +} + +/// @brief Validates counter for hits >= N, i.e, registers new if does not exist otherwise updates original one +/// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned +bool RegisteredHitCounters::validateAfterN(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + // Do not use validateHitCounts here since we do not want to reset counter here + // Note the >= instead of > because we are incrementing + // after this check + if (counter->hitCounts() >= n) + return true; + counter->increment(); + return false; +} + +/// @brief Validates counter for hits are <= n, i.e, registers new if does not exist otherwise updates original one +/// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned +bool RegisteredHitCounters::validateNTimes(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + counter->increment(); + // Do not use validateHitCounts here since we do not want to reset counter here + if (counter->hitCounts() <= n) + return true; + return false; +} + +// RegisteredLoggers + +RegisteredLoggers::RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder) : + m_defaultLogBuilder(defaultLogBuilder) { + m_defaultConfigurations.setToDefault(); + m_logStreamsReference = std::make_shared(); +} + +Logger* RegisteredLoggers::get(const std::string& id, bool forceCreation) { + base::threading::ScopedLock scopedLock(lock()); + Logger* logger_ = base::utils::Registry::get(id); + if (logger_ == nullptr && forceCreation) { + bool validId = Logger::isValidId(id); + if (!validId) { + ELPP_ASSERT(validId, "Invalid logger ID [" << id << "]. Not registering this logger."); + return nullptr; + } + logger_ = new Logger(id, m_defaultConfigurations, m_logStreamsReference); + logger_->m_logBuilder = m_defaultLogBuilder; + registerNew(id, logger_); + LoggerRegistrationCallback* callback = nullptr; + for (const std::pair& h + : m_loggerRegistrationCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->handle(logger_); + } + } + } + return logger_; +} + +bool RegisteredLoggers::remove(const std::string& id) { + if (id == base::consts::kDefaultLoggerId) { + return false; + } + // get has internal lock + Logger* logger = base::utils::Registry::get(id); + if (logger != nullptr) { + // unregister has internal lock + unregister(logger); + } + return true; +} + +void RegisteredLoggers::unsafeFlushAll(void) { + ELPP_INTERNAL_INFO(1, "Flushing all log files"); + for (base::LogStreamsReferenceMap::iterator it = m_logStreamsReference->begin(); + it != m_logStreamsReference->end(); ++it) { + if (it->second.get() == nullptr) continue; + it->second->flush(); + } +} + +// VRegistry + +VRegistry::VRegistry(base::type::VerboseLevel level, base::type::EnumType* pFlags) : m_level(level), m_pFlags(pFlags) { +} + +/// @brief Sets verbose level. Accepted range is 0-9 +void VRegistry::setLevel(base::type::VerboseLevel level) { + base::threading::ScopedLock scopedLock(lock()); + if (level > 9) + m_level = base::consts::kMaxVerboseLevel; + else + m_level = level; +} + +void VRegistry::setModules(const char* modules) { + base::threading::ScopedLock scopedLock(lock()); + auto addSuffix = [](std::stringstream& ss, const char* sfx, const char* prev) { + if (prev != nullptr && base::utils::Str::endsWith(ss.str(), std::string(prev))) { + std::string chr(ss.str().substr(0, ss.str().size() - strlen(prev))); + ss.str(std::string("")); + ss << chr; + } + if (base::utils::Str::endsWith(ss.str(), std::string(sfx))) { + std::string chr(ss.str().substr(0, ss.str().size() - strlen(sfx))); + ss.str(std::string("")); + ss << chr; + } + ss << sfx; + }; + auto insert = [&](std::stringstream& ss, base::type::VerboseLevel level) { + if (!base::utils::hasFlag(LoggingFlag::DisableVModulesExtensions, *m_pFlags)) { + addSuffix(ss, ".h", nullptr); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".c", ".h"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cpp", ".c"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cc", ".cpp"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cxx", ".cc"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".-inl.h", ".cxx"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hxx", ".-inl.h"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hpp", ".hxx"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hh", ".hpp"); + } + m_modules.insert(std::make_pair(ss.str(), level)); + }; + bool isMod = true; + bool isLevel = false; + std::stringstream ss; + int level = -1; + for (; *modules; ++modules) { + switch (*modules) { + case '=': + isLevel = true; + isMod = false; + break; + case ',': + isLevel = false; + isMod = true; + if (!ss.str().empty() && level != -1) { + insert(ss, static_cast(level)); + ss.str(std::string("")); + level = -1; + } + break; + default: + if (isMod) { + ss << *modules; + } else if (isLevel) { + if (isdigit(*modules)) { + level = static_cast(*modules) - 48; + } + } + break; + } + } + if (!ss.str().empty() && level != -1) { + insert(ss, static_cast(level)); + } +} + +bool VRegistry::allowed(base::type::VerboseLevel vlevel, const char* file) { + base::threading::ScopedLock scopedLock(lock()); + if (m_modules.empty() || file == nullptr) { + return vlevel <= m_level; + } else { + char baseFilename[base::consts::kSourceFilenameMaxLength] = ""; + base::utils::File::buildBaseFilename(file, baseFilename); + std::unordered_map::iterator it = m_modules.begin(); + for (; it != m_modules.end(); ++it) { + if (base::utils::Str::wildCardMatch(baseFilename, it->first.c_str())) { + return vlevel <= it->second; + } + } + if (base::utils::hasFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified, *m_pFlags)) { + return true; + } + return false; + } +} + +void VRegistry::setFromArgs(const base::utils::CommandLineArgs* commandLineArgs) { + if (commandLineArgs->hasParam("-v") || commandLineArgs->hasParam("--verbose") || + commandLineArgs->hasParam("-V") || commandLineArgs->hasParam("--VERBOSE")) { + setLevel(base::consts::kMaxVerboseLevel); + } else if (commandLineArgs->hasParamWithValue("--v")) { + setLevel(static_cast(atoi(commandLineArgs->getParamValue("--v")))); + } else if (commandLineArgs->hasParamWithValue("--V")) { + setLevel(static_cast(atoi(commandLineArgs->getParamValue("--V")))); + } else if ((commandLineArgs->hasParamWithValue("-vmodule")) && vModulesEnabled()) { + setModules(commandLineArgs->getParamValue("-vmodule")); + } else if (commandLineArgs->hasParamWithValue("-VMODULE") && vModulesEnabled()) { + setModules(commandLineArgs->getParamValue("-VMODULE")); + } +} + +#if !defined(ELPP_DEFAULT_LOGGING_FLAGS) +# define ELPP_DEFAULT_LOGGING_FLAGS 0x0 +#endif // !defined(ELPP_DEFAULT_LOGGING_FLAGS) +// Storage +#if ELPP_ASYNC_LOGGING +Storage::Storage(const LogBuilderPtr& defaultLogBuilder, base::IWorker* asyncDispatchWorker) : +#else +Storage::Storage(const LogBuilderPtr& defaultLogBuilder) : +#endif // ELPP_ASYNC_LOGGING + m_registeredHitCounters(new base::RegisteredHitCounters()), + m_registeredLoggers(new base::RegisteredLoggers(defaultLogBuilder)), + m_flags(ELPP_DEFAULT_LOGGING_FLAGS), + m_vRegistry(new base::VRegistry(0, &m_flags)), + +#if ELPP_ASYNC_LOGGING + m_asyncLogQueue(new base::AsyncLogQueue()), + m_asyncDispatchWorker(asyncDispatchWorker), +#endif // ELPP_ASYNC_LOGGING + + m_preRollOutCallback(base::defaultPreRollOutCallback) { + // Register default logger + m_registeredLoggers->get(std::string(base::consts::kDefaultLoggerId)); + // We register default logger anyway (worse case it's not going to register) just in case + m_registeredLoggers->get("default"); + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + // Register performance logger and reconfigure format + Logger* performanceLogger = m_registeredLoggers->get(std::string(base::consts::kPerformanceLoggerId)); + m_registeredLoggers->get("performance"); + performanceLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%datetime %level %msg")); + performanceLogger->reconfigure(); +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + +#if defined(ELPP_SYSLOG) + // Register syslog logger and reconfigure format + Logger* sysLogLogger = m_registeredLoggers->get(std::string(base::consts::kSysLogLoggerId)); + sysLogLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%level: %msg")); + sysLogLogger->reconfigure(); +#endif // defined(ELPP_SYSLOG) + addFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified); +#if ELPP_ASYNC_LOGGING + installLogDispatchCallback(std::string("AsyncLogDispatchCallback")); +#else + installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); +#endif // ELPP_ASYNC_LOGGING +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + installPerformanceTrackingCallback + (std::string("DefaultPerformanceTrackingCallback")); +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + ELPP_INTERNAL_INFO(1, "Easylogging++ has been initialized"); +#if ELPP_ASYNC_LOGGING + m_asyncDispatchWorker->start(); +#endif // ELPP_ASYNC_LOGGING +} + +Storage::~Storage(void) { + ELPP_INTERNAL_INFO(4, "Destroying storage"); +#if ELPP_ASYNC_LOGGING + ELPP_INTERNAL_INFO(5, "Replacing log dispatch callback to synchronous"); + uninstallLogDispatchCallback(std::string("AsyncLogDispatchCallback")); + installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); + ELPP_INTERNAL_INFO(5, "Destroying asyncDispatchWorker"); + base::utils::safeDelete(m_asyncDispatchWorker); + ELPP_INTERNAL_INFO(5, "Destroying asyncLogQueue"); + base::utils::safeDelete(m_asyncLogQueue); +#endif // ELPP_ASYNC_LOGGING + ELPP_INTERNAL_INFO(5, "Destroying registeredHitCounters"); + base::utils::safeDelete(m_registeredHitCounters); + ELPP_INTERNAL_INFO(5, "Destroying registeredLoggers"); + base::utils::safeDelete(m_registeredLoggers); + ELPP_INTERNAL_INFO(5, "Destroying vRegistry"); + base::utils::safeDelete(m_vRegistry); +} + +bool Storage::hasCustomFormatSpecifier(const char* formatSpecifier) { + base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); + return std::find(m_customFormatSpecifiers.begin(), m_customFormatSpecifiers.end(), + formatSpecifier) != m_customFormatSpecifiers.end(); +} + +void Storage::installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { + if (hasCustomFormatSpecifier(customFormatSpecifier.formatSpecifier())) { + return; + } + base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); + m_customFormatSpecifiers.push_back(customFormatSpecifier); +} + +bool Storage::uninstallCustomFormatSpecifier(const char* formatSpecifier) { + base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); + std::vector::iterator it = std::find(m_customFormatSpecifiers.begin(), + m_customFormatSpecifiers.end(), formatSpecifier); + if (it != m_customFormatSpecifiers.end() && strcmp(formatSpecifier, it->formatSpecifier()) == 0) { + m_customFormatSpecifiers.erase(it); + return true; + } + return false; +} + +void Storage::setApplicationArguments(int argc, char** argv) { + m_commandLineArgs.setArgs(argc, argv); + m_vRegistry->setFromArgs(commandLineArgs()); + // default log file +#if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) + if (m_commandLineArgs.hasParamWithValue(base::consts::kDefaultLogFileParam)) { + Configurations c; + c.setGlobally(ConfigurationType::Filename, + std::string(m_commandLineArgs.getParamValue(base::consts::kDefaultLogFileParam))); + registeredLoggers()->setDefaultConfigurations(c); + for (base::RegisteredLoggers::iterator it = registeredLoggers()->begin(); + it != registeredLoggers()->end(); ++it) { + it->second->configure(c); + } + } +#endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +#if defined(ELPP_LOGGING_FLAGS_FROM_ARG) + if (m_commandLineArgs.hasParamWithValue(base::consts::kLoggingFlagsParam)) { + int userInput = atoi(m_commandLineArgs.getParamValue(base::consts::kLoggingFlagsParam)); + if (ELPP_DEFAULT_LOGGING_FLAGS == 0x0) { + m_flags = userInput; + } else { + base::utils::addFlag(userInput, &m_flags); + } + } +#endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) +} + +} // namespace base + +// LogDispatchCallback +#if defined(ELPP_THREAD_SAFE) +void LogDispatchCallback::handle(const LogDispatchData* data) { + base::threading::ScopedLock scopedLock(m_fileLocksMapLock); + std::string filename = data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level()); + auto lock = m_fileLocks.find(filename); + if (lock == m_fileLocks.end()) { + m_fileLocks.emplace(std::make_pair(filename, std::unique_ptr(new base::threading::Mutex))); + } +} +#else +void LogDispatchCallback::handle(const LogDispatchData* /*data*/) {} +#endif + +base::threading::Mutex& LogDispatchCallback::fileHandle(const LogDispatchData* data) { + auto it = m_fileLocks.find(data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level())); + return *(it->second.get()); +} + +namespace base { +// DefaultLogDispatchCallback + +void DefaultLogDispatchCallback::handle(const LogDispatchData* data) { +#if defined(ELPP_THREAD_SAFE) + LogDispatchCallback::handle(data); + base::threading::ScopedLock scopedLock(fileHandle(data)); +#endif + m_data = data; + dispatch(m_data->logMessage()->logger()->logBuilder()->build(m_data->logMessage(), + m_data->dispatchAction() == base::DispatchAction::NormalLog)); +} + +void DefaultLogDispatchCallback::dispatch(base::type::string_t&& logLine) { + if (m_data->dispatchAction() == base::DispatchAction::NormalLog) { + if (m_data->logMessage()->logger()->m_typedConfigurations->toFile(m_data->logMessage()->level())) { + base::type::fstream_t* fs = m_data->logMessage()->logger()->m_typedConfigurations->fileStream( + m_data->logMessage()->level()); + if (fs != nullptr) { + fs->write(logLine.c_str(), logLine.size()); + if (fs->fail()) { + ELPP_INTERNAL_ERROR("Unable to write log to file [" + << m_data->logMessage()->logger()->m_typedConfigurations->filename(m_data->logMessage()->level()) << "].\n" + << "Few possible reasons (could be something else):\n" << " * Permission denied\n" + << " * Disk full\n" << " * Disk is not writable", true); + } else { + if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) + || (m_data->logMessage()->logger()->isFlushNeeded(m_data->logMessage()->level()))) { + m_data->logMessage()->logger()->flush(m_data->logMessage()->level(), fs); + } + } + } else { + ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(m_data->logMessage()->level()) << "] " + << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " + << m_data->logMessage()->logger()->id() << "]", false); + } + } + if (m_data->logMessage()->logger()->m_typedConfigurations->toStandardOutput(m_data->logMessage()->level())) { + if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) + m_data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, m_data->logMessage()->level()); + ELPP_COUT << ELPP_COUT_LINE(logLine); + } + } +#if defined(ELPP_SYSLOG) + else if (m_data->dispatchAction() == base::DispatchAction::SysLog) { + // Determine syslog priority + int sysLogPriority = 0; + if (m_data->logMessage()->level() == Level::Fatal) + sysLogPriority = LOG_EMERG; + else if (m_data->logMessage()->level() == Level::Error) + sysLogPriority = LOG_ERR; + else if (m_data->logMessage()->level() == Level::Warning) + sysLogPriority = LOG_WARNING; + else if (m_data->logMessage()->level() == Level::Info) + sysLogPriority = LOG_INFO; + else if (m_data->logMessage()->level() == Level::Debug) + sysLogPriority = LOG_DEBUG; + else + sysLogPriority = LOG_NOTICE; +# if defined(ELPP_UNICODE) + char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); + syslog(sysLogPriority, "%s", line); + free(line); +# else + syslog(sysLogPriority, "%s", logLine.c_str()); +# endif + } +#endif // defined(ELPP_SYSLOG) +} + +#if ELPP_ASYNC_LOGGING + +// AsyncLogDispatchCallback + +void AsyncLogDispatchCallback::handle(const LogDispatchData* data) { + base::type::string_t logLine = data->logMessage()->logger()->logBuilder()->build(data->logMessage(), + data->dispatchAction() == base::DispatchAction::NormalLog); + if (data->dispatchAction() == base::DispatchAction::NormalLog + && data->logMessage()->logger()->typedConfigurations()->toStandardOutput(data->logMessage()->level())) { + if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) + data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, data->logMessage()->level()); + ELPP_COUT << ELPP_COUT_LINE(logLine); + } + // Save resources and only queue if we want to write to file otherwise just ignore handler + if (data->logMessage()->logger()->typedConfigurations()->toFile(data->logMessage()->level())) { + ELPP->asyncLogQueue()->push(AsyncLogItem(*(data->logMessage()), *data, logLine)); + } +} + +// AsyncDispatchWorker +AsyncDispatchWorker::AsyncDispatchWorker() { + setContinueRunning(false); +} + +AsyncDispatchWorker::~AsyncDispatchWorker() { + setContinueRunning(false); + ELPP_INTERNAL_INFO(6, "Stopping dispatch worker - Cleaning log queue"); + clean(); + ELPP_INTERNAL_INFO(6, "Log queue cleaned"); +} + +bool AsyncDispatchWorker::clean(void) { + std::mutex m; + std::unique_lock lk(m); + cv.wait(lk, [] { return !ELPP->asyncLogQueue()->empty(); }); + emptyQueue(); + lk.unlock(); + cv.notify_one(); + return ELPP->asyncLogQueue()->empty(); +} + +void AsyncDispatchWorker::emptyQueue(void) { + while (!ELPP->asyncLogQueue()->empty()) { + AsyncLogItem data = ELPP->asyncLogQueue()->next(); + handle(&data); + base::threading::msleep(100); + } +} + +void AsyncDispatchWorker::start(void) { + base::threading::msleep(5000); // 5s (why?) + setContinueRunning(true); + std::thread t1(&AsyncDispatchWorker::run, this); + t1.join(); +} + +void AsyncDispatchWorker::handle(AsyncLogItem* logItem) { + LogDispatchData* data = logItem->data(); + LogMessage* logMessage = logItem->logMessage(); + Logger* logger = logMessage->logger(); + base::TypedConfigurations* conf = logger->typedConfigurations(); + base::type::string_t logLine = logItem->logLine(); + if (data->dispatchAction() == base::DispatchAction::NormalLog) { + if (conf->toFile(logMessage->level())) { + base::type::fstream_t* fs = conf->fileStream(logMessage->level()); + if (fs != nullptr) { + fs->write(logLine.c_str(), logLine.size()); + if (fs->fail()) { + ELPP_INTERNAL_ERROR("Unable to write log to file [" + << conf->filename(logMessage->level()) << "].\n" + << "Few possible reasons (could be something else):\n" << " * Permission denied\n" + << " * Disk full\n" << " * Disk is not writable", true); + } else { + if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) || (logger->isFlushNeeded(logMessage->level()))) { + logger->flush(logMessage->level(), fs); + } + } + } else { + ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(logMessage->level()) << "] " + << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " << logger->id() << "]", false); + } + } + } +# if defined(ELPP_SYSLOG) + else if (data->dispatchAction() == base::DispatchAction::SysLog) { + // Determine syslog priority + int sysLogPriority = 0; + if (logMessage->level() == Level::Fatal) + sysLogPriority = LOG_EMERG; + else if (logMessage->level() == Level::Error) + sysLogPriority = LOG_ERR; + else if (logMessage->level() == Level::Warning) + sysLogPriority = LOG_WARNING; + else if (logMessage->level() == Level::Info) + sysLogPriority = LOG_INFO; + else if (logMessage->level() == Level::Debug) + sysLogPriority = LOG_DEBUG; + else + sysLogPriority = LOG_NOTICE; +# if defined(ELPP_UNICODE) + char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); + syslog(sysLogPriority, "%s", line); + free(line); +# else + syslog(sysLogPriority, "%s", logLine.c_str()); +# endif + } +# endif // defined(ELPP_SYSLOG) +} + +void AsyncDispatchWorker::run(void) { + while (continueRunning()) { + emptyQueue(); + base::threading::msleep(10); // 10ms + } +} +#endif // ELPP_ASYNC_LOGGING + +// DefaultLogBuilder + +base::type::string_t DefaultLogBuilder::build(const LogMessage* logMessage, bool appendNewLine) const { + base::TypedConfigurations* tc = logMessage->logger()->typedConfigurations(); + const base::LogFormat* logFormat = &tc->logFormat(logMessage->level()); + base::type::string_t logLine = logFormat->format(); + char buff[base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength] = ""; + const char* bufLim = buff + sizeof(buff); + if (logFormat->hasFlag(base::FormatFlags::AppName)) { + // App name + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kAppNameFormatSpecifier, + logMessage->logger()->parentApplicationName()); + } + if (logFormat->hasFlag(base::FormatFlags::ThreadId)) { + // Thread ID + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kThreadIdFormatSpecifier, + ELPP->getThreadName(base::threading::getCurrentThreadId())); + } + if (logFormat->hasFlag(base::FormatFlags::DateTime)) { + // DateTime + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kDateTimeFormatSpecifier, + base::utils::DateTime::getDateTime(logFormat->dateTimeFormat().c_str(), + &tc->subsecondPrecision(logMessage->level()))); + } + if (logFormat->hasFlag(base::FormatFlags::Function)) { + // Function + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFunctionFormatSpecifier, logMessage->func()); + } + if (logFormat->hasFlag(base::FormatFlags::File)) { + // File + base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::FileBase)) { + // FileBase + base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); + base::utils::File::buildBaseFilename(logMessage->file(), buff); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileBaseFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::Line)) { + // Line + char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceLineMaxLength); + buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), base::consts::kSourceLineMaxLength, buf, bufLim, false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLineFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::Location)) { + // Location + char* buf = base::utils::Str::clearBuff(buff, + base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + buf = base::utils::Str::addToBuff(buff, buf, bufLim); + buf = base::utils::Str::addToBuff(":", buf, bufLim); + buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), base::consts::kSourceLineMaxLength, buf, bufLim, + false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLocationFormatSpecifier, std::string(buff)); + } + if (logMessage->level() == Level::Verbose && logFormat->hasFlag(base::FormatFlags::VerboseLevel)) { + // Verbose level + char* buf = base::utils::Str::clearBuff(buff, 1); + buf = base::utils::Str::convertAndAddToBuff(logMessage->verboseLevel(), 1, buf, bufLim, false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kVerboseLevelFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::LogMessage)) { + // Log message + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kMessageFormatSpecifier, logMessage->message()); + } +#if !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) + el::base::threading::ScopedLock lock_(ELPP->customFormatSpecifiersLock()); + ELPP_UNUSED(lock_); + for (std::vector::const_iterator it = ELPP->customFormatSpecifiers()->begin(); + it != ELPP->customFormatSpecifiers()->end(); ++it) { + std::string fs(it->formatSpecifier()); + base::type::string_t wcsFormatSpecifier(fs.begin(), fs.end()); + base::utils::Str::replaceFirstWithEscape(logLine, wcsFormatSpecifier, it->resolver()(logMessage)); + } +#endif // !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) + if (appendNewLine) logLine += ELPP_LITERAL("\n"); + return logLine; +} + +// LogDispatcher + +void LogDispatcher::dispatch(void) { + if (m_proceed && m_dispatchAction == base::DispatchAction::None) { + m_proceed = false; + } + if (!m_proceed) { + return; + } +#ifndef ELPP_NO_GLOBAL_LOCK + // see https://github.com/muflihun/easyloggingpp/issues/580 + // global lock is turned on by default unless + // ELPP_NO_GLOBAL_LOCK is defined + base::threading::ScopedLock scopedLock(ELPP->lock()); +#endif + base::TypedConfigurations* tc = m_logMessage->logger()->m_typedConfigurations; + if (ELPP->hasFlag(LoggingFlag::StrictLogFileSizeCheck)) { + tc->validateFileRolling(m_logMessage->level(), ELPP->preRollOutCallback()); + } + LogDispatchCallback* callback = nullptr; + LogDispatchData data; + for (const std::pair& h + : ELPP->m_logDispatchCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + data.setLogMessage(m_logMessage); + data.setDispatchAction(m_dispatchAction); + callback->handle(&data); + } + } +} + +// MessageBuilder + +void MessageBuilder::initialize(Logger* logger) { + m_logger = logger; + m_containerLogSeparator = ELPP->hasFlag(LoggingFlag::NewLineForContainer) ? + ELPP_LITERAL("\n ") : ELPP_LITERAL(", "); +} + +MessageBuilder& MessageBuilder::operator<<(const wchar_t* msg) { + if (msg == nullptr) { + m_logger->stream() << base::consts::kNullPointer; + return *this; + } +# if defined(ELPP_UNICODE) + m_logger->stream() << msg; +# else + char* buff_ = base::utils::Str::wcharPtrToCharPtr(msg); + m_logger->stream() << buff_; + free(buff_); +# endif + if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { + m_logger->stream() << " "; + } + return *this; +} + +// Writer + +Writer& Writer::construct(Logger* logger, bool needLock) { + m_logger = logger; + initializeLogger(logger->id(), false, needLock); + m_messageBuilder.initialize(m_logger); + return *this; +} + +Writer& Writer::construct(int count, const char* loggerIds, ...) { + if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { + va_list loggersList; + va_start(loggersList, loggerIds); + const char* id = loggerIds; + m_loggerIds.reserve(count); + for (int i = 0; i < count; ++i) { + m_loggerIds.push_back(std::string(id)); + id = va_arg(loggersList, const char*); + } + va_end(loggersList); + initializeLogger(m_loggerIds.at(0)); + } else { + initializeLogger(std::string(loggerIds)); + } + m_messageBuilder.initialize(m_logger); + return *this; +} + +void Writer::initializeLogger(const std::string& loggerId, bool lookup, bool needLock) { + if (lookup) { + m_logger = ELPP->registeredLoggers()->get(loggerId, ELPP->hasFlag(LoggingFlag::CreateLoggerAutomatically)); + } + if (m_logger == nullptr) { + { + if (!ELPP->registeredLoggers()->has(std::string(base::consts::kDefaultLoggerId))) { + // Somehow default logger has been unregistered. Not good! Register again + ELPP->registeredLoggers()->get(std::string(base::consts::kDefaultLoggerId)); + } + } + Writer(Level::Debug, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) + << "Logger [" << loggerId << "] is not registered yet!"; + m_proceed = false; + } else { + if (needLock) { + m_logger->acquireLock(); // This should not be unlocked by checking m_proceed because + // m_proceed can be changed by lines below + } + if (ELPP->hasFlag(LoggingFlag::HierarchicalLogging)) { + m_proceed = m_level == Level::Verbose ? m_logger->enabled(m_level) : + LevelHelper::castToInt(m_level) >= LevelHelper::castToInt(ELPP->m_loggingLevel); + } else { + m_proceed = m_logger->enabled(m_level); + } + } +} + +void Writer::processDispatch() { +#if ELPP_LOGGING_ENABLED + if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { + bool firstDispatched = false; + base::type::string_t logMessage; + std::size_t i = 0; + do { + if (m_proceed) { + if (firstDispatched) { + m_logger->stream() << logMessage; + } else { + firstDispatched = true; + if (m_loggerIds.size() > 1) { + logMessage = m_logger->stream().str(); + } + } + triggerDispatch(); + } else if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + if (i + 1 < m_loggerIds.size()) { + initializeLogger(m_loggerIds.at(i + 1)); + } + } while (++i < m_loggerIds.size()); + } else { + if (m_proceed) { + triggerDispatch(); + } else if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + } +#else + if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } +#endif // ELPP_LOGGING_ENABLED +} + +void Writer::triggerDispatch(void) { + try { + if (m_proceed) { + if (m_msg == nullptr) { + LogMessage msg(m_level, m_file, m_line, m_func, m_verboseLevel, + m_logger); + base::LogDispatcher(m_proceed, &msg, m_dispatchAction).dispatch(); + } else { + base::LogDispatcher(m_proceed, m_msg, m_dispatchAction).dispatch(); + } + } + if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + if (m_proceed && m_level == Level::Fatal + && !ELPP->hasFlag(LoggingFlag::DisableApplicationAbortOnFatalLog)) { + base::Writer(Level::Warning, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) + << "Aborting application. Reason: Fatal log at [" << m_file << ":" << m_line << "]"; + std::stringstream reasonStream; + reasonStream << "Fatal log at [" << m_file << ":" << m_line << "]" + << " If you wish to disable 'abort on fatal log' please use " + << "el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog)"; + base::utils::abort(1, reasonStream.str()); + } + m_proceed = false; + } + catch(std::exception & ex){ + // Extremely low memory situation; don't let exception be unhandled. + } +} + +// PErrorWriter + +PErrorWriter::~PErrorWriter(void) { + if (m_proceed) { +#if ELPP_COMPILER_MSVC + char buff[256]; + strerror_s(buff, 256, errno); + m_logger->stream() << ": " << buff << " [" << errno << "]"; +#else + m_logger->stream() << ": " << strerror(errno) << " [" << errno << "]"; +#endif + } +} + +// PerformanceTracker + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + +PerformanceTracker::PerformanceTracker(const std::string& blockName, + base::TimestampUnit timestampUnit, + const std::string& loggerId, + bool scopedLog, Level level) : + m_blockName(blockName), m_timestampUnit(timestampUnit), m_loggerId(loggerId), m_scopedLog(scopedLog), + m_level(level), m_hasChecked(false), m_lastCheckpointId(std::string()), m_enabled(false) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + // We store it locally so that if user happen to change configuration by the end of scope + // or before calling checkpoint, we still depend on state of configuration at time of construction + el::Logger* loggerPtr = ELPP->registeredLoggers()->get(loggerId, false); + m_enabled = loggerPtr != nullptr && loggerPtr->m_typedConfigurations->performanceTracking(m_level); + if (m_enabled) { + base::utils::DateTime::gettimeofday(&m_startTime); + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED +} + +PerformanceTracker::~PerformanceTracker(void) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + if (m_enabled) { + base::threading::ScopedLock scopedLock(lock()); + if (m_scopedLog) { + base::utils::DateTime::gettimeofday(&m_endTime); + base::type::string_t formattedTime = getFormattedTimeTaken(); + PerformanceTrackingData data(PerformanceTrackingData::DataType::Complete); + data.init(this); + data.m_formattedTimeTaken = formattedTime; + PerformanceTrackingCallback* callback = nullptr; + for (const std::pair& h + : ELPP->m_performanceTrackingCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->handle(&data); + } + } + } + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) +} + +void PerformanceTracker::checkpoint(const std::string& id, const char* file, base::type::LineNumber line, + const char* func) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + if (m_enabled) { + base::threading::ScopedLock scopedLock(lock()); + base::utils::DateTime::gettimeofday(&m_endTime); + base::type::string_t formattedTime = m_hasChecked ? getFormattedTimeTaken(m_lastCheckpointTime) : ELPP_LITERAL(""); + PerformanceTrackingData data(PerformanceTrackingData::DataType::Checkpoint); + data.init(this); + data.m_checkpointId = id; + data.m_file = file; + data.m_line = line; + data.m_func = func; + data.m_formattedTimeTaken = formattedTime; + PerformanceTrackingCallback* callback = nullptr; + for (const std::pair& h + : ELPP->m_performanceTrackingCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->handle(&data); + } + } + base::utils::DateTime::gettimeofday(&m_lastCheckpointTime); + m_hasChecked = true; + m_lastCheckpointId = id; + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + ELPP_UNUSED(id); + ELPP_UNUSED(file); + ELPP_UNUSED(line); + ELPP_UNUSED(func); +} + +const base::type::string_t PerformanceTracker::getFormattedTimeTaken(struct timeval startTime) const { + if (ELPP->hasFlag(LoggingFlag::FixedTimeFormat)) { + base::type::stringstream_t ss; + ss << base::utils::DateTime::getTimeDifference(m_endTime, + startTime, m_timestampUnit) << " " << base::consts::kTimeFormats[static_cast + (m_timestampUnit)].unit; + return ss.str(); + } + return base::utils::DateTime::formatTime(base::utils::DateTime::getTimeDifference(m_endTime, + startTime, m_timestampUnit), m_timestampUnit); +} + +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + +namespace debug { +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + +// StackTrace + +StackTrace::StackTraceEntry::StackTraceEntry(std::size_t index, const std::string& loc, const std::string& demang, + const std::string& hex, + const std::string& addr) : + m_index(index), + m_location(loc), + m_demangled(demang), + m_hex(hex), + m_addr(addr) { +} + +std::ostream& operator<<(std::ostream& ss, const StackTrace::StackTraceEntry& si) { + ss << "[" << si.m_index << "] " << si.m_location << (si.m_hex.empty() ? "" : "+") << si.m_hex << " " << si.m_addr << + (si.m_demangled.empty() ? "" : ":") << si.m_demangled; + return ss; +} + +std::ostream& operator<<(std::ostream& os, const StackTrace& st) { + std::vector::const_iterator it = st.m_stack.begin(); + while (it != st.m_stack.end()) { + os << " " << *it++ << "\n"; + } + return os; +} + +void StackTrace::generateNew(void) { +#ifdef HAVE_EXECINFO + m_stack.clear(); + void* stack[kMaxStack]; + unsigned int size = backtrace(stack, kMaxStack); + char** strings = backtrace_symbols(stack, size); + if (size > kStackStart) { // Skip StackTrace c'tor and generateNew + for (std::size_t i = kStackStart; i < size; ++i) { + std::string mangName; + std::string location; + std::string hex; + std::string addr; + + // entry: 2 crash.cpp.bin 0x0000000101552be5 _ZN2el4base5debug10StackTraceC1Ev + 21 + const std::string line(strings[i]); + auto p = line.find("_"); + if (p != std::string::npos) { + mangName = line.substr(p); + mangName = mangName.substr(0, mangName.find(" +")); + } + p = line.find("0x"); + if (p != std::string::npos) { + addr = line.substr(p); + addr = addr.substr(0, addr.find("_")); + } + // Perform demangling if parsed properly + if (!mangName.empty()) { + int status = 0; + char* demangName = abi::__cxa_demangle(mangName.data(), 0, 0, &status); + // if demangling is successful, output the demangled function name + if (status == 0) { + // Success (see http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html) + StackTraceEntry entry(i - 1, location, demangName, hex, addr); + m_stack.push_back(entry); + } else { + // Not successful - we will use mangled name + StackTraceEntry entry(i - 1, location, mangName, hex, addr); + m_stack.push_back(entry); + } + free(demangName); + } else { + StackTraceEntry entry(i - 1, line); + m_stack.push_back(entry); + } + } + } + free(strings); +#else + ELPP_INTERNAL_INFO(1, "Stacktrace generation not supported for selected compiler"); +#endif // ELPP_STACKTRACE +} + +// Static helper functions + +static std::string crashReason(int sig) { + std::stringstream ss; + bool foundReason = false; + for (int i = 0; i < base::consts::kCrashSignalsCount; ++i) { + if (base::consts::kCrashSignals[i].numb == sig) { + ss << "Application has crashed due to [" << base::consts::kCrashSignals[i].name << "] signal"; + if (ELPP->hasFlag(el::LoggingFlag::LogDetailedCrashReason)) { + ss << std::endl << + " " << base::consts::kCrashSignals[i].brief << std::endl << + " " << base::consts::kCrashSignals[i].detail; + } + foundReason = true; + } + } + if (!foundReason) { + ss << "Application has crashed due to unknown signal [" << sig << "]"; + } + return ss.str(); +} +/// @brief Logs reason of crash from sig +static void logCrashReason(int sig, bool stackTraceIfAvailable, Level level, const char* logger) { + if (sig == SIGINT && ELPP->hasFlag(el::LoggingFlag::IgnoreSigInt)) { + return; + } + std::stringstream ss; + ss << "CRASH HANDLED; "; + ss << crashReason(sig); +#if ELPP_STACKTRACE + if (stackTraceIfAvailable) { + ss << std::endl << " ======= Backtrace: =========" << std::endl << base::debug::StackTrace(); + } +#else + ELPP_UNUSED(stackTraceIfAvailable); +#endif // ELPP_STACKTRACE + ELPP_WRITE_LOG(el::base::Writer, level, base::DispatchAction::NormalLog, logger) << ss.str(); +} + +static inline void crashAbort(int sig) { + base::utils::abort(sig, std::string()); +} + +/// @brief Default application crash handler +/// +/// @detail This function writes log using 'default' logger, prints stack trace for GCC based compilers and aborts program. +static inline void defaultCrashHandler(int sig) { + base::debug::logCrashReason(sig, true, Level::Fatal, base::consts::kDefaultLoggerId); + base::debug::crashAbort(sig); +} + +// CrashHandler + +CrashHandler::CrashHandler(bool useDefault) { + if (useDefault) { + setHandler(defaultCrashHandler); + } +} + +void CrashHandler::setHandler(const Handler& cHandler) { + m_handler = cHandler; +#if defined(ELPP_HANDLE_SIGABRT) + int i = 0; // SIGABRT is at base::consts::kCrashSignals[0] +#else + int i = 1; +#endif // defined(ELPP_HANDLE_SIGABRT) + for (; i < base::consts::kCrashSignalsCount; ++i) { + m_handler = signal(base::consts::kCrashSignals[i].numb, cHandler); + } +} + +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) +} // namespace debug +} // namespace base + +// el + +// Helpers + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + +void Helpers::crashAbort(int sig, const char* sourceFile, unsigned int long line) { + std::stringstream ss; + ss << base::debug::crashReason(sig).c_str(); + ss << " - [Called el::Helpers::crashAbort(" << sig << ")]"; + if (sourceFile != nullptr && strlen(sourceFile) > 0) { + ss << " - Source: " << sourceFile; + if (line > 0) + ss << ":" << line; + else + ss << " (line number not specified)"; + } + base::utils::abort(sig, ss.str()); +} + +void Helpers::logCrashReason(int sig, bool stackTraceIfAvailable, Level level, const char* logger) { + el::base::debug::logCrashReason(sig, stackTraceIfAvailable, level, logger); +} + +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + +// Loggers + +Logger* Loggers::getLogger(const std::string& identity, bool registerIfNotAvailable) { + return ELPP->registeredLoggers()->get(identity, registerIfNotAvailable); +} + +void Loggers::setDefaultLogBuilder(el::LogBuilderPtr& logBuilderPtr) { + ELPP->registeredLoggers()->setDefaultLogBuilder(logBuilderPtr); +} + +bool Loggers::unregisterLogger(const std::string& identity) { + return ELPP->registeredLoggers()->remove(identity); +} + +bool Loggers::hasLogger(const std::string& identity) { + return ELPP->registeredLoggers()->has(identity); +} + +Logger* Loggers::reconfigureLogger(Logger* logger, const Configurations& configurations) { + if (!logger) return nullptr; + logger->configure(configurations); + return logger; +} + +Logger* Loggers::reconfigureLogger(const std::string& identity, const Configurations& configurations) { + return Loggers::reconfigureLogger(Loggers::getLogger(identity), configurations); +} + +Logger* Loggers::reconfigureLogger(const std::string& identity, ConfigurationType configurationType, + const std::string& value) { + Logger* logger = Loggers::getLogger(identity); + if (logger == nullptr) { + return nullptr; + } + logger->configurations()->set(Level::Global, configurationType, value); + logger->reconfigure(); + return logger; +} + +void Loggers::reconfigureAllLoggers(const Configurations& configurations) { + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); + it != ELPP->registeredLoggers()->end(); ++it) { + Loggers::reconfigureLogger(it->second, configurations); + } +} + +void Loggers::reconfigureAllLoggers(Level level, ConfigurationType configurationType, + const std::string& value) { + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); + it != ELPP->registeredLoggers()->end(); ++it) { + Logger* logger = it->second; + logger->configurations()->set(level, configurationType, value); + logger->reconfigure(); + } +} + +void Loggers::setDefaultConfigurations(const Configurations& configurations, bool reconfigureExistingLoggers) { + ELPP->registeredLoggers()->setDefaultConfigurations(configurations); + if (reconfigureExistingLoggers) { + Loggers::reconfigureAllLoggers(configurations); + } +} + +const Configurations* Loggers::defaultConfigurations(void) { + return ELPP->registeredLoggers()->defaultConfigurations(); +} + +const base::LogStreamsReferenceMapPtr Loggers::logStreamsReference(void) { + return ELPP->registeredLoggers()->logStreamsReference(); +} + +base::TypedConfigurations Loggers::defaultTypedConfigurations(void) { + return base::TypedConfigurations( + ELPP->registeredLoggers()->defaultConfigurations(), + ELPP->registeredLoggers()->logStreamsReference()); +} + +std::vector* Loggers::populateAllLoggerIds(std::vector* targetList) { + targetList->clear(); + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->list().begin(); + it != ELPP->registeredLoggers()->list().end(); ++it) { + targetList->push_back(it->first); + } + return targetList; +} + +void Loggers::configureFromGlobal(const char* globalConfigurationFilePath) { + std::ifstream gcfStream(globalConfigurationFilePath, std::ifstream::in); + ELPP_ASSERT(gcfStream.is_open(), "Unable to open global configuration file [" << globalConfigurationFilePath + << "] for parsing."); + std::string line = std::string(); + std::stringstream ss; + Logger* logger = nullptr; + auto configure = [&](void) { + ELPP_INTERNAL_INFO(8, "Configuring logger: '" << logger->id() << "' with configurations \n" << ss.str() + << "\n--------------"); + Configurations c; + c.parseFromText(ss.str()); + logger->configure(c); + }; + while (gcfStream.good()) { + std::getline(gcfStream, line); + ELPP_INTERNAL_INFO(1, "Parsing line: " << line); + base::utils::Str::trim(line); + if (Configurations::Parser::isComment(line)) continue; + Configurations::Parser::ignoreComments(&line); + base::utils::Str::trim(line); + if (line.size() > 2 && base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLoggerId))) { + if (!ss.str().empty() && logger != nullptr) { + configure(); + } + ss.str(std::string("")); + line = line.substr(2); + base::utils::Str::trim(line); + if (line.size() > 1) { + ELPP_INTERNAL_INFO(1, "Getting logger: '" << line << "'"); + logger = getLogger(line); + } + } else { + ss << line << "\n"; + } + } + if (!ss.str().empty() && logger != nullptr) { + configure(); + } +} + +bool Loggers::configureFromArg(const char* argKey) { +#if defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) + ELPP_UNUSED(argKey); +#else + if (!Helpers::commandLineArgs()->hasParamWithValue(argKey)) { + return false; + } + configureFromGlobal(Helpers::commandLineArgs()->getParamValue(argKey)); +#endif // defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) + return true; +} + +void Loggers::flushAll(void) { + ELPP->registeredLoggers()->flushAll(); +} + +void Loggers::setVerboseLevel(base::type::VerboseLevel level) { + ELPP->vRegistry()->setLevel(level); +} + +base::type::VerboseLevel Loggers::verboseLevel(void) { + return ELPP->vRegistry()->level(); +} + +void Loggers::setVModules(const char* modules) { + if (ELPP->vRegistry()->vModulesEnabled()) { + ELPP->vRegistry()->setModules(modules); + } +} + +void Loggers::clearVModules(void) { + ELPP->vRegistry()->clearModules(); +} + +// VersionInfo + +const std::string VersionInfo::version(void) { + return std::string("9.96.7"); +} +/// @brief Release date of current version +const std::string VersionInfo::releaseDate(void) { + return std::string("24-11-2018 0728hrs"); +} + +} // namespace el diff --git a/utils/Log/src/easyloggingpp/easylogging++.h b/utils/Log/src/easyloggingpp/easylogging++.h new file mode 100644 index 00000000..04ea9da2 --- /dev/null +++ b/utils/Log/src/easyloggingpp/easylogging++.h @@ -0,0 +1,4580 @@ +// +// Bismillah ar-Rahmaan ar-Raheem +// +// Easylogging++ v9.96.7 +// Single-header only, cross-platform logging library for C++ applications +// +// Copyright (c) 2012-2018 Amrayn Web Services +// Copyright (c) 2012-2018 @abumusamq +// +// This library is released under the MIT Licence. +// https://github.com/amrayn/easyloggingpp/blob/master/LICENSE +// +// https://amrayn.com +// http://muflihun.com +// + +#ifndef EASYLOGGINGPP_H +#define EASYLOGGINGPP_H + +#define ELPP_THREAD_SAFE // Working in threads. Added by xiaojiazhu +// #define ELPP_STL_LOGGING + +// Compilers and C++0x/C++11 Evaluation +#if __cplusplus >= 201103L +# define ELPP_CXX11 1 +#endif // __cplusplus >= 201103L +#if (defined(__GNUC__)) +# define ELPP_COMPILER_GCC 1 +#else +# define ELPP_COMPILER_GCC 0 +#endif +#if ELPP_COMPILER_GCC +# define ELPP_GCC_VERSION (__GNUC__ * 10000 \ ++ __GNUC_MINOR__ * 100 \ ++ __GNUC_PATCHLEVEL__) +# if defined(__GXX_EXPERIMENTAL_CXX0X__) +# define ELPP_CXX0X 1 +# endif +#endif +// Visual C++ +#if defined(_MSC_VER) +# define ELPP_COMPILER_MSVC 1 +#else +# define ELPP_COMPILER_MSVC 0 +#endif +#define ELPP_CRT_DBG_WARNINGS ELPP_COMPILER_MSVC +#if ELPP_COMPILER_MSVC +# if (_MSC_VER == 1600) +# define ELPP_CXX0X 1 +# elif(_MSC_VER >= 1700) +# define ELPP_CXX11 1 +# endif +#endif +// Clang++ +#if (defined(__clang__) && (__clang__ == 1)) +# define ELPP_COMPILER_CLANG 1 +#else +# define ELPP_COMPILER_CLANG 0 +#endif +#if ELPP_COMPILER_CLANG +# if __has_include() +# include // Make __GLIBCXX__ defined when using libstdc++ +# if !defined(__GLIBCXX__) || __GLIBCXX__ >= 20150426 +# define ELPP_CLANG_SUPPORTS_THREAD +# endif // !defined(__GLIBCXX__) || __GLIBCXX__ >= 20150426 +# endif // __has_include() +#endif +#if (defined(__MINGW32__) || defined(__MINGW64__)) +# define ELPP_MINGW 1 +#else +# define ELPP_MINGW 0 +#endif +#if (defined(__CYGWIN__) && (__CYGWIN__ == 1)) +# define ELPP_CYGWIN 1 +#else +# define ELPP_CYGWIN 0 +#endif +#if (defined(__INTEL_COMPILER)) +# define ELPP_COMPILER_INTEL 1 +#else +# define ELPP_COMPILER_INTEL 0 +#endif +// Operating System Evaluation +// Windows +#if (defined(_WIN32) || defined(_WIN64)) +# define ELPP_OS_WINDOWS 1 +#else +# define ELPP_OS_WINDOWS 0 +#endif +// Linux +#if (defined(__linux) || defined(__linux__)) +# define ELPP_OS_LINUX 1 +#else +# define ELPP_OS_LINUX 0 +#endif +#if (defined(__APPLE__)) +# define ELPP_OS_MAC 1 +#else +# define ELPP_OS_MAC 0 +#endif +#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) +# define ELPP_OS_FREEBSD 1 +#else +# define ELPP_OS_FREEBSD 0 +#endif +#if (defined(__sun)) +# define ELPP_OS_SOLARIS 1 +#else +# define ELPP_OS_SOLARIS 0 +#endif +#if (defined(_AIX)) +# define ELPP_OS_AIX 1 +#else +# define ELPP_OS_AIX 0 +#endif +#if (defined(__NetBSD__)) +# define ELPP_OS_NETBSD 1 +#else +# define ELPP_OS_NETBSD 0 +#endif +#if defined(__EMSCRIPTEN__) +# define ELPP_OS_EMSCRIPTEN 1 +#else +# define ELPP_OS_EMSCRIPTEN 0 +#endif +#if (defined(__QNX__) || defined(__QNXNTO__)) +# define ELPP_OS_QNX 1 +#else +# define ELPP_OS_QNX 0 +#endif +// Unix +#if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_NETBSD || ELPP_OS_SOLARIS || ELPP_OS_AIX || ELPP_OS_EMSCRIPTEN || ELPP_OS_QNX) && (!ELPP_OS_WINDOWS)) +# define ELPP_OS_UNIX 1 +#else +# define ELPP_OS_UNIX 0 +#endif +#if (defined(__ANDROID__)) +# define ELPP_OS_ANDROID 1 +#else +# define ELPP_OS_ANDROID 0 +#endif +// Evaluating Cygwin as *nix OS +#if !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN +# undef ELPP_OS_UNIX +# undef ELPP_OS_LINUX +# define ELPP_OS_UNIX 1 +# define ELPP_OS_LINUX 1 +#endif // !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN +#if !defined(ELPP_INTERNAL_DEBUGGING_OUT_INFO) +# define ELPP_INTERNAL_DEBUGGING_OUT_INFO std::cout +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_OUT_ERROR) +# define ELPP_INTERNAL_DEBUGGING_OUT_ERROR std::cerr +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_ENDL) +# define ELPP_INTERNAL_DEBUGGING_ENDL std::endl +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_MSG) +# define ELPP_INTERNAL_DEBUGGING_MSG(msg) msg +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +// Internal Assertions and errors +#if !defined(ELPP_DISABLE_ASSERT) +# if (defined(ELPP_DEBUG_ASSERT_FAILURE)) +# define ELPP_ASSERT(expr, msg) if (!(expr)) { \ +std::stringstream internalInfoStream; internalInfoStream << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ +<< "EASYLOGGING++ ASSERTION FAILED (LINE: " << __LINE__ << ") [" #expr << "] WITH MESSAGE \"" \ +<< ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" << ELPP_INTERNAL_DEBUGGING_ENDL; base::utils::abort(1, \ +"ELPP Assertion failure, please define ELPP_DEBUG_ASSERT_FAILURE"); } +# else +# define ELPP_ASSERT(expr, msg) if (!(expr)) { \ +std::stringstream internalInfoStream; internalInfoStream << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR\ +<< "ASSERTION FAILURE FROM EASYLOGGING++ (LINE: " \ +<< __LINE__ << ") [" #expr << "] WITH MESSAGE \"" << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" \ +<< ELPP_INTERNAL_DEBUGGING_ENDL; } +# endif // (defined(ELPP_DEBUG_ASSERT_FAILURE)) +#else +# define ELPP_ASSERT(x, y) +#endif //(!defined(ELPP_DISABLE_ASSERT) +#if ELPP_COMPILER_MSVC +# define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ +{ char buff[256]; strerror_s(buff, 256, errno); \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << buff << " [" << errno << "]";} (void)0 +#else +# define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << strerror(errno) << " [" << errno << "]"; (void)0 +#endif // ELPP_COMPILER_MSVC +#if defined(ELPP_DEBUG_ERRORS) +# if !defined(ELPP_INTERNAL_ERROR) +# define ELPP_INTERNAL_ERROR(msg, pe) { \ +std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ +<< "ERROR FROM EASYLOGGING++ (LINE: " << __LINE__ << ") " \ +<< ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << ELPP_INTERNAL_DEBUGGING_ENDL; \ +if (pe) { ELPP_INTERNAL_DEBUGGING_OUT_ERROR << " "; ELPP_INTERNAL_DEBUGGING_WRITE_PERROR; }} (void)0 +# endif +#else +# undef ELPP_INTERNAL_INFO +# define ELPP_INTERNAL_ERROR(msg, pe) +#endif // defined(ELPP_DEBUG_ERRORS) +#if (defined(ELPP_DEBUG_INFO)) +# if !(defined(ELPP_INTERNAL_INFO_LEVEL)) +# define ELPP_INTERNAL_INFO_LEVEL 9 +# endif // !(defined(ELPP_INTERNAL_INFO_LEVEL)) +# if !defined(ELPP_INTERNAL_INFO) +# define ELPP_INTERNAL_INFO(lvl, msg) { if (lvl <= ELPP_INTERNAL_INFO_LEVEL) { \ +std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_INFO << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) \ +<< ELPP_INTERNAL_DEBUGGING_ENDL; }} +# endif +#else +# undef ELPP_INTERNAL_INFO +# define ELPP_INTERNAL_INFO(lvl, msg) +#endif // (defined(ELPP_DEBUG_INFO)) +#if (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) +# if (ELPP_COMPILER_GCC && !ELPP_MINGW && !ELPP_CYGWIN && !ELPP_OS_ANDROID && !ELPP_OS_EMSCRIPTEN && !ELPP_OS_QNX) +# define ELPP_STACKTRACE 1 +# else +# if ELPP_COMPILER_MSVC +# pragma message("Stack trace not available for this compiler") +# else +# warning "Stack trace not available for this compiler"; +# endif // ELPP_COMPILER_MSVC +# define ELPP_STACKTRACE 0 +# endif // ELPP_COMPILER_GCC +#else +# define ELPP_STACKTRACE 0 +#endif // (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) +// Miscellaneous macros +#define ELPP_UNUSED(x) (void)x +#if ELPP_OS_UNIX +// Log file permissions for unix-based systems +# define ELPP_LOG_PERMS S_IRUSR | S_IWUSR | S_IXUSR | S_IWGRP | S_IRGRP | S_IXGRP | S_IWOTH | S_IXOTH +#endif // ELPP_OS_UNIX +#if defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC +# if defined(ELPP_EXPORT_SYMBOLS) +# define ELPP_EXPORT __declspec(dllexport) +# else +# define ELPP_EXPORT __declspec(dllimport) +# endif // defined(ELPP_EXPORT_SYMBOLS) +#else +# define ELPP_EXPORT +#endif // defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC +// Some special functions that are VC++ specific +#undef STRTOK +#undef STRERROR +#undef STRCAT +#undef STRCPY +#if ELPP_CRT_DBG_WARNINGS +# define STRTOK(a, b, c) strtok_s(a, b, c) +# define STRERROR(a, b, c) strerror_s(a, b, c) +# define STRCAT(a, b, len) strcat_s(a, len, b) +# define STRCPY(a, b, len) strcpy_s(a, len, b) +#else +# define STRTOK(a, b, c) strtok(a, b) +# define STRERROR(a, b, c) strerror(c) +# define STRCAT(a, b, len) strcat(a, b) +# define STRCPY(a, b, len) strcpy(a, b) +#endif +// Compiler specific support evaluations +#if (ELPP_MINGW && !defined(ELPP_FORCE_USE_STD_THREAD)) +# define ELPP_USE_STD_THREADING 0 +#else +# if ((ELPP_COMPILER_CLANG && defined(ELPP_CLANG_SUPPORTS_THREAD)) || \ + (!ELPP_COMPILER_CLANG && defined(ELPP_CXX11)) || \ + defined(ELPP_FORCE_USE_STD_THREAD)) +# define ELPP_USE_STD_THREADING 1 +# else +# define ELPP_USE_STD_THREADING 0 +# endif +#endif +#undef ELPP_FINAL +#if ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) +# define ELPP_FINAL +#else +# define ELPP_FINAL final +#endif // ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) +#if defined(ELPP_EXPERIMENTAL_ASYNC) +# define ELPP_ASYNC_LOGGING 1 +#else +# define ELPP_ASYNC_LOGGING 0 +#endif // defined(ELPP_EXPERIMENTAL_ASYNC) +#if defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING +# define ELPP_THREADING_ENABLED 1 +#else +# define ELPP_THREADING_ENABLED 0 +#endif // defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING +// Function macro ELPP_FUNC +#undef ELPP_FUNC +#if ELPP_COMPILER_MSVC // Visual C++ +# define ELPP_FUNC __FUNCSIG__ +#elif ELPP_COMPILER_GCC // GCC +# define ELPP_FUNC __PRETTY_FUNCTION__ +#elif ELPP_COMPILER_INTEL // Intel C++ +# define ELPP_FUNC __PRETTY_FUNCTION__ +#elif ELPP_COMPILER_CLANG // Clang++ +# define ELPP_FUNC __PRETTY_FUNCTION__ +#else +# if defined(__func__) +# define ELPP_FUNC __func__ +# else +# define ELPP_FUNC "" +# endif // defined(__func__) +#endif // defined(_MSC_VER) +#undef ELPP_VARIADIC_TEMPLATES_SUPPORTED +// Keep following line commented until features are fixed +#define ELPP_VARIADIC_TEMPLATES_SUPPORTED \ +(ELPP_COMPILER_GCC || ELPP_COMPILER_CLANG || ELPP_COMPILER_INTEL || (ELPP_COMPILER_MSVC && _MSC_VER >= 1800)) +// Logging Enable/Disable macros +#if defined(ELPP_DISABLE_LOGS) +#define ELPP_LOGGING_ENABLED 0 +#else +#define ELPP_LOGGING_ENABLED 1 +#endif +#if (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_DEBUG_LOG 1 +#else +# define ELPP_DEBUG_LOG 0 +#endif // (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_INFO_LOG 1 +#else +# define ELPP_INFO_LOG 0 +#endif // (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_WARNING_LOG 1 +#else +# define ELPP_WARNING_LOG 0 +#endif // (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_ERROR_LOG 1 +#else +# define ELPP_ERROR_LOG 0 +#endif // (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_FATAL_LOG 1 +#else +# define ELPP_FATAL_LOG 0 +#endif // (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_TRACE_LOG 1 +#else +# define ELPP_TRACE_LOG 0 +#endif // (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_VERBOSE_LOG 1 +#else +# define ELPP_VERBOSE_LOG 0 +#endif // (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!(ELPP_CXX0X || ELPP_CXX11)) +# error "C++0x (or higher) support not detected! (Is `-std=c++11' missing?)" +#endif // (!(ELPP_CXX0X || ELPP_CXX11)) +// Headers +#if defined(ELPP_SYSLOG) +# include +#endif // defined(ELPP_SYSLOG) +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(ELPP_UNICODE) +# include +# if ELPP_OS_WINDOWS +# include +# endif // ELPP_OS_WINDOWS +#endif // defined(ELPP_UNICODE) +#ifdef HAVE_EXECINFO +# include +# include +#endif // ENABLE_EXECINFO +#if ELPP_OS_ANDROID +# include +#endif // ELPP_OS_ANDROID +#if ELPP_OS_UNIX +# include +# include +#elif ELPP_OS_WINDOWS +# include +# include +# if defined(WIN32_LEAN_AND_MEAN) +# if defined(ELPP_WINSOCK2) +# include +# else +# include +# endif // defined(ELPP_WINSOCK2) +# endif // defined(WIN32_LEAN_AND_MEAN) +#endif // ELPP_OS_UNIX +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if ELPP_THREADING_ENABLED +# if ELPP_USE_STD_THREADING +# include +# include +# else +# if ELPP_OS_UNIX +# include +# endif // ELPP_OS_UNIX +# endif // ELPP_USE_STD_THREADING +#endif // ELPP_THREADING_ENABLED +#if ELPP_ASYNC_LOGGING +# if defined(ELPP_NO_SLEEP_FOR) +# include +# endif // defined(ELPP_NO_SLEEP_FOR) +# include +# include +# include +#endif // ELPP_ASYNC_LOGGING +#if defined(ELPP_STL_LOGGING) +// For logging STL based templates +# include +# include +# include +# include +# include +# include +# if defined(ELPP_LOG_STD_ARRAY) +# include +# endif // defined(ELPP_LOG_STD_ARRAY) +# if defined(ELPP_LOG_UNORDERED_SET) +# include +# endif // defined(ELPP_UNORDERED_SET) +#endif // defined(ELPP_STL_LOGGING) +#if defined(ELPP_QT_LOGGING) +// For logging Qt based classes & templates +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif // defined(ELPP_QT_LOGGING) +#if defined(ELPP_BOOST_LOGGING) +// For logging boost based classes & templates +# include +# include +# include +# include +# include +# include +# include +# include +#endif // defined(ELPP_BOOST_LOGGING) +#if defined(ELPP_WXWIDGETS_LOGGING) +// For logging wxWidgets based classes & templates +# include +#endif // defined(ELPP_WXWIDGETS_LOGGING) +#if defined(ELPP_UTC_DATETIME) +# define elpptime_r gmtime_r +# define elpptime_s gmtime_s +# define elpptime gmtime +#else +# define elpptime_r localtime_r +# define elpptime_s localtime_s +# define elpptime localtime +#endif // defined(ELPP_UTC_DATETIME) +// Forward declarations +namespace el { +class Logger; +class LogMessage; +class PerformanceTrackingData; +class Loggers; +class Helpers; +template class Callback; +class LogDispatchCallback; +class PerformanceTrackingCallback; +class LoggerRegistrationCallback; +class LogDispatchData; +namespace base { +class Storage; +class RegisteredLoggers; +class PerformanceTracker; +class MessageBuilder; +class Writer; +class PErrorWriter; +class LogDispatcher; +class DefaultLogBuilder; +class DefaultLogDispatchCallback; +#if ELPP_ASYNC_LOGGING +class AsyncLogDispatchCallback; +class AsyncDispatchWorker; +#endif // ELPP_ASYNC_LOGGING +class DefaultPerformanceTrackingCallback; +} // namespace base +} // namespace el +/// @brief Easylogging++ entry namespace +namespace el { +/// @brief Namespace containing base/internal functionality used by Easylogging++ +namespace base { +/// @brief Data types used by Easylogging++ +namespace type { +#undef ELPP_LITERAL +#undef ELPP_STRLEN +#undef ELPP_COUT +#if defined(ELPP_UNICODE) +# define ELPP_LITERAL(txt) L##txt +# define ELPP_STRLEN wcslen +# if defined ELPP_CUSTOM_COUT +# define ELPP_COUT ELPP_CUSTOM_COUT +# else +# define ELPP_COUT std::wcout +# endif // defined ELPP_CUSTOM_COUT +typedef wchar_t char_t; +typedef std::wstring string_t; +typedef std::wstringstream stringstream_t; +typedef std::wfstream fstream_t; +typedef std::wostream ostream_t; +#else +# define ELPP_LITERAL(txt) txt +# define ELPP_STRLEN strlen +# if defined ELPP_CUSTOM_COUT +# define ELPP_COUT ELPP_CUSTOM_COUT +# else +# define ELPP_COUT std::cout +# endif // defined ELPP_CUSTOM_COUT +typedef char char_t; +typedef std::string string_t; +typedef std::stringstream stringstream_t; +typedef std::fstream fstream_t; +typedef std::ostream ostream_t; +#endif // defined(ELPP_UNICODE) +#if defined(ELPP_CUSTOM_COUT_LINE) +# define ELPP_COUT_LINE(logLine) ELPP_CUSTOM_COUT_LINE(logLine) +#else +# define ELPP_COUT_LINE(logLine) logLine << std::flush +#endif // defined(ELPP_CUSTOM_COUT_LINE) +typedef unsigned int EnumType; +typedef unsigned short VerboseLevel; +typedef unsigned long int LineNumber; +typedef std::shared_ptr StoragePointer; +typedef std::shared_ptr LogDispatchCallbackPtr; +typedef std::shared_ptr PerformanceTrackingCallbackPtr; +typedef std::shared_ptr LoggerRegistrationCallbackPtr; +typedef std::unique_ptr PerformanceTrackerPtr; +} // namespace type +/// @brief Internal helper class that prevent copy constructor for class +/// +/// @detail When using this class simply inherit it privately +class NoCopy { + protected: + NoCopy(void) {} + private: + NoCopy(const NoCopy&); + NoCopy& operator=(const NoCopy&); +}; +/// @brief Internal helper class that makes all default constructors private. +/// +/// @detail This prevents initializing class making it static unless an explicit constructor is declared. +/// When using this class simply inherit it privately +class StaticClass { + private: + StaticClass(void); + StaticClass(const StaticClass&); + StaticClass& operator=(const StaticClass&); +}; +} // namespace base +/// @brief Represents enumeration for severity level used to determine level of logging +/// +/// @detail With Easylogging++, developers may disable or enable any level regardless of +/// what the severity is. Or they can choose to log using hierarchical logging flag +enum class Level : base::type::EnumType { + /// @brief Generic level that represents all the levels. Useful when setting global configuration for all levels + Global = 1, + /// @brief Information that can be useful to back-trace certain events - mostly useful than debug logs. + Trace = 2, + /// @brief Informational events most useful for developers to debug application + Debug = 4, + /// @brief Severe error information that will presumably abort application + Fatal = 8, + /// @brief Information representing errors in application but application will keep running + Error = 16, + /// @brief Useful when application has potentially harmful situations + Warning = 32, + /// @brief Information that can be highly useful and vary with verbose logging level. + Verbose = 64, + /// @brief Mainly useful to represent current progress of application + Info = 128, + /// @brief Represents unknown level + Unknown = 1010 +}; +} // namespace el +namespace std { +template<> struct hash { + public: + std::size_t operator()(const el::Level& l) const { + return hash {}(static_cast(l)); + } +}; +} +namespace el { +/// @brief Static class that contains helper functions for el::Level +class LevelHelper : base::StaticClass { + public: + /// @brief Represents minimum valid level. Useful when iterating through enum. + static const base::type::EnumType kMinValid = static_cast(Level::Trace); + /// @brief Represents maximum valid level. This is used internally and you should not need it. + static const base::type::EnumType kMaxValid = static_cast(Level::Info); + /// @brief Casts level to int, useful for iterating through enum. + static base::type::EnumType castToInt(Level level) { + return static_cast(level); + } + /// @brief Casts int(ushort) to level, useful for iterating through enum. + static Level castFromInt(base::type::EnumType l) { + return static_cast(l); + } + /// @brief Converts level to associated const char* + /// @return Upper case string based level. + static const char* convertToString(Level level); + /// @brief Converts from levelStr to Level + /// @param levelStr Upper case string based level. + /// Lower case is also valid but providing upper case is recommended. + static Level convertFromString(const char* levelStr); + /// @brief Applies specified function to each level starting from startIndex + /// @param startIndex initial value to start the iteration from. This is passed as pointer and + /// is left-shifted so this can be used inside function (fn) to represent current level. + /// @param fn function to apply with each level. This bool represent whether or not to stop iterating through levels. + static void forEachLevel(base::type::EnumType* startIndex, const std::function& fn); +}; +/// @brief Represents enumeration of ConfigurationType used to configure or access certain aspect +/// of logging +enum class ConfigurationType : base::type::EnumType { + /// @brief Determines whether or not corresponding level and logger of logging is enabled + /// You may disable all logs by using el::Level::Global + Enabled = 1, + /// @brief Whether or not to write corresponding log to log file + ToFile = 2, + /// @brief Whether or not to write corresponding level and logger log to standard output. + /// By standard output meaning termnal, command prompt etc + ToStandardOutput = 4, + /// @brief Determines format of logging corresponding level and logger. + Format = 8, + /// @brief Determines log file (full path) to write logs to for corresponding level and logger + Filename = 16, + /// @brief Specifies precision of the subsecond part. It should be within range (1-6). + SubsecondPrecision = 32, + /// @brief Alias of SubsecondPrecision (for backward compatibility) + MillisecondsWidth = SubsecondPrecision, + /// @brief Determines whether or not performance tracking is enabled. + /// + /// @detail This does not depend on logger or level. Performance tracking always uses 'performance' logger + PerformanceTracking = 64, + /// @brief Specifies log file max size. + /// + /// @detail If file size of corresponding log file (for corresponding level) is >= specified size, log file will + /// be truncated and re-initiated. + MaxLogFileSize = 128, + /// @brief Specifies number of log entries to hold until we flush pending log data + LogFlushThreshold = 256, + /// @brief Represents unknown configuration + Unknown = 1010 +}; +/// @brief Static class that contains helper functions for el::ConfigurationType +class ConfigurationTypeHelper : base::StaticClass { + public: + /// @brief Represents minimum valid configuration type. Useful when iterating through enum. + static const base::type::EnumType kMinValid = static_cast(ConfigurationType::Enabled); + /// @brief Represents maximum valid configuration type. This is used internally and you should not need it. + static const base::type::EnumType kMaxValid = static_cast(ConfigurationType::MaxLogFileSize); + /// @brief Casts configuration type to int, useful for iterating through enum. + static base::type::EnumType castToInt(ConfigurationType configurationType) { + return static_cast(configurationType); + } + /// @brief Casts int(ushort) to configuration type, useful for iterating through enum. + static ConfigurationType castFromInt(base::type::EnumType c) { + return static_cast(c); + } + /// @brief Converts configuration type to associated const char* + /// @returns Upper case string based configuration type. + static const char* convertToString(ConfigurationType configurationType); + /// @brief Converts from configStr to ConfigurationType + /// @param configStr Upper case string based configuration type. + /// Lower case is also valid but providing upper case is recommended. + static ConfigurationType convertFromString(const char* configStr); + /// @brief Applies specified function to each configuration type starting from startIndex + /// @param startIndex initial value to start the iteration from. This is passed by pointer and is left-shifted + /// so this can be used inside function (fn) to represent current configuration type. + /// @param fn function to apply with each configuration type. + /// This bool represent whether or not to stop iterating through configurations. + static inline void forEachConfigType(base::type::EnumType* startIndex, const std::function& fn); +}; +/// @brief Flags used while writing logs. This flags are set by user +enum class LoggingFlag : base::type::EnumType { + /// @brief Makes sure we have new line for each container log entry + NewLineForContainer = 1, + /// @brief Makes sure if -vmodule is used and does not specifies a module, then verbose + /// logging is allowed via that module. + AllowVerboseIfModuleNotSpecified = 2, + /// @brief When handling crashes by default, detailed crash reason will be logged as well + LogDetailedCrashReason = 4, + /// @brief Allows to disable application abortion when logged using FATAL level + DisableApplicationAbortOnFatalLog = 8, + /// @brief Flushes log with every log-entry (performance sensitive) - Disabled by default + ImmediateFlush = 16, + /// @brief Enables strict file rolling + StrictLogFileSizeCheck = 32, + /// @brief Make terminal output colorful for supported terminals + ColoredTerminalOutput = 64, + /// @brief Supports use of multiple logging in same macro, e.g, CLOG(INFO, "default", "network") + MultiLoggerSupport = 128, + /// @brief Disables comparing performance tracker's checkpoints + DisablePerformanceTrackingCheckpointComparison = 256, + /// @brief Disable VModules + DisableVModules = 512, + /// @brief Disable VModules extensions + DisableVModulesExtensions = 1024, + /// @brief Enables hierarchical logging + HierarchicalLogging = 2048, + /// @brief Creates logger automatically when not available + CreateLoggerAutomatically = 4096, + /// @brief Adds spaces b/w logs that separated by left-shift operator + AutoSpacing = 8192, + /// @brief Preserves time format and does not convert it to sec, hour etc (performance tracking only) + FixedTimeFormat = 16384, + // @brief Ignore SIGINT or crash + IgnoreSigInt = 32768, +}; +namespace base { +/// @brief Namespace containing constants used internally. +namespace consts { +static const char kFormatSpecifierCharValue = 'v'; +static const char kFormatSpecifierChar = '%'; +static const unsigned int kMaxLogPerCounter = 100000; +static const unsigned int kMaxLogPerContainer = 100; +static const unsigned int kDefaultSubsecondPrecision = 3; + +#ifdef ELPP_DEFAULT_LOGGER +static const char* kDefaultLoggerId = ELPP_DEFAULT_LOGGER; +#else +static const char* kDefaultLoggerId = "default"; +#endif + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) +#ifdef ELPP_DEFAULT_PERFORMANCE_LOGGER +static const char* kPerformanceLoggerId = ELPP_DEFAULT_PERFORMANCE_LOGGER; +#else +static const char* kPerformanceLoggerId = "performance"; +#endif // ELPP_DEFAULT_PERFORMANCE_LOGGER +#endif + +#if defined(ELPP_SYSLOG) +static const char* kSysLogLoggerId = "syslog"; +#endif // defined(ELPP_SYSLOG) + +#if ELPP_OS_WINDOWS +static const char* kFilePathSeparator = "\\"; +#else +static const char* kFilePathSeparator = "/"; +#endif // ELPP_OS_WINDOWS + +static const std::size_t kSourceFilenameMaxLength = 100; +static const std::size_t kSourceLineMaxLength = 10; +static const Level kPerformanceTrackerDefaultLevel = Level::Info; +const struct { + double value; + const base::type::char_t* unit; +} kTimeFormats[] = { + { 1000.0f, ELPP_LITERAL("us") }, + { 1000.0f, ELPP_LITERAL("ms") }, + { 60.0f, ELPP_LITERAL("seconds") }, + { 60.0f, ELPP_LITERAL("minutes") }, + { 24.0f, ELPP_LITERAL("hours") }, + { 7.0f, ELPP_LITERAL("days") } +}; +static const int kTimeFormatsCount = sizeof(kTimeFormats) / sizeof(kTimeFormats[0]); +const struct { + int numb; + const char* name; + const char* brief; + const char* detail; +} kCrashSignals[] = { + // NOTE: Do not re-order, if you do please check CrashHandler(bool) constructor and CrashHandler::setHandler(..) + { + SIGABRT, "SIGABRT", "Abnormal termination", + "Program was abnormally terminated." + }, + { + SIGFPE, "SIGFPE", "Erroneous arithmetic operation", + "Arithmetic operation issue such as division by zero or operation resulting in overflow." + }, + { + SIGILL, "SIGILL", "Illegal instruction", + "Generally due to a corruption in the code or to an attempt to execute data." + }, + { + SIGSEGV, "SIGSEGV", "Invalid access to memory", + "Program is trying to read an invalid (unallocated, deleted or corrupted) or inaccessible memory." + }, + { + SIGINT, "SIGINT", "Interactive attention signal", + "Interruption generated (generally) by user or operating system." + }, +}; +static const int kCrashSignalsCount = sizeof(kCrashSignals) / sizeof(kCrashSignals[0]); +} // namespace consts +} // namespace base +typedef std::function PreRollOutCallback; +namespace base { +static inline void defaultPreRollOutCallback(const char*, std::size_t) {} +/// @brief Enum to represent timestamp unit +enum class TimestampUnit : base::type::EnumType { + Microsecond = 0, Millisecond = 1, Second = 2, Minute = 3, Hour = 4, Day = 5 +}; +/// @brief Format flags used to determine specifiers that are active for performance improvements. +enum class FormatFlags : base::type::EnumType { + DateTime = 1 << 1, + LoggerId = 1 << 2, + File = 1 << 3, + Line = 1 << 4, + Location = 1 << 5, + Function = 1 << 6, + User = 1 << 7, + Host = 1 << 8, + LogMessage = 1 << 9, + VerboseLevel = 1 << 10, + AppName = 1 << 11, + ThreadId = 1 << 12, + Level = 1 << 13, + FileBase = 1 << 14, + LevelShort = 1 << 15 +}; +/// @brief A subsecond precision class containing actual width and offset of the subsecond part +class SubsecondPrecision { + public: + SubsecondPrecision(void) { + init(base::consts::kDefaultSubsecondPrecision); + } + explicit SubsecondPrecision(int width) { + init(width); + } + bool operator==(const SubsecondPrecision& ssPrec) { + return m_width == ssPrec.m_width && m_offset == ssPrec.m_offset; + } + int m_width; + unsigned int m_offset; + private: + void init(int width); +}; +/// @brief Type alias of SubsecondPrecision +typedef SubsecondPrecision MillisecondsWidth; +/// @brief Namespace containing utility functions/static classes used internally +namespace utils { +/// @brief Deletes memory safely and points to null +template +static +typename std::enable_if::value, void>::type +safeDelete(T*& pointer) { + if (pointer == nullptr) + return; + delete pointer; + pointer = nullptr; +} +/// @brief Bitwise operations for C++11 strong enum class. This casts e into Flag_T and returns value after bitwise operation +/// Use these function as
flag = bitwise::Or(MyEnum::val1, flag);
+namespace bitwise { +template +static inline base::type::EnumType And(Enum e, base::type::EnumType flag) { + return static_cast(flag) & static_cast(e); +} +template +static inline base::type::EnumType Not(Enum e, base::type::EnumType flag) { + return static_cast(flag) & ~(static_cast(e)); +} +template +static inline base::type::EnumType Or(Enum e, base::type::EnumType flag) { + return static_cast(flag) | static_cast(e); +} +} // namespace bitwise +template +static inline void addFlag(Enum e, base::type::EnumType* flag) { + *flag = base::utils::bitwise::Or(e, *flag); +} +template +static inline void removeFlag(Enum e, base::type::EnumType* flag) { + *flag = base::utils::bitwise::Not(e, *flag); +} +template +static inline bool hasFlag(Enum e, base::type::EnumType flag) { + return base::utils::bitwise::And(e, flag) > 0x0; +} +} // namespace utils +namespace threading { +#if ELPP_THREADING_ENABLED +# if !ELPP_USE_STD_THREADING +namespace internal { +/// @brief A mutex wrapper for compiler that dont yet support std::recursive_mutex +class Mutex : base::NoCopy { + public: + Mutex(void) { +# if ELPP_OS_UNIX + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&m_underlyingMutex, &attr); + pthread_mutexattr_destroy(&attr); +# elif ELPP_OS_WINDOWS + InitializeCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + virtual ~Mutex(void) { +# if ELPP_OS_UNIX + pthread_mutex_destroy(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + DeleteCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline void lock(void) { +# if ELPP_OS_UNIX + pthread_mutex_lock(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + EnterCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline bool try_lock(void) { +# if ELPP_OS_UNIX + return (pthread_mutex_trylock(&m_underlyingMutex) == 0); +# elif ELPP_OS_WINDOWS + return TryEnterCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline void unlock(void) { +# if ELPP_OS_UNIX + pthread_mutex_unlock(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + LeaveCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + private: +# if ELPP_OS_UNIX + pthread_mutex_t m_underlyingMutex; +# elif ELPP_OS_WINDOWS + CRITICAL_SECTION m_underlyingMutex; +# endif // ELPP_OS_UNIX +}; +/// @brief Scoped lock for compiler that dont yet support std::lock_guard +template +class ScopedLock : base::NoCopy { + public: + explicit ScopedLock(M& mutex) { + m_mutex = &mutex; + m_mutex->lock(); + } + + virtual ~ScopedLock(void) { + m_mutex->unlock(); + } + private: + M* m_mutex; + ScopedLock(void); +}; +} // namespace internal +typedef base::threading::internal::Mutex Mutex; +typedef base::threading::internal::ScopedLock ScopedLock; +# else +typedef std::recursive_mutex Mutex; +typedef std::lock_guard ScopedLock; +# endif // !ELPP_USE_STD_THREADING +#else +namespace internal { +/// @brief Mutex wrapper used when multi-threading is disabled. +class NoMutex : base::NoCopy { + public: + NoMutex(void) {} + inline void lock(void) {} + inline bool try_lock(void) { + return true; + } + inline void unlock(void) {} +}; +/// @brief Lock guard wrapper used when multi-threading is disabled. +template +class NoScopedLock : base::NoCopy { + public: + explicit NoScopedLock(Mutex&) { + } + virtual ~NoScopedLock(void) { + } + private: + NoScopedLock(void); +}; +} // namespace internal +typedef base::threading::internal::NoMutex Mutex; +typedef base::threading::internal::NoScopedLock ScopedLock; +#endif // ELPP_THREADING_ENABLED +/// @brief Base of thread safe class, this class is inheritable-only +class ThreadSafe { + public: + virtual inline void acquireLock(void) ELPP_FINAL { m_mutex.lock(); } + virtual inline void releaseLock(void) ELPP_FINAL { m_mutex.unlock(); } + virtual inline base::threading::Mutex& lock(void) ELPP_FINAL { return m_mutex; } + protected: + ThreadSafe(void) {} + virtual ~ThreadSafe(void) {} + private: + base::threading::Mutex m_mutex; +}; + +#if ELPP_THREADING_ENABLED +# if !ELPP_USE_STD_THREADING +/// @brief Gets ID of currently running threading in windows systems. On unix, nothing is returned. +static std::string getCurrentThreadId(void) { + std::stringstream ss; +# if (ELPP_OS_WINDOWS) + ss << GetCurrentThreadId(); +# endif // (ELPP_OS_WINDOWS) + return ss.str(); +} +# else +/// @brief Gets ID of currently running threading using std::this_thread::get_id() +static std::string getCurrentThreadId(void) { + std::stringstream ss; + ss << std::this_thread::get_id(); + return ss.str(); +} +# endif // !ELPP_USE_STD_THREADING +#else +static inline std::string getCurrentThreadId(void) { + return std::string(); +} +#endif // ELPP_THREADING_ENABLED +} // namespace threading +namespace utils { +class File : base::StaticClass { + public: + /// @brief Creates new out file stream for specified filename. + /// @return Pointer to newly created fstream or nullptr + static base::type::fstream_t* newFileStream(const std::string& filename); + + /// @brief Gets size of file provided in stream + static std::size_t getSizeOfFile(base::type::fstream_t* fs); + + /// @brief Determines whether or not provided path exist in current file system + static bool pathExists(const char* path, bool considerFile = false); + + /// @brief Creates specified path on file system + /// @param path Path to create. + static bool createPath(const std::string& path); + /// @brief Extracts path of filename with leading slash + static std::string extractPathFromFilename(const std::string& fullPath, + const char* separator = base::consts::kFilePathSeparator); + /// @brief builds stripped filename and puts it in buff + static void buildStrippedFilename(const char* filename, char buff[], + std::size_t limit = base::consts::kSourceFilenameMaxLength); + /// @brief builds base filename and puts it in buff + static void buildBaseFilename(const std::string& fullPath, char buff[], + std::size_t limit = base::consts::kSourceFilenameMaxLength, + const char* separator = base::consts::kFilePathSeparator); +}; +/// @brief String utilities helper class used internally. You should not use it. +class Str : base::StaticClass { + public: + /// @brief Checks if character is digit. Dont use libc implementation of it to prevent locale issues. + static inline bool isDigit(char c) { + return c >= '0' && c <= '9'; + } + + /// @brief Matches wildcards, '*' and '?' only supported. + static bool wildCardMatch(const char* str, const char* pattern); + + static std::string& ltrim(std::string& str); + static std::string& rtrim(std::string& str); + static std::string& trim(std::string& str); + + /// @brief Determines whether or not str starts with specified string + /// @param str String to check + /// @param start String to check against + /// @return Returns true if starts with specified string, false otherwise + static bool startsWith(const std::string& str, const std::string& start); + + /// @brief Determines whether or not str ends with specified string + /// @param str String to check + /// @param end String to check against + /// @return Returns true if ends with specified string, false otherwise + static bool endsWith(const std::string& str, const std::string& end); + + /// @brief Replaces all instances of replaceWhat with 'replaceWith'. Original variable is changed for performance. + /// @param [in,out] str String to replace from + /// @param replaceWhat Character to replace + /// @param replaceWith Character to replace with + /// @return Modified version of str + static std::string& replaceAll(std::string& str, char replaceWhat, char replaceWith); + + /// @brief Replaces all instances of 'replaceWhat' with 'replaceWith'. (String version) Replaces in place + /// @param str String to replace from + /// @param replaceWhat Character to replace + /// @param replaceWith Character to replace with + /// @return Modified (original) str + static std::string& replaceAll(std::string& str, const std::string& replaceWhat, + const std::string& replaceWith); + + static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const base::type::string_t& replaceWith); +#if defined(ELPP_UNICODE) + static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const std::string& replaceWith); +#endif // defined(ELPP_UNICODE) + /// @brief Converts string to uppercase + /// @param str String to convert + /// @return Uppercase string + static std::string& toUpper(std::string& str); + + /// @brief Compares cstring equality - uses strcmp + static bool cStringEq(const char* s1, const char* s2); + + /// @brief Compares cstring equality (case-insensitive) - uses toupper(char) + /// Dont use strcasecmp because of CRT (VC++) + static bool cStringCaseEq(const char* s1, const char* s2); + + /// @brief Returns true if c exist in str + static bool contains(const char* str, char c); + + static char* convertAndAddToBuff(std::size_t n, int len, char* buf, const char* bufLim, bool zeroPadded = true); + static char* addToBuff(const char* str, char* buf, const char* bufLim); + static char* clearBuff(char buff[], std::size_t lim); + + /// @brief Converts wchar* to char* + /// NOTE: Need to free return value after use! + static char* wcharPtrToCharPtr(const wchar_t* line); +}; +/// @brief Operating System helper static class used internally. You should not use it. +class OS : base::StaticClass { + public: +#if ELPP_OS_WINDOWS + /// @brief Gets environment variables for Windows based OS. + /// We are not using getenv(const char*) because of CRT deprecation + /// @param varname Variable name to get environment variable value for + /// @return If variable exist the value of it otherwise nullptr + static const char* getWindowsEnvironmentVariable(const char* varname); +#endif // ELPP_OS_WINDOWS +#if ELPP_OS_ANDROID + /// @brief Reads android property value + static std::string getProperty(const char* prop); + + /// @brief Reads android device name + static std::string getDeviceName(void); +#endif // ELPP_OS_ANDROID + + /// @brief Runs command on terminal and returns the output. + /// + /// @detail This is applicable only on unix based systems, for all other OS, an empty string is returned. + /// @param command Bash command + /// @return Result of bash output or empty string if no result found. + static const std::string getBashOutput(const char* command); + + /// @brief Gets environment variable. This is cross-platform and CRT safe (for VC++) + /// @param variableName Environment variable name + /// @param defaultVal If no environment variable or value found the value to return by default + /// @param alternativeBashCommand If environment variable not found what would be alternative bash command + /// in order to look for value user is looking for. E.g, for 'user' alternative command will 'whoami' + static std::string getEnvironmentVariable(const char* variableName, const char* defaultVal, + const char* alternativeBashCommand = nullptr); + /// @brief Gets current username. + static std::string currentUser(void); + + /// @brief Gets current host name or computer name. + /// + /// @detail For android systems this is device name with its manufacturer and model separated by hyphen + static std::string currentHost(void); + /// @brief Whether or not terminal supports colors + static bool termSupportsColor(void); +}; +/// @brief Contains utilities for cross-platform date/time. This class make use of el::base::utils::Str +class DateTime : base::StaticClass { + public: + /// @brief Cross platform gettimeofday for Windows and unix platform. This can be used to determine current microsecond. + /// + /// @detail For unix system it uses gettimeofday(timeval*, timezone*) and for Windows, a separate implementation is provided + /// @param [in,out] tv Pointer that gets updated + static void gettimeofday(struct timeval* tv); + + /// @brief Gets current date and time with a subsecond part. + /// @param format User provided date/time format + /// @param ssPrec A pointer to base::SubsecondPrecision from configuration (non-null) + /// @returns string based date time in specified format. + static std::string getDateTime(const char* format, const base::SubsecondPrecision* ssPrec); + + /// @brief Converts timeval (struct from ctime) to string using specified format and subsecond precision + static std::string timevalToString(struct timeval tval, const char* format, + const el::base::SubsecondPrecision* ssPrec); + + /// @brief Formats time to get unit accordingly, units like second if > 1000 or minutes if > 60000 etc + static base::type::string_t formatTime(unsigned long long time, base::TimestampUnit timestampUnit); + + /// @brief Gets time difference in milli/micro second depending on timestampUnit + static unsigned long long getTimeDifference(const struct timeval& endTime, const struct timeval& startTime, + base::TimestampUnit timestampUnit); + + + static struct ::tm* buildTimeInfo(struct timeval* currTime, struct ::tm* timeInfo); + private: + static char* parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, + std::size_t msec, const base::SubsecondPrecision* ssPrec); +}; +/// @brief Command line arguments for application if specified using el::Helpers::setArgs(..) or START_EASYLOGGINGPP(..) +class CommandLineArgs { + public: + CommandLineArgs(void) { + setArgs(0, static_cast(nullptr)); + } + CommandLineArgs(int argc, const char** argv) { + setArgs(argc, argv); + } + CommandLineArgs(int argc, char** argv) { + setArgs(argc, argv); + } + virtual ~CommandLineArgs(void) {} + /// @brief Sets arguments and parses them + inline void setArgs(int argc, const char** argv) { + setArgs(argc, const_cast(argv)); + } + /// @brief Sets arguments and parses them + void setArgs(int argc, char** argv); + /// @brief Returns true if arguments contain paramKey with a value (separated by '=') + bool hasParamWithValue(const char* paramKey) const; + /// @brief Returns value of arguments + /// @see hasParamWithValue(const char*) + const char* getParamValue(const char* paramKey) const; + /// @brief Return true if arguments has a param (not having a value) i,e without '=' + bool hasParam(const char* paramKey) const; + /// @brief Returns true if no params available. This exclude argv[0] + bool empty(void) const; + /// @brief Returns total number of arguments. This exclude argv[0] + std::size_t size(void) const; + friend base::type::ostream_t& operator<<(base::type::ostream_t& os, const CommandLineArgs& c); + + private: + int m_argc; + char** m_argv; + std::unordered_map m_paramsWithValue; + std::vector m_params; +}; +/// @brief Abstract registry (aka repository) that provides basic interface for pointer repository specified by T_Ptr type. +/// +/// @detail Most of the functions are virtual final methods but anything implementing this abstract class should implement +/// unregisterAll() and deepCopy(const AbstractRegistry&) and write registerNew() method according to container +/// and few more methods; get() to find element, unregister() to unregister single entry. +/// Please note that this is thread-unsafe and should also implement thread-safety mechanisms in implementation. +template +class AbstractRegistry : public base::threading::ThreadSafe { + public: + typedef typename Container::iterator iterator; + typedef typename Container::const_iterator const_iterator; + + /// @brief Default constructor + AbstractRegistry(void) {} + + /// @brief Move constructor that is useful for base classes + AbstractRegistry(AbstractRegistry&& sr) { + if (this == &sr) { + return; + } + unregisterAll(); + m_list = std::move(sr.m_list); + } + + bool operator==(const AbstractRegistry& other) { + if (size() != other.size()) { + return false; + } + for (std::size_t i = 0; i < m_list.size(); ++i) { + if (m_list.at(i) != other.m_list.at(i)) { + return false; + } + } + return true; + } + + bool operator!=(const AbstractRegistry& other) { + if (size() != other.size()) { + return true; + } + for (std::size_t i = 0; i < m_list.size(); ++i) { + if (m_list.at(i) != other.m_list.at(i)) { + return true; + } + } + return false; + } + + /// @brief Assignment move operator + AbstractRegistry& operator=(AbstractRegistry&& sr) { + if (this == &sr) { + return *this; + } + unregisterAll(); + m_list = std::move(sr.m_list); + return *this; + } + + virtual ~AbstractRegistry(void) { + } + + /// @return Iterator pointer from start of repository + virtual inline iterator begin(void) ELPP_FINAL { + return m_list.begin(); + } + + /// @return Iterator pointer from end of repository + virtual inline iterator end(void) ELPP_FINAL { + return m_list.end(); + } + + + /// @return Constant iterator pointer from start of repository + virtual inline const_iterator cbegin(void) const ELPP_FINAL { + return m_list.cbegin(); + } + + /// @return End of repository + virtual inline const_iterator cend(void) const ELPP_FINAL { + return m_list.cend(); + } + + /// @return Whether or not repository is empty + virtual inline bool empty(void) const ELPP_FINAL { + return m_list.empty(); + } + + /// @return Size of repository + virtual inline std::size_t size(void) const ELPP_FINAL { + return m_list.size(); + } + + /// @brief Returns underlying container by reference + virtual inline Container& list(void) ELPP_FINAL { + return m_list; + } + + /// @brief Returns underlying container by constant reference. + virtual inline const Container& list(void) const ELPP_FINAL { + return m_list; + } + + /// @brief Unregisters all the pointers from current repository. + virtual void unregisterAll(void) = 0; + + protected: + virtual void deepCopy(const AbstractRegistry&) = 0; + void reinitDeepCopy(const AbstractRegistry& sr) { + unregisterAll(); + deepCopy(sr); + } + + private: + Container m_list; +}; + +/// @brief A pointer registry mechanism to manage memory and provide search functionalities. (non-predicate version) +/// +/// @detail NOTE: This is thread-unsafe implementation (although it contains lock function, it does not use these functions) +/// of AbstractRegistry. Any implementation of this class should be +/// explicitly (by using lock functions) +template +class Registry : public AbstractRegistry> { + public: + typedef typename Registry::iterator iterator; + typedef typename Registry::const_iterator const_iterator; + + Registry(void) {} + + /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. + Registry(const Registry& sr) : AbstractRegistry>() { + if (this == &sr) { + return; + } + this->reinitDeepCopy(sr); + } + + /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element + /// @see unregisterAll() + /// @see deepCopy(const AbstractRegistry&) + Registry& operator=(const Registry& sr) { + if (this == &sr) { + return *this; + } + this->reinitDeepCopy(sr); + return *this; + } + + virtual ~Registry(void) { + unregisterAll(); + } + + protected: + virtual void unregisterAll(void) ELPP_FINAL { + if (!this->empty()) { + for (auto&& curr : this->list()) { + base::utils::safeDelete(curr.second); + } + this->list().clear(); + } + } + +/// @brief Registers new registry to repository. + virtual void registerNew(const T_Key& uniqKey, T_Ptr* ptr) ELPP_FINAL { + unregister(uniqKey); + this->list().insert(std::make_pair(uniqKey, ptr)); + } + +/// @brief Unregisters single entry mapped to specified unique key + void unregister(const T_Key& uniqKey) { + T_Ptr* existing = get(uniqKey); + if (existing != nullptr) { + this->list().erase(uniqKey); + base::utils::safeDelete(existing); + } + } + +/// @brief Gets pointer from repository. If none found, nullptr is returned. + T_Ptr* get(const T_Key& uniqKey) { + iterator it = this->list().find(uniqKey); + return it == this->list().end() + ? nullptr + : it->second; + } + + private: + virtual void deepCopy(const AbstractRegistry>& sr) ELPP_FINAL { + for (const_iterator it = sr.cbegin(); it != sr.cend(); ++it) { + registerNew(it->first, new T_Ptr(*it->second)); + } + } +}; + +/// @brief A pointer registry mechanism to manage memory and provide search functionalities. (predicate version) +/// +/// @detail NOTE: This is thread-unsafe implementation of AbstractRegistry. Any implementation of this class +/// should be made thread-safe explicitly +template +class RegistryWithPred : public AbstractRegistry> { + public: + typedef typename RegistryWithPred::iterator iterator; + typedef typename RegistryWithPred::const_iterator const_iterator; + + RegistryWithPred(void) { + } + + virtual ~RegistryWithPred(void) { + unregisterAll(); + } + + /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. + RegistryWithPred(const RegistryWithPred& sr) : AbstractRegistry>() { + if (this == &sr) { + return; + } + this->reinitDeepCopy(sr); + } + + /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element + /// @see unregisterAll() + /// @see deepCopy(const AbstractRegistry&) + RegistryWithPred& operator=(const RegistryWithPred& sr) { + if (this == &sr) { + return *this; + } + this->reinitDeepCopy(sr); + return *this; + } + + friend base::type::ostream_t& operator<<(base::type::ostream_t& os, const RegistryWithPred& sr) { + for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { + os << ELPP_LITERAL(" ") << **it << ELPP_LITERAL("\n"); + } + return os; + } + + protected: + virtual void unregisterAll(void) ELPP_FINAL { + if (!this->empty()) { + for (auto&& curr : this->list()) { + base::utils::safeDelete(curr); + } + this->list().clear(); + } + } + + virtual void unregister(T_Ptr*& ptr) ELPP_FINAL { + if (ptr) { + iterator iter = this->begin(); + for (; iter != this->end(); ++iter) { + if (ptr == *iter) { + break; + } + } + if (iter != this->end() && *iter != nullptr) { + this->list().erase(iter); + base::utils::safeDelete(*iter); + } + } + } + + virtual inline void registerNew(T_Ptr* ptr) ELPP_FINAL { + this->list().push_back(ptr); + } + +/// @brief Gets pointer from repository with specified arguments. Arguments are passed to predicate +/// in order to validate pointer. + template + T_Ptr* get(const T& arg1, const T2 arg2) { + iterator iter = std::find_if(this->list().begin(), this->list().end(), Pred(arg1, arg2)); + if (iter != this->list().end() && *iter != nullptr) { + return *iter; + } + return nullptr; + } + + private: + virtual void deepCopy(const AbstractRegistry>& sr) { + for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { + registerNew(new T_Ptr(**it)); + } + } +}; +class Utils { + public: + template + static bool installCallback(const std::string& id, std::unordered_map* mapT) { + if (mapT->find(id) == mapT->end()) { + mapT->insert(std::make_pair(id, TPtr(new T()))); + return true; + } + return false; + } + + template + static void uninstallCallback(const std::string& id, std::unordered_map* mapT) { + if (mapT->find(id) != mapT->end()) { + mapT->erase(id); + } + } + + template + static T* callback(const std::string& id, std::unordered_map* mapT) { + typename std::unordered_map::iterator iter = mapT->find(id); + if (iter != mapT->end()) { + return static_cast(iter->second.get()); + } + return nullptr; + } +}; +} // namespace utils +} // namespace base +/// @brief Base of Easylogging++ friendly class +/// +/// @detail After inheriting this class publicly, implement pure-virtual function `void log(std::ostream&) const` +class Loggable { + public: + virtual ~Loggable(void) {} + virtual void log(el::base::type::ostream_t&) const = 0; + private: + friend inline el::base::type::ostream_t& operator<<(el::base::type::ostream_t& os, const Loggable& loggable) { + loggable.log(os); + return os; + } +}; +namespace base { +/// @brief Represents log format containing flags and date format. This is used internally to start initial log +class LogFormat : public Loggable { + public: + LogFormat(void); + LogFormat(Level level, const base::type::string_t& format); + LogFormat(const LogFormat& logFormat); + LogFormat(LogFormat&& logFormat); + LogFormat& operator=(const LogFormat& logFormat); + virtual ~LogFormat(void) {} + bool operator==(const LogFormat& other); + + /// @brief Updates format to be used while logging. + /// @param userFormat User provided format + void parseFromFormat(const base::type::string_t& userFormat); + + inline Level level(void) const { + return m_level; + } + + inline const base::type::string_t& userFormat(void) const { + return m_userFormat; + } + + inline const base::type::string_t& format(void) const { + return m_format; + } + + inline const std::string& dateTimeFormat(void) const { + return m_dateTimeFormat; + } + + inline base::type::EnumType flags(void) const { + return m_flags; + } + + inline bool hasFlag(base::FormatFlags flag) const { + return base::utils::hasFlag(flag, m_flags); + } + + virtual void log(el::base::type::ostream_t& os) const { + os << m_format; + } + + protected: + /// @brief Updates date time format if available in currFormat. + /// @param index Index where %datetime, %date or %time was found + /// @param [in,out] currFormat current format that is being used to format + virtual void updateDateFormat(std::size_t index, base::type::string_t& currFormat) ELPP_FINAL; + + /// @brief Updates %level from format. This is so that we dont have to do it at log-writing-time. It uses m_format and m_level + virtual void updateFormatSpec(void) ELPP_FINAL; + + inline void addFlag(base::FormatFlags flag) { + base::utils::addFlag(flag, &m_flags); + } + + private: + Level m_level; + base::type::string_t m_userFormat; + base::type::string_t m_format; + std::string m_dateTimeFormat; + base::type::EnumType m_flags; + std::string m_currentUser; + std::string m_currentHost; + friend class el::Logger; // To resolve loggerId format specifier easily +}; +} // namespace base +/// @brief Resolving function for format specifier +typedef std::function FormatSpecifierValueResolver; +/// @brief User-provided custom format specifier +/// @see el::Helpers::installCustomFormatSpecifier +/// @see FormatSpecifierValueResolver +class CustomFormatSpecifier { + public: + CustomFormatSpecifier(const char* formatSpecifier, const FormatSpecifierValueResolver& resolver) : + m_formatSpecifier(formatSpecifier), m_resolver(resolver) {} + inline const char* formatSpecifier(void) const { + return m_formatSpecifier; + } + inline const FormatSpecifierValueResolver& resolver(void) const { + return m_resolver; + } + inline bool operator==(const char* formatSpecifier) { + return strcmp(m_formatSpecifier, formatSpecifier) == 0; + } + + private: + const char* m_formatSpecifier; + FormatSpecifierValueResolver m_resolver; +}; +/// @brief Represents single configuration that has representing level, configuration type and a string based value. +/// +/// @detail String based value means any value either its boolean, integer or string itself, it will be embedded inside quotes +/// and will be parsed later. +/// +/// Consider some examples below: +/// * el::Configuration confEnabledInfo(el::Level::Info, el::ConfigurationType::Enabled, "true"); +/// * el::Configuration confMaxLogFileSizeInfo(el::Level::Info, el::ConfigurationType::MaxLogFileSize, "2048"); +/// * el::Configuration confFilenameInfo(el::Level::Info, el::ConfigurationType::Filename, "/var/log/my.log"); +class Configuration : public Loggable { + public: + Configuration(const Configuration& c); + Configuration& operator=(const Configuration& c); + + virtual ~Configuration(void) { + } + + /// @brief Full constructor used to sets value of configuration + Configuration(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Gets level of current configuration + inline Level level(void) const { + return m_level; + } + + /// @brief Gets configuration type of current configuration + inline ConfigurationType configurationType(void) const { + return m_configurationType; + } + + /// @brief Gets string based configuration value + inline const std::string& value(void) const { + return m_value; + } + + /// @brief Set string based configuration value + /// @param value Value to set. Values have to be std::string; For boolean values use "true", "false", for any integral values + /// use them in quotes. They will be parsed when configuring + inline void setValue(const std::string& value) { + m_value = value; + } + + virtual void log(el::base::type::ostream_t& os) const; + + /// @brief Used to find configuration from configuration (pointers) repository. Avoid using it. + class Predicate { + public: + Predicate(Level level, ConfigurationType configurationType); + + bool operator()(const Configuration* conf) const; + + private: + Level m_level; + ConfigurationType m_configurationType; + }; + + private: + Level m_level; + ConfigurationType m_configurationType; + std::string m_value; +}; + +/// @brief Thread-safe Configuration repository +/// +/// @detail This repository represents configurations for all the levels and configuration type mapped to a value. +class Configurations : public base::utils::RegistryWithPred { + public: + /// @brief Default constructor with empty repository + Configurations(void); + + /// @brief Constructor used to set configurations using configuration file. + /// @param configurationFile Full path to configuration file + /// @param useDefaultsForRemaining Lets you set the remaining configurations to default. + /// @param base If provided, this configuration will be based off existing repository that this argument is pointing to. + /// @see parseFromFile(const std::string&, Configurations* base) + /// @see setRemainingToDefault() + Configurations(const std::string& configurationFile, bool useDefaultsForRemaining = true, + Configurations* base = nullptr); + + virtual ~Configurations(void) { + } + + /// @brief Parses configuration from file. + /// @param configurationFile Full path to configuration file + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration file. + /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you + /// do not proceed without successful parse. + bool parseFromFile(const std::string& configurationFile, Configurations* base = nullptr); + + /// @brief Parse configurations from configuration string. + /// + /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary + /// new line characters are provided. + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration text. + /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you + /// do not proceed without successful parse. + bool parseFromText(const std::string& configurationsString, Configurations* base = nullptr); + + /// @brief Sets configuration based-off an existing configurations. + /// @param base Pointer to existing configurations. + void setFromBase(Configurations* base); + + /// @brief Determines whether or not specified configuration type exists in the repository. + /// + /// @detail Returns as soon as first level is found. + /// @param configurationType Type of configuration to check existence for. + bool hasConfiguration(ConfigurationType configurationType); + + /// @brief Determines whether or not specified configuration type exists for specified level + /// @param level Level to check + /// @param configurationType Type of configuration to check existence for. + bool hasConfiguration(Level level, ConfigurationType configurationType); + + /// @brief Sets value of configuration for specified level. + /// + /// @detail Any existing configuration for specified level will be replaced. Also note that configuration types + /// ConfigurationType::SubsecondPrecision and ConfigurationType::PerformanceTracking will be ignored if not set for + /// Level::Global because these configurations are not dependant on level. + /// @param level Level to set configuration for (el::Level). + /// @param configurationType Type of configuration (el::ConfigurationType) + /// @param value A string based value. Regardless of what the data type of configuration is, it will always be string + /// from users' point of view. This is then parsed later to be used internally. + /// @see Configuration::setValue(const std::string& value) + /// @see el::Level + /// @see el::ConfigurationType + void set(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Sets single configuration based on other single configuration. + /// @see set(Level level, ConfigurationType configurationType, const std::string& value) + void set(Configuration* conf); + + inline Configuration* get(Level level, ConfigurationType configurationType) { + base::threading::ScopedLock scopedLock(lock()); + return RegistryWithPred::get(level, configurationType); + } + + /// @brief Sets configuration for all levels. + /// @param configurationType Type of configuration + /// @param value String based value + /// @see Configurations::set(Level level, ConfigurationType configurationType, const std::string& value) + inline void setGlobally(ConfigurationType configurationType, const std::string& value) { + setGlobally(configurationType, value, false); + } + + /// @brief Clears repository so that all the configurations are unset + inline void clear(void) { + base::threading::ScopedLock scopedLock(lock()); + unregisterAll(); + } + + /// @brief Gets configuration file used in parsing this configurations. + /// + /// @detail If this repository was set manually or by text this returns empty string. + inline const std::string& configurationFile(void) const { + return m_configurationFile; + } + + /// @brief Sets configurations to "factory based" configurations. + void setToDefault(void); + + /// @brief Lets you set the remaining configurations to default. + /// + /// @detail By remaining, it means that the level/type a configuration does not exist for. + /// This function is useful when you want to minimize chances of failures, e.g, if you have a configuration file that sets + /// configuration for all the configurations except for Enabled or not, we use this so that ENABLED is set to default i.e, + /// true. If you dont do this explicitly (either by calling this function or by using second param in Constructor + /// and try to access a value, an error is thrown + void setRemainingToDefault(void); + + /// @brief Parser used internally to parse configurations from file or text. + /// + /// @detail This class makes use of base::utils::Str. + /// You should not need this unless you are working on some tool for Easylogging++ + class Parser : base::StaticClass { + public: + /// @brief Parses configuration from file. + /// @param configurationFile Full path to configuration file + /// @param sender Sender configurations pointer. Usually 'this' is used from calling class + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration file. + /// @return True if successfully parsed, false otherwise. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you + /// do not proceed without successful parse. + static bool parseFromFile(const std::string& configurationFile, Configurations* sender, + Configurations* base = nullptr); + + /// @brief Parse configurations from configuration string. + /// + /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary + /// new line characters are provided. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you + /// do not proceed without successful parse (This is recommended) + /// @param configurationsString the configuration in plain text format + /// @param sender Sender configurations pointer. Usually 'this' is used from calling class + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration text. + /// @return True if successfully parsed, false otherwise. + static bool parseFromText(const std::string& configurationsString, Configurations* sender, + Configurations* base = nullptr); + + private: + friend class el::Loggers; + static void ignoreComments(std::string* line); + static bool isLevel(const std::string& line); + static bool isComment(const std::string& line); + static inline bool isConfig(const std::string& line); + static bool parseLine(std::string* line, std::string* currConfigStr, std::string* currLevelStr, Level* currLevel, + Configurations* conf); + }; + + private: + std::string m_configurationFile; + bool m_isFromFile; + friend class el::Loggers; + + /// @brief Unsafely sets configuration if does not already exist + void unsafeSetIfNotExist(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Thread unsafe set + void unsafeSet(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Sets configurations for all levels including Level::Global if includeGlobalLevel is true + /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) + void setGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel); + + /// @brief Sets configurations (Unsafely) for all levels including Level::Global if includeGlobalLevel is true + /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) + void unsafeSetGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel); +}; + +namespace base { +typedef std::shared_ptr FileStreamPtr; +typedef std::unordered_map LogStreamsReferenceMap; +typedef std::shared_ptr LogStreamsReferenceMapPtr; +/// @brief Configurations with data types. +/// +/// @detail el::Configurations have string based values. This is whats used internally in order to read correct configurations. +/// This is to perform faster while writing logs using correct configurations. +/// +/// This is thread safe and final class containing non-virtual destructor (means nothing should inherit this class) +class TypedConfigurations : public base::threading::ThreadSafe { + public: + /// @brief Constructor to initialize (construct) the object off el::Configurations + /// @param configurations Configurations pointer/reference to base this typed configurations off. + /// @param logStreamsReference Use ELPP->registeredLoggers()->logStreamsReference() + TypedConfigurations(Configurations* configurations, LogStreamsReferenceMapPtr logStreamsReference); + + TypedConfigurations(const TypedConfigurations& other); + + virtual ~TypedConfigurations(void) { + } + + const Configurations* configurations(void) const { + return m_configurations; + } + + bool enabled(Level level); + bool toFile(Level level); + const std::string& filename(Level level); + bool toStandardOutput(Level level); + const base::LogFormat& logFormat(Level level); + const base::SubsecondPrecision& subsecondPrecision(Level level = Level::Global); + const base::MillisecondsWidth& millisecondsWidth(Level level = Level::Global); + bool performanceTracking(Level level = Level::Global); + base::type::fstream_t* fileStream(Level level); + std::size_t maxLogFileSize(Level level); + std::size_t logFlushThreshold(Level level); + + private: + Configurations* m_configurations; + std::unordered_map m_enabledMap; + std::unordered_map m_toFileMap; + std::unordered_map m_filenameMap; + std::unordered_map m_toStandardOutputMap; + std::unordered_map m_logFormatMap; + std::unordered_map m_subsecondPrecisionMap; + std::unordered_map m_performanceTrackingMap; + std::unordered_map m_fileStreamMap; + std::unordered_map m_maxLogFileSizeMap; + std::unordered_map m_logFlushThresholdMap; + LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; + + friend class el::Helpers; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::DefaultLogDispatchCallback; + friend class el::base::LogDispatcher; + + template + inline Conf_T getConfigByVal(Level level, const std::unordered_map* confMap, const char* confName) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeGetConfigByVal(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope + } + + template + inline Conf_T& getConfigByRef(Level level, std::unordered_map* confMap, const char* confName) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeGetConfigByRef(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope + } + + template + Conf_T unsafeGetConfigByVal(Level level, const std::unordered_map* confMap, const char* confName) { + ELPP_UNUSED(confName); + typename std::unordered_map::const_iterator it = confMap->find(level); + if (it == confMap->end()) { + try { + return confMap->at(Level::Global); + } catch (...) { + ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" + << LevelHelper::convertToString(level) << "]" + << std::endl << "Please ensure you have properly configured logger.", false); + return Conf_T(); + } + } + return it->second; + } + + template + Conf_T& unsafeGetConfigByRef(Level level, std::unordered_map* confMap, const char* confName) { + ELPP_UNUSED(confName); + typename std::unordered_map::iterator it = confMap->find(level); + if (it == confMap->end()) { + try { + return confMap->at(Level::Global); + } catch (...) { + ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" + << LevelHelper::convertToString(level) << "]" + << std::endl << "Please ensure you have properly configured logger.", false); + } + } + return it->second; + } + + template + void setValue(Level level, const Conf_T& value, std::unordered_map* confMap, + bool includeGlobalLevel = true) { + // If map is empty and we are allowed to add into generic level (Level::Global), do it! + if (confMap->empty() && includeGlobalLevel) { + confMap->insert(std::make_pair(Level::Global, value)); + return; + } + // If same value exist in generic level already, dont add it to explicit level + typename std::unordered_map::iterator it = confMap->find(Level::Global); + if (it != confMap->end() && it->second == value) { + return; + } + // Now make sure we dont double up values if we really need to add it to explicit level + it = confMap->find(level); + if (it == confMap->end()) { + // Value not found for level, add new + confMap->insert(std::make_pair(level, value)); + } else { + // Value found, just update value + confMap->at(level) = value; + } + } + + void build(Configurations* configurations); + unsigned long getULong(std::string confVal); + std::string resolveFilename(const std::string& filename); + void insertFile(Level level, const std::string& fullFilename); + bool unsafeValidateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback); + + inline bool validateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeValidateFileRolling(level, preRollOutCallback); + } +}; +/// @brief Class that keeps record of current line hit for occasional logging +class HitCounter { + public: + HitCounter(void) : + m_filename(""), + m_lineNumber(0), + m_hitCounts(0) { + } + + HitCounter(const char* filename, base::type::LineNumber lineNumber) : + m_filename(filename), + m_lineNumber(lineNumber), + m_hitCounts(0) { + } + + HitCounter(const HitCounter& hitCounter) : + m_filename(hitCounter.m_filename), + m_lineNumber(hitCounter.m_lineNumber), + m_hitCounts(hitCounter.m_hitCounts) { + } + + HitCounter& operator=(const HitCounter& hitCounter) { + if (&hitCounter != this) { + m_filename = hitCounter.m_filename; + m_lineNumber = hitCounter.m_lineNumber; + m_hitCounts = hitCounter.m_hitCounts; + } + return *this; + } + + virtual ~HitCounter(void) { + } + + /// @brief Resets location of current hit counter + inline void resetLocation(const char* filename, base::type::LineNumber lineNumber) { + m_filename = filename; + m_lineNumber = lineNumber; + } + + /// @brief Validates hit counts and resets it if necessary + inline void validateHitCounts(std::size_t n) { + if (m_hitCounts >= base::consts::kMaxLogPerCounter) { + m_hitCounts = (n >= 1 ? base::consts::kMaxLogPerCounter % n : 0); + } + ++m_hitCounts; + } + + inline const char* filename(void) const { + return m_filename; + } + + inline base::type::LineNumber lineNumber(void) const { + return m_lineNumber; + } + + inline std::size_t hitCounts(void) const { + return m_hitCounts; + } + + inline void increment(void) { + ++m_hitCounts; + } + + class Predicate { + public: + Predicate(const char* filename, base::type::LineNumber lineNumber) + : m_filename(filename), + m_lineNumber(lineNumber) { + } + inline bool operator()(const HitCounter* counter) { + return ((counter != nullptr) && + (strcmp(counter->m_filename, m_filename) == 0) && + (counter->m_lineNumber == m_lineNumber)); + } + + private: + const char* m_filename; + base::type::LineNumber m_lineNumber; + }; + + private: + const char* m_filename; + base::type::LineNumber m_lineNumber; + std::size_t m_hitCounts; +}; +/// @brief Repository for hit counters used across the application +class RegisteredHitCounters : public base::utils::RegistryWithPred { + public: + /// @brief Validates counter for every N, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateEveryN(const char* filename, base::type::LineNumber lineNumber, std::size_t n); + + /// @brief Validates counter for hits >= N, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateAfterN(const char* filename, base::type::LineNumber lineNumber, std::size_t n); + + /// @brief Validates counter for hits are <= n, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateNTimes(const char* filename, base::type::LineNumber lineNumber, std::size_t n); + + /// @brief Gets hit counter registered at specified position + inline const base::HitCounter* getCounter(const char* filename, base::type::LineNumber lineNumber) { + base::threading::ScopedLock scopedLock(lock()); + return get(filename, lineNumber); + } +}; +/// @brief Action to be taken for dispatching +enum class DispatchAction : base::type::EnumType { + None = 1, NormalLog = 2, SysLog = 4 +}; +} // namespace base +template +class Callback : protected base::threading::ThreadSafe { + public: + Callback(void) : m_enabled(true) {} + inline bool enabled(void) const { + return m_enabled; + } + inline void setEnabled(bool enabled) { + base::threading::ScopedLock scopedLock(lock()); + m_enabled = enabled; + } + protected: + virtual void handle(const T* handlePtr) = 0; + private: + bool m_enabled; +}; +class LogDispatchData { + public: + LogDispatchData() : m_logMessage(nullptr), m_dispatchAction(base::DispatchAction::None) {} + inline const LogMessage* logMessage(void) const { + return m_logMessage; + } + inline base::DispatchAction dispatchAction(void) const { + return m_dispatchAction; + } + inline void setLogMessage(LogMessage* logMessage) { + m_logMessage = logMessage; + } + inline void setDispatchAction(base::DispatchAction dispatchAction) { + m_dispatchAction = dispatchAction; + } + private: + LogMessage* m_logMessage; + base::DispatchAction m_dispatchAction; + friend class base::LogDispatcher; + +}; +class LogDispatchCallback : public Callback { + protected: + virtual void handle(const LogDispatchData* data); + base::threading::Mutex& fileHandle(const LogDispatchData* data); + private: + friend class base::LogDispatcher; + std::unordered_map> m_fileLocks; + base::threading::Mutex m_fileLocksMapLock; +}; +class PerformanceTrackingCallback : public Callback { + private: + friend class base::PerformanceTracker; +}; +class LoggerRegistrationCallback : public Callback { + private: + friend class base::RegisteredLoggers; +}; +class LogBuilder : base::NoCopy { + public: + LogBuilder() : m_termSupportsColor(base::utils::OS::termSupportsColor()) {} + virtual ~LogBuilder(void) { + ELPP_INTERNAL_INFO(3, "Destroying log builder...") + } + virtual base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const = 0; + void convertToColoredOutput(base::type::string_t* logLine, Level level); + private: + bool m_termSupportsColor; + friend class el::base::DefaultLogDispatchCallback; +}; +typedef std::shared_ptr LogBuilderPtr; +/// @brief Represents a logger holding ID and configurations we need to write logs +/// +/// @detail This class does not write logs itself instead its used by writer to read configurations from. +class Logger : public base::threading::ThreadSafe, public Loggable { + public: + Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference); + Logger(const std::string& id, const Configurations& configurations, base::LogStreamsReferenceMapPtr logStreamsReference); + Logger(const Logger& logger); + Logger& operator=(const Logger& logger); + + virtual ~Logger(void) { + base::utils::safeDelete(m_typedConfigurations); + } + + virtual inline void log(el::base::type::ostream_t& os) const { + os << m_id.c_str(); + } + + /// @brief Configures the logger using specified configurations. + void configure(const Configurations& configurations); + + /// @brief Reconfigures logger using existing configurations + void reconfigure(void); + + inline const std::string& id(void) const { + return m_id; + } + + inline const std::string& parentApplicationName(void) const { + return m_parentApplicationName; + } + + inline void setParentApplicationName(const std::string& parentApplicationName) { + m_parentApplicationName = parentApplicationName; + } + + inline Configurations* configurations(void) { + return &m_configurations; + } + + inline base::TypedConfigurations* typedConfigurations(void) { + return m_typedConfigurations; + } + + static bool isValidId(const std::string& id); + + /// @brief Flushes logger to sync all log files for all levels + void flush(void); + + void flush(Level level, base::type::fstream_t* fs); + + inline bool isFlushNeeded(Level level) { + return ++m_unflushedCount.find(level)->second >= m_typedConfigurations->logFlushThreshold(level); + } + + inline LogBuilder* logBuilder(void) const { + return m_logBuilder.get(); + } + + inline void setLogBuilder(const LogBuilderPtr& logBuilder) { + m_logBuilder = logBuilder; + } + + inline bool enabled(Level level) const { + return m_typedConfigurations->enabled(level); + } + +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED +# define LOGGER_LEVEL_WRITERS_SIGNATURES(FUNCTION_NAME)\ +template \ +inline void FUNCTION_NAME(const char*, const T&, const Args&...);\ +template \ +inline void FUNCTION_NAME(const T&); + + template + inline void verbose(int, const char*, const T&, const Args&...); + + template + inline void verbose(int, const T&); + + LOGGER_LEVEL_WRITERS_SIGNATURES(info) + LOGGER_LEVEL_WRITERS_SIGNATURES(debug) + LOGGER_LEVEL_WRITERS_SIGNATURES(warn) + LOGGER_LEVEL_WRITERS_SIGNATURES(error) + LOGGER_LEVEL_WRITERS_SIGNATURES(fatal) + LOGGER_LEVEL_WRITERS_SIGNATURES(trace) +# undef LOGGER_LEVEL_WRITERS_SIGNATURES +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED + private: + std::string m_id; + base::TypedConfigurations* m_typedConfigurations; + base::type::stringstream_t m_stream; + std::string m_parentApplicationName; + bool m_isConfigured; + Configurations m_configurations; + std::unordered_map m_unflushedCount; + base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; + LogBuilderPtr m_logBuilder; + + friend class el::LogMessage; + friend class el::Loggers; + friend class el::Helpers; + friend class el::base::RegisteredLoggers; + friend class el::base::DefaultLogDispatchCallback; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::PErrorWriter; + friend class el::base::Storage; + friend class el::base::PerformanceTracker; + friend class el::base::LogDispatcher; + + Logger(void); + +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED + template + void log_(Level, int, const char*, const T&, const Args&...); + + template + inline void log_(Level, int, const T&); + + template + void log(Level, const char*, const T&, const Args&...); + + template + inline void log(Level, const T&); +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED + + void initUnflushedCount(void); + + inline base::type::stringstream_t& stream(void) { + return m_stream; + } + + void resolveLoggerFormatSpec(void) const; +}; +namespace base { +/// @brief Loggers repository +class RegisteredLoggers : public base::utils::Registry { + public: + explicit RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder); + + virtual ~RegisteredLoggers(void) { + unsafeFlushAll(); + } + + inline void setDefaultConfigurations(const Configurations& configurations) { + base::threading::ScopedLock scopedLock(lock()); + m_defaultConfigurations.setFromBase(const_cast(&configurations)); + } + + inline Configurations* defaultConfigurations(void) { + return &m_defaultConfigurations; + } + + Logger* get(const std::string& id, bool forceCreation = true); + + template + inline bool installLoggerRegistrationCallback(const std::string& id) { + return base::utils::Utils::installCallback(id, + &m_loggerRegistrationCallbacks); + } + + template + inline void uninstallLoggerRegistrationCallback(const std::string& id) { + base::utils::Utils::uninstallCallback(id, &m_loggerRegistrationCallbacks); + } + + template + inline T* loggerRegistrationCallback(const std::string& id) { + return base::utils::Utils::callback(id, &m_loggerRegistrationCallbacks); + } + + bool remove(const std::string& id); + + inline bool has(const std::string& id) { + return get(id, false) != nullptr; + } + + inline void unregister(Logger*& logger) { + base::threading::ScopedLock scopedLock(lock()); + base::utils::Registry::unregister(logger->id()); + } + + inline LogStreamsReferenceMapPtr logStreamsReference(void) { + return m_logStreamsReference; + } + + inline void flushAll(void) { + base::threading::ScopedLock scopedLock(lock()); + unsafeFlushAll(); + } + + inline void setDefaultLogBuilder(LogBuilderPtr& logBuilderPtr) { + base::threading::ScopedLock scopedLock(lock()); + m_defaultLogBuilder = logBuilderPtr; + } + + private: + LogBuilderPtr m_defaultLogBuilder; + Configurations m_defaultConfigurations; + base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; + std::unordered_map m_loggerRegistrationCallbacks; + friend class el::base::Storage; + + void unsafeFlushAll(void); +}; +/// @brief Represents registries for verbose logging +class VRegistry : base::NoCopy, public base::threading::ThreadSafe { + public: + explicit VRegistry(base::type::VerboseLevel level, base::type::EnumType* pFlags); + + /// @brief Sets verbose level. Accepted range is 0-9 + void setLevel(base::type::VerboseLevel level); + + inline base::type::VerboseLevel level(void) const { + return m_level; + } + + inline void clearModules(void) { + base::threading::ScopedLock scopedLock(lock()); + m_modules.clear(); + } + + void setModules(const char* modules); + + bool allowed(base::type::VerboseLevel vlevel, const char* file); + + inline const std::unordered_map& modules(void) const { + return m_modules; + } + + void setFromArgs(const base::utils::CommandLineArgs* commandLineArgs); + + /// @brief Whether or not vModules enabled + inline bool vModulesEnabled(void) { + return !base::utils::hasFlag(LoggingFlag::DisableVModules, *m_pFlags); + } + + private: + base::type::VerboseLevel m_level; + base::type::EnumType* m_pFlags; + std::unordered_map m_modules; +}; +} // namespace base +class LogMessage { + public: + LogMessage(Level level, const std::string& file, base::type::LineNumber line, const std::string& func, + base::type::VerboseLevel verboseLevel, Logger* logger) : + m_level(level), m_file(file), m_line(line), m_func(func), + m_verboseLevel(verboseLevel), m_logger(logger), m_message(logger->stream().str()) { + } + inline Level level(void) const { + return m_level; + } + inline const std::string& file(void) const { + return m_file; + } + inline base::type::LineNumber line(void) const { + return m_line; + } + inline const std::string& func(void) const { + return m_func; + } + inline base::type::VerboseLevel verboseLevel(void) const { + return m_verboseLevel; + } + inline Logger* logger(void) const { + return m_logger; + } + inline const base::type::string_t& message(void) const { + return m_message; + } + private: + Level m_level; + std::string m_file; + base::type::LineNumber m_line; + std::string m_func; + base::type::VerboseLevel m_verboseLevel; + Logger* m_logger; + base::type::string_t m_message; +}; +namespace base { +#if ELPP_ASYNC_LOGGING +class AsyncLogItem { + public: + explicit AsyncLogItem(const LogMessage& logMessage, const LogDispatchData& data, const base::type::string_t& logLine) + : m_logMessage(logMessage), m_dispatchData(data), m_logLine(logLine) {} + virtual ~AsyncLogItem() {} + inline LogMessage* logMessage(void) { + return &m_logMessage; + } + inline LogDispatchData* data(void) { + return &m_dispatchData; + } + inline base::type::string_t logLine(void) { + return m_logLine; + } + private: + LogMessage m_logMessage; + LogDispatchData m_dispatchData; + base::type::string_t m_logLine; +}; +class AsyncLogQueue : public base::threading::ThreadSafe { + public: + virtual ~AsyncLogQueue() { + ELPP_INTERNAL_INFO(6, "~AsyncLogQueue"); + } + + inline AsyncLogItem next(void) { + base::threading::ScopedLock scopedLock(lock()); + AsyncLogItem result = m_queue.front(); + m_queue.pop(); + return result; + } + + inline void push(const AsyncLogItem& item) { + base::threading::ScopedLock scopedLock(lock()); + m_queue.push(item); + } + inline void pop(void) { + base::threading::ScopedLock scopedLock(lock()); + m_queue.pop(); + } + inline AsyncLogItem front(void) { + base::threading::ScopedLock scopedLock(lock()); + return m_queue.front(); + } + inline bool empty(void) { + base::threading::ScopedLock scopedLock(lock()); + return m_queue.empty(); + } + private: + std::queue m_queue; +}; +class IWorker { + public: + virtual ~IWorker() {} + virtual void start() = 0; +}; +#endif // ELPP_ASYNC_LOGGING +/// @brief Easylogging++ management storage +class Storage : base::NoCopy, public base::threading::ThreadSafe { + public: +#if ELPP_ASYNC_LOGGING + Storage(const LogBuilderPtr& defaultLogBuilder, base::IWorker* asyncDispatchWorker); +#else + explicit Storage(const LogBuilderPtr& defaultLogBuilder); +#endif // ELPP_ASYNC_LOGGING + + virtual ~Storage(void); + + inline bool validateEveryNCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t occasion) { + return hitCounters()->validateEveryN(filename, lineNumber, occasion); + } + + inline bool validateAfterNCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + return hitCounters()->validateAfterN(filename, lineNumber, n); + } + + inline bool validateNTimesCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + return hitCounters()->validateNTimes(filename, lineNumber, n); + } + + inline base::RegisteredHitCounters* hitCounters(void) const { + return m_registeredHitCounters; + } + + inline base::RegisteredLoggers* registeredLoggers(void) const { + return m_registeredLoggers; + } + + inline base::VRegistry* vRegistry(void) const { + return m_vRegistry; + } + +#if ELPP_ASYNC_LOGGING + inline base::AsyncLogQueue* asyncLogQueue(void) const { + return m_asyncLogQueue; + } +#endif // ELPP_ASYNC_LOGGING + + inline const base::utils::CommandLineArgs* commandLineArgs(void) const { + return &m_commandLineArgs; + } + + inline void addFlag(LoggingFlag flag) { + base::utils::addFlag(flag, &m_flags); + } + + inline void removeFlag(LoggingFlag flag) { + base::utils::removeFlag(flag, &m_flags); + } + + inline bool hasFlag(LoggingFlag flag) const { + return base::utils::hasFlag(flag, m_flags); + } + + inline base::type::EnumType flags(void) const { + return m_flags; + } + + inline void setFlags(base::type::EnumType flags) { + m_flags = flags; + } + + inline void setPreRollOutCallback(const PreRollOutCallback& callback) { + m_preRollOutCallback = callback; + } + + inline void unsetPreRollOutCallback(void) { + m_preRollOutCallback = base::defaultPreRollOutCallback; + } + + inline PreRollOutCallback& preRollOutCallback(void) { + return m_preRollOutCallback; + } + + bool hasCustomFormatSpecifier(const char* formatSpecifier); + void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier); + bool uninstallCustomFormatSpecifier(const char* formatSpecifier); + + const std::vector* customFormatSpecifiers(void) const { + return &m_customFormatSpecifiers; + } + + base::threading::Mutex& customFormatSpecifiersLock() { + return m_customFormatSpecifiersLock; + } + + inline void setLoggingLevel(Level level) { + m_loggingLevel = level; + } + + template + inline bool installLogDispatchCallback(const std::string& id) { + return base::utils::Utils::installCallback(id, &m_logDispatchCallbacks); + } + + template + inline void uninstallLogDispatchCallback(const std::string& id) { + base::utils::Utils::uninstallCallback(id, &m_logDispatchCallbacks); + } + template + inline T* logDispatchCallback(const std::string& id) { + return base::utils::Utils::callback(id, &m_logDispatchCallbacks); + } + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + template + inline bool installPerformanceTrackingCallback(const std::string& id) { + return base::utils::Utils::installCallback(id, + &m_performanceTrackingCallbacks); + } + + template + inline void uninstallPerformanceTrackingCallback(const std::string& id) { + base::utils::Utils::uninstallCallback(id, + &m_performanceTrackingCallbacks); + } + + template + inline T* performanceTrackingCallback(const std::string& id) { + return base::utils::Utils::callback(id, &m_performanceTrackingCallbacks); + } +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + + /// @brief Sets thread name for current thread. Requires std::thread + inline void setThreadName(const std::string& name) { + if (name.empty()) return; + base::threading::ScopedLock scopedLock(m_threadNamesLock); + m_threadNames[base::threading::getCurrentThreadId()] = name; + } + + inline std::string getThreadName(const std::string& threadId) { + base::threading::ScopedLock scopedLock(m_threadNamesLock); + std::unordered_map::const_iterator it = m_threadNames.find(threadId); + if (it == m_threadNames.end()) { + return threadId; + } + return it->second; + } + private: + base::RegisteredHitCounters* m_registeredHitCounters; + base::RegisteredLoggers* m_registeredLoggers; + base::type::EnumType m_flags; + base::VRegistry* m_vRegistry; +#if ELPP_ASYNC_LOGGING + base::AsyncLogQueue* m_asyncLogQueue; + base::IWorker* m_asyncDispatchWorker; +#endif // ELPP_ASYNC_LOGGING + base::utils::CommandLineArgs m_commandLineArgs; + PreRollOutCallback m_preRollOutCallback; + std::unordered_map m_logDispatchCallbacks; + std::unordered_map m_performanceTrackingCallbacks; + std::unordered_map m_threadNames; + std::vector m_customFormatSpecifiers; + base::threading::Mutex m_customFormatSpecifiersLock; + base::threading::Mutex m_threadNamesLock; + Level m_loggingLevel; + + friend class el::Helpers; + friend class el::base::DefaultLogDispatchCallback; + friend class el::LogBuilder; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::PerformanceTracker; + friend class el::base::LogDispatcher; + + void setApplicationArguments(int argc, char** argv); + + inline void setApplicationArguments(int argc, const char** argv) { + setApplicationArguments(argc, const_cast(argv)); + } +}; +extern ELPP_EXPORT base::type::StoragePointer elStorage; +#define ELPP el::base::elStorage +class DefaultLogDispatchCallback : public LogDispatchCallback { + protected: + void handle(const LogDispatchData* data); + private: + const LogDispatchData* m_data; + void dispatch(base::type::string_t&& logLine); +}; +#if ELPP_ASYNC_LOGGING +class AsyncLogDispatchCallback : public LogDispatchCallback { + protected: + void handle(const LogDispatchData* data); +}; +class AsyncDispatchWorker : public base::IWorker, public base::threading::ThreadSafe { + public: + AsyncDispatchWorker(); + virtual ~AsyncDispatchWorker(); + + bool clean(void); + void emptyQueue(void); + virtual void start(void); + void handle(AsyncLogItem* logItem); + void run(void); + + void setContinueRunning(bool value) { + base::threading::ScopedLock scopedLock(m_continueRunningLock); + m_continueRunning = value; + } + + bool continueRunning(void) const { + return m_continueRunning; + } + private: + std::condition_variable cv; + bool m_continueRunning; + base::threading::Mutex m_continueRunningLock; +}; +#endif // ELPP_ASYNC_LOGGING +} // namespace base +namespace base { +class DefaultLogBuilder : public LogBuilder { + public: + base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const; +}; +/// @brief Dispatches log messages +class LogDispatcher : base::NoCopy { + public: + LogDispatcher(bool proceed, LogMessage* logMessage, base::DispatchAction dispatchAction) : + m_proceed(proceed), + m_logMessage(logMessage), + m_dispatchAction(std::move(dispatchAction)) { + } + + void dispatch(void); + + private: + bool m_proceed; + LogMessage* m_logMessage; + base::DispatchAction m_dispatchAction; +}; +#if defined(ELPP_STL_LOGGING) +/// @brief Workarounds to write some STL logs +/// +/// @detail There is workaround needed to loop through some stl containers. In order to do that, we need iterable containers +/// of same type and provide iterator interface and pass it on to writeIterator(). +/// Remember, this is passed by value in constructor so that we dont change original containers. +/// This operation is as expensive as Big-O(std::min(class_.size(), base::consts::kMaxLogPerContainer)) +namespace workarounds { +/// @brief Abstract IterableContainer template that provides interface for iterable classes of type T +template +class IterableContainer { + public: + typedef typename Container::iterator iterator; + typedef typename Container::const_iterator const_iterator; + IterableContainer(void) {} + virtual ~IterableContainer(void) {} + iterator begin(void) { + return getContainer().begin(); + } + iterator end(void) { + return getContainer().end(); + } + private: + virtual Container& getContainer(void) = 0; +}; +/// @brief Implements IterableContainer and provides iterable std::priority_queue class +template, typename Comparator = std::less> +class IterablePriorityQueue : public IterableContainer, + public std::priority_queue { + public: + IterablePriorityQueue(std::priority_queue queue_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { + this->push(queue_.top()); + queue_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } +}; +/// @brief Implements IterableContainer and provides iterable std::queue class +template> +class IterableQueue : public IterableContainer, public std::queue { + public: + IterableQueue(std::queue queue_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { + this->push(queue_.front()); + queue_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } +}; +/// @brief Implements IterableContainer and provides iterable std::stack class +template> +class IterableStack : public IterableContainer, public std::stack { + public: + IterableStack(std::stack stack_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !stack_.empty()) { + this->push(stack_.top()); + stack_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } +}; +} // namespace workarounds +#endif // defined(ELPP_STL_LOGGING) +// Log message builder +class MessageBuilder { + public: + MessageBuilder(void) : m_logger(nullptr), m_containerLogSeparator(ELPP_LITERAL("")) {} + void initialize(Logger* logger); + +# define ELPP_SIMPLE_LOG(LOG_TYPE)\ +MessageBuilder& operator<<(LOG_TYPE msg) {\ +m_logger->stream() << msg;\ +if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) {\ +m_logger->stream() << " ";\ +}\ +return *this;\ +} + + inline MessageBuilder& operator<<(const std::string& msg) { + return operator<<(msg.c_str()); + } + ELPP_SIMPLE_LOG(char) + ELPP_SIMPLE_LOG(bool) + ELPP_SIMPLE_LOG(signed short) + ELPP_SIMPLE_LOG(unsigned short) + ELPP_SIMPLE_LOG(signed int) + ELPP_SIMPLE_LOG(unsigned int) + ELPP_SIMPLE_LOG(signed long) + ELPP_SIMPLE_LOG(unsigned long) + ELPP_SIMPLE_LOG(float) + ELPP_SIMPLE_LOG(double) + ELPP_SIMPLE_LOG(char*) + ELPP_SIMPLE_LOG(const char*) + ELPP_SIMPLE_LOG(const void*) + ELPP_SIMPLE_LOG(long double) + inline MessageBuilder& operator<<(const std::wstring& msg) { + return operator<<(msg.c_str()); + } + MessageBuilder& operator<<(const wchar_t* msg); + // ostream manipulators + inline MessageBuilder& operator<<(std::ostream& (*OStreamMani)(std::ostream&)) { + m_logger->stream() << OStreamMani; + return *this; + } +#define ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} + +#if defined(ELPP_STL_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::list) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::deque) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::set) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::multiset) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::map) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::multimap) + template + inline MessageBuilder& operator<<(const std::queue& queue_) { + base::workarounds::IterableQueue iterableQueue_ = + static_cast >(queue_); + return writeIterator(iterableQueue_.begin(), iterableQueue_.end(), iterableQueue_.size()); + } + template + inline MessageBuilder& operator<<(const std::stack& stack_) { + base::workarounds::IterableStack iterableStack_ = + static_cast >(stack_); + return writeIterator(iterableStack_.begin(), iterableStack_.end(), iterableStack_.size()); + } + template + inline MessageBuilder& operator<<(const std::priority_queue& priorityQueue_) { + base::workarounds::IterablePriorityQueue iterablePriorityQueue_ = + static_cast >(priorityQueue_); + return writeIterator(iterablePriorityQueue_.begin(), iterablePriorityQueue_.end(), iterablePriorityQueue_.size()); + } + template + MessageBuilder& operator<<(const std::pair& pair_) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(pair_.first)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(pair_.second)); + m_logger->stream() << ELPP_LITERAL(")"); + return *this; + } + template + MessageBuilder& operator<<(const std::bitset& bitset_) { + m_logger->stream() << ELPP_LITERAL("["); + operator << (bitset_.to_string()); + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } +# if defined(ELPP_LOG_STD_ARRAY) + template + inline MessageBuilder& operator<<(const std::array& array) { + return writeIterator(array.begin(), array.end(), array.size()); + } +# endif // defined(ELPP_LOG_STD_ARRAY) +# if defined(ELPP_LOG_UNORDERED_MAP) + ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_map) + ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_multimap) +# endif // defined(ELPP_LOG_UNORDERED_MAP) +# if defined(ELPP_LOG_UNORDERED_SET) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_set) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_multiset) +# endif // defined(ELPP_LOG_UNORDERED_SET) +#endif // defined(ELPP_STL_LOGGING) +#if defined(ELPP_QT_LOGGING) + inline MessageBuilder& operator<<(const QString& msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << msg.toStdWString(); +# else + m_logger->stream() << msg.toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(const QByteArray& msg) { + return operator << (QString(msg)); + } + inline MessageBuilder& operator<<(const QStringRef& msg) { + return operator<<(msg.toString()); + } + inline MessageBuilder& operator<<(qint64 msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << QString::number(msg).toStdWString(); +# else + m_logger->stream() << QString::number(msg).toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(quint64 msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << QString::number(msg).toStdWString(); +# else + m_logger->stream() << QString::number(msg).toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(QChar msg) { + m_logger->stream() << msg.toLatin1(); + return *this; + } + inline MessageBuilder& operator<<(const QLatin1String& msg) { + m_logger->stream() << msg.latin1(); + return *this; + } + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QList) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QVector) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QQueue) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QSet) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QLinkedList) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QStack) + template + MessageBuilder& operator<<(const QPair& pair_) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(pair_.first)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(pair_.second)); + m_logger->stream() << ELPP_LITERAL(")"); + return *this; + } + template + MessageBuilder& operator<<(const QMap& map_) { + m_logger->stream() << ELPP_LITERAL("["); + QList keys = map_.keys(); + typename QList::const_iterator begin = keys.begin(); + typename QList::const_iterator end = keys.end(); + int max_ = static_cast(base::consts::kMaxLogPerContainer); // to prevent warning + for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(*begin)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(map_.value(*begin))); + m_logger->stream() << ELPP_LITERAL(")"); + m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); + } + if (begin != end) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } + template + inline MessageBuilder& operator<<(const QMultiMap& map_) { + operator << (static_cast>(map_)); + return *this; + } + template + MessageBuilder& operator<<(const QHash& hash_) { + m_logger->stream() << ELPP_LITERAL("["); + QList keys = hash_.keys(); + typename QList::const_iterator begin = keys.begin(); + typename QList::const_iterator end = keys.end(); + int max_ = static_cast(base::consts::kMaxLogPerContainer); // prevent type warning + for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(*begin)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(hash_.value(*begin))); + m_logger->stream() << ELPP_LITERAL(")"); + m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); + } + if (begin != end) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } + template + inline MessageBuilder& operator<<(const QMultiHash& multiHash_) { + operator << (static_cast>(multiHash_)); + return *this; + } +#endif // defined(ELPP_QT_LOGGING) +#if defined(ELPP_BOOST_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::stable_vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::list) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::deque) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::map) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::flat_map) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::set) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::flat_set) +#endif // defined(ELPP_BOOST_LOGGING) + + /// @brief Macro used internally that can be used externally to make containers easylogging++ friendly + /// + /// @detail This macro expands to write an ostream& operator<< for container. This container is expected to + /// have begin() and end() methods that return respective iterators + /// @param ContainerType Type of container e.g, MyList from WX_DECLARE_LIST(int, MyList); in wxwidgets + /// @param SizeMethod Method used to get size of container. + /// @param ElementInstance Instance of element to be fed out. Instance name is "elem". See WXELPP_ENABLED macro + /// for an example usage +#define MAKE_CONTAINERELPP_FRIENDLY(ContainerType, SizeMethod, ElementInstance) \ +el::base::type::ostream_t& operator<<(el::base::type::ostream_t& ss, const ContainerType& container) {\ +const el::base::type::char_t* sep = ELPP->hasFlag(el::LoggingFlag::NewLineForContainer) ? \ +ELPP_LITERAL("\n ") : ELPP_LITERAL(", ");\ +ContainerType::const_iterator elem = container.begin();\ +ContainerType::const_iterator endElem = container.end();\ +std::size_t size_ = container.SizeMethod; \ +ss << ELPP_LITERAL("[");\ +for (std::size_t i = 0; elem != endElem && i < el::base::consts::kMaxLogPerContainer; ++i, ++elem) { \ +ss << ElementInstance;\ +ss << ((i < size_ - 1) ? sep : ELPP_LITERAL(""));\ +}\ +if (elem != endElem) {\ +ss << ELPP_LITERAL("...");\ +}\ +ss << ELPP_LITERAL("]");\ +return ss;\ +} +#if defined(ELPP_WXWIDGETS_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(wxVector) +# define ELPP_WX_PTR_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), *(*elem)) +# define ELPP_WX_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), (*elem)) +# define ELPP_WX_HASH_MAP_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), \ +ELPP_LITERAL("(") << elem->first << ELPP_LITERAL(", ") << elem->second << ELPP_LITERAL(")") +#else +# define ELPP_WX_PTR_ENABLED(ContainerType) +# define ELPP_WX_ENABLED(ContainerType) +# define ELPP_WX_HASH_MAP_ENABLED(ContainerType) +#endif // defined(ELPP_WXWIDGETS_LOGGING) + // Other classes + template + ELPP_SIMPLE_LOG(const Class&) +#undef ELPP_SIMPLE_LOG +#undef ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG + private: + Logger* m_logger; + const base::type::char_t* m_containerLogSeparator; + + template + MessageBuilder& writeIterator(Iterator begin_, Iterator end_, std::size_t size_) { + m_logger->stream() << ELPP_LITERAL("["); + for (std::size_t i = 0; begin_ != end_ && i < base::consts::kMaxLogPerContainer; ++i, ++begin_) { + operator << (*begin_); + m_logger->stream() << ((i < size_ - 1) ? m_containerLogSeparator : ELPP_LITERAL("")); + } + if (begin_ != end_) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { + m_logger->stream() << " "; + } + return *this; + } +}; +/// @brief Writes nothing - Used when certain log is disabled +class NullWriter : base::NoCopy { + public: + NullWriter(void) {} + + // Null manipulator + inline NullWriter& operator<<(std::ostream& (*)(std::ostream&)) { + return *this; + } + + template + inline NullWriter& operator<<(const T&) { + return *this; + } + + inline operator bool() { + return true; + } +}; +/// @brief Main entry point of each logging +class Writer : base::NoCopy { + public: + Writer(Level level, const char* file, base::type::LineNumber line, + const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, + base::type::VerboseLevel verboseLevel = 0) : + m_msg(nullptr), m_level(level), m_file(file), m_line(line), m_func(func), m_verboseLevel(verboseLevel), + m_logger(nullptr), m_proceed(false), m_dispatchAction(dispatchAction) { + } + + Writer(LogMessage* msg, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog) : + m_msg(msg), m_level(msg != nullptr ? msg->level() : Level::Unknown), + m_line(0), m_logger(nullptr), m_proceed(false), m_dispatchAction(dispatchAction) { + } + + virtual ~Writer(void) { + processDispatch(); + } + + template + inline Writer& operator<<(const T& log) { +#if ELPP_LOGGING_ENABLED + if (m_proceed) { + m_messageBuilder << log; + } +#endif // ELPP_LOGGING_ENABLED + return *this; + } + + inline Writer& operator<<(std::ostream& (*log)(std::ostream&)) { +#if ELPP_LOGGING_ENABLED + if (m_proceed) { + m_messageBuilder << log; + } +#endif // ELPP_LOGGING_ENABLED + return *this; + } + + inline operator bool() { + return true; + } + + Writer& construct(Logger* logger, bool needLock = true); + Writer& construct(int count, const char* loggerIds, ...); + protected: + LogMessage* m_msg; + Level m_level; + const char* m_file; + const base::type::LineNumber m_line; + const char* m_func; + base::type::VerboseLevel m_verboseLevel; + Logger* m_logger; + bool m_proceed; + base::MessageBuilder m_messageBuilder; + base::DispatchAction m_dispatchAction; + std::vector m_loggerIds; + friend class el::Helpers; + + void initializeLogger(const std::string& loggerId, bool lookup = true, bool needLock = true); + void processDispatch(); + void triggerDispatch(void); +}; +class PErrorWriter : public base::Writer { + public: + PErrorWriter(Level level, const char* file, base::type::LineNumber line, + const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, + base::type::VerboseLevel verboseLevel = 0) : + base::Writer(level, file, line, func, dispatchAction, verboseLevel) { + } + + virtual ~PErrorWriter(void); +}; +} // namespace base +// Logging from Logger class. Why this is here? Because we have Storage and Writer class available +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED +template +void Logger::log_(Level level, int vlevel, const char* s, const T& value, const Args&... args) { + base::MessageBuilder b; + b.initialize(this); + while (*s) { + if (*s == base::consts::kFormatSpecifierChar) { + if (*(s + 1) == base::consts::kFormatSpecifierChar) { + ++s; + } else { + if (*(s + 1) == base::consts::kFormatSpecifierCharValue) { + ++s; + b << value; + log_(level, vlevel, ++s, args...); + return; + } + } + } + b << *s++; + } + ELPP_INTERNAL_ERROR("Too many arguments provided. Unable to handle. Please provide more format specifiers", false); +} +template +void Logger::log_(Level level, int vlevel, const T& log) { + if (level == Level::Verbose) { + if (ELPP->vRegistry()->allowed(vlevel, __FILE__)) { + base::Writer(Level::Verbose, "FILE", 0, "FUNCTION", + base::DispatchAction::NormalLog, vlevel).construct(this, false) << log; + } else { + stream().str(ELPP_LITERAL("")); + releaseLock(); + } + } else { + base::Writer(level, "FILE", 0, "FUNCTION").construct(this, false) << log; + } +} +template +inline void Logger::log(Level level, const char* s, const T& value, const Args&... args) { + acquireLock(); // released in Writer! + log_(level, 0, s, value, args...); +} +template +inline void Logger::log(Level level, const T& log) { + acquireLock(); // released in Writer! + log_(level, 0, log); +} +# if ELPP_VERBOSE_LOG +template +inline void Logger::verbose(int vlevel, const char* s, const T& value, const Args&... args) { + acquireLock(); // released in Writer! + log_(el::Level::Verbose, vlevel, s, value, args...); +} +template +inline void Logger::verbose(int vlevel, const T& log) { + acquireLock(); // released in Writer! + log_(el::Level::Verbose, vlevel, log); +} +# else +template +inline void Logger::verbose(int, const char*, const T&, const Args&...) { + return; +} +template +inline void Logger::verbose(int, const T&) { + return; +} +# endif // ELPP_VERBOSE_LOG +# define LOGGER_LEVEL_WRITERS(FUNCTION_NAME, LOG_LEVEL)\ +template \ +inline void Logger::FUNCTION_NAME(const char* s, const T& value, const Args&... args) {\ +log(LOG_LEVEL, s, value, args...);\ +}\ +template \ +inline void Logger::FUNCTION_NAME(const T& value) {\ +log(LOG_LEVEL, value);\ +} +# define LOGGER_LEVEL_WRITERS_DISABLED(FUNCTION_NAME, LOG_LEVEL)\ +template \ +inline void Logger::FUNCTION_NAME(const char*, const T&, const Args&...) {\ +return;\ +}\ +template \ +inline void Logger::FUNCTION_NAME(const T&) {\ +return;\ +} + +# if ELPP_INFO_LOG +LOGGER_LEVEL_WRITERS(info, Level::Info) +# else +LOGGER_LEVEL_WRITERS_DISABLED(info, Level::Info) +# endif // ELPP_INFO_LOG +# if ELPP_DEBUG_LOG +LOGGER_LEVEL_WRITERS(debug, Level::Debug) +# else +LOGGER_LEVEL_WRITERS_DISABLED(debug, Level::Debug) +# endif // ELPP_DEBUG_LOG +# if ELPP_WARNING_LOG +LOGGER_LEVEL_WRITERS(warn, Level::Warning) +# else +LOGGER_LEVEL_WRITERS_DISABLED(warn, Level::Warning) +# endif // ELPP_WARNING_LOG +# if ELPP_ERROR_LOG +LOGGER_LEVEL_WRITERS(error, Level::Error) +# else +LOGGER_LEVEL_WRITERS_DISABLED(error, Level::Error) +# endif // ELPP_ERROR_LOG +# if ELPP_FATAL_LOG +LOGGER_LEVEL_WRITERS(fatal, Level::Fatal) +# else +LOGGER_LEVEL_WRITERS_DISABLED(fatal, Level::Fatal) +# endif // ELPP_FATAL_LOG +# if ELPP_TRACE_LOG +LOGGER_LEVEL_WRITERS(trace, Level::Trace) +# else +LOGGER_LEVEL_WRITERS_DISABLED(trace, Level::Trace) +# endif // ELPP_TRACE_LOG +# undef LOGGER_LEVEL_WRITERS +# undef LOGGER_LEVEL_WRITERS_DISABLED +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED +#if ELPP_COMPILER_MSVC +# define ELPP_VARIADIC_FUNC_MSVC(variadicFunction, variadicArgs) variadicFunction variadicArgs +# define ELPP_VARIADIC_FUNC_MSVC_RUN(variadicFunction, ...) ELPP_VARIADIC_FUNC_MSVC(variadicFunction, (__VA_ARGS__)) +# define el_getVALength(...) ELPP_VARIADIC_FUNC_MSVC_RUN(el_resolveVALength, 0, ## __VA_ARGS__,\ +10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#else +# if ELPP_COMPILER_CLANG +# define el_getVALength(...) el_resolveVALength(0, __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +# else +# define el_getVALength(...) el_resolveVALength(0, ## __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +# endif // ELPP_COMPILER_CLANG +#endif // ELPP_COMPILER_MSVC +#define el_resolveVALength(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N +#define ELPP_WRITE_LOG(writer, level, dispatchAction, ...) \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_IF(writer, condition, level, dispatchAction, ...) if (condition) \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_EVERY_N(writer, occasion, level, dispatchAction, ...) \ +ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion) && \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_AFTER_N(writer, n, level, dispatchAction, ...) \ +ELPP->validateAfterNCounter(__FILE__, __LINE__, n) && \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_N_TIMES(writer, n, level, dispatchAction, ...) \ +ELPP->validateNTimesCounter(__FILE__, __LINE__, n) && \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) +class PerformanceTrackingData { + public: + enum class DataType : base::type::EnumType { + Checkpoint = 1, Complete = 2 + }; + // Do not use constructor, will run into multiple definition error, use init(PerformanceTracker*) + explicit PerformanceTrackingData(DataType dataType) : m_performanceTracker(nullptr), + m_dataType(dataType), m_firstCheckpoint(false), m_file(""), m_line(0), m_func("") {} + inline const std::string* blockName(void) const; + inline const struct timeval* startTime(void) const; + inline const struct timeval* endTime(void) const; + inline const struct timeval* lastCheckpointTime(void) const; + inline const base::PerformanceTracker* performanceTracker(void) const { + return m_performanceTracker; + } + inline PerformanceTrackingData::DataType dataType(void) const { + return m_dataType; + } + inline bool firstCheckpoint(void) const { + return m_firstCheckpoint; + } + inline std::string checkpointId(void) const { + return m_checkpointId; + } + inline const char* file(void) const { + return m_file; + } + inline base::type::LineNumber line(void) const { + return m_line; + } + inline const char* func(void) const { + return m_func; + } + inline const base::type::string_t* formattedTimeTaken() const { + return &m_formattedTimeTaken; + } + inline const std::string& loggerId(void) const; + private: + base::PerformanceTracker* m_performanceTracker; + base::type::string_t m_formattedTimeTaken; + PerformanceTrackingData::DataType m_dataType; + bool m_firstCheckpoint; + std::string m_checkpointId; + const char* m_file; + base::type::LineNumber m_line; + const char* m_func; + inline void init(base::PerformanceTracker* performanceTracker, bool firstCheckpoint = false) { + m_performanceTracker = performanceTracker; + m_firstCheckpoint = firstCheckpoint; + } + + friend class el::base::PerformanceTracker; +}; +namespace base { +/// @brief Represents performanceTracker block of code that conditionally adds performance status to log +/// either when goes outside the scope of when checkpoint() is called +class PerformanceTracker : public base::threading::ThreadSafe, public Loggable { + public: + PerformanceTracker(const std::string& blockName, + base::TimestampUnit timestampUnit = base::TimestampUnit::Millisecond, + const std::string& loggerId = std::string(el::base::consts::kPerformanceLoggerId), + bool scopedLog = true, Level level = base::consts::kPerformanceTrackerDefaultLevel); + /// @brief Copy constructor + PerformanceTracker(const PerformanceTracker& t) : + m_blockName(t.m_blockName), m_timestampUnit(t.m_timestampUnit), m_loggerId(t.m_loggerId), m_scopedLog(t.m_scopedLog), + m_level(t.m_level), m_hasChecked(t.m_hasChecked), m_lastCheckpointId(t.m_lastCheckpointId), m_enabled(t.m_enabled), + m_startTime(t.m_startTime), m_endTime(t.m_endTime), m_lastCheckpointTime(t.m_lastCheckpointTime) { + } + virtual ~PerformanceTracker(void); + /// @brief A checkpoint for current performanceTracker block. + void checkpoint(const std::string& id = std::string(), const char* file = __FILE__, + base::type::LineNumber line = __LINE__, + const char* func = ""); + inline Level level(void) const { + return m_level; + } + private: + std::string m_blockName; + base::TimestampUnit m_timestampUnit; + std::string m_loggerId; + bool m_scopedLog; + Level m_level; + bool m_hasChecked; + std::string m_lastCheckpointId; + bool m_enabled; + struct timeval m_startTime, m_endTime, m_lastCheckpointTime; + + PerformanceTracker(void); + + friend class el::PerformanceTrackingData; + friend class base::DefaultPerformanceTrackingCallback; + + const inline base::type::string_t getFormattedTimeTaken() const { + return getFormattedTimeTaken(m_startTime); + } + + const base::type::string_t getFormattedTimeTaken(struct timeval startTime) const; + + virtual inline void log(el::base::type::ostream_t& os) const { + os << getFormattedTimeTaken(); + } +}; +class DefaultPerformanceTrackingCallback : public PerformanceTrackingCallback { + protected: + void handle(const PerformanceTrackingData* data) { + m_data = data; + base::type::stringstream_t ss; + if (m_data->dataType() == PerformanceTrackingData::DataType::Complete) { + ss << ELPP_LITERAL("Executed [") << m_data->blockName()->c_str() << ELPP_LITERAL("] in [") << + *m_data->formattedTimeTaken() << ELPP_LITERAL("]"); + } else { + ss << ELPP_LITERAL("Performance checkpoint"); + if (!m_data->checkpointId().empty()) { + ss << ELPP_LITERAL(" [") << m_data->checkpointId().c_str() << ELPP_LITERAL("]"); + } + ss << ELPP_LITERAL(" for block [") << m_data->blockName()->c_str() << ELPP_LITERAL("] : [") << + *m_data->performanceTracker(); + if (!ELPP->hasFlag(LoggingFlag::DisablePerformanceTrackingCheckpointComparison) + && m_data->performanceTracker()->m_hasChecked) { + ss << ELPP_LITERAL(" ([") << *m_data->formattedTimeTaken() << ELPP_LITERAL("] from "); + if (m_data->performanceTracker()->m_lastCheckpointId.empty()) { + ss << ELPP_LITERAL("last checkpoint"); + } else { + ss << ELPP_LITERAL("checkpoint '") << m_data->performanceTracker()->m_lastCheckpointId.c_str() << ELPP_LITERAL("'"); + } + ss << ELPP_LITERAL(")]"); + } else { + ss << ELPP_LITERAL("]"); + } + } + el::base::Writer(m_data->performanceTracker()->level(), m_data->file(), m_data->line(), m_data->func()).construct(1, + m_data->loggerId().c_str()) << ss.str(); + } + private: + const PerformanceTrackingData* m_data; +}; +} // namespace base +inline const std::string* PerformanceTrackingData::blockName() const { + return const_cast(&m_performanceTracker->m_blockName); +} +inline const struct timeval* PerformanceTrackingData::startTime() const { + return const_cast(&m_performanceTracker->m_startTime); +} +inline const struct timeval* PerformanceTrackingData::endTime() const { + return const_cast(&m_performanceTracker->m_endTime); +} +inline const struct timeval* PerformanceTrackingData::lastCheckpointTime() const { + return const_cast(&m_performanceTracker->m_lastCheckpointTime); +} +inline const std::string& PerformanceTrackingData::loggerId(void) const { + return m_performanceTracker->m_loggerId; +} +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) +namespace base { +/// @brief Contains some internal debugging tools like crash handler and stack tracer +namespace debug { +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) +class StackTrace : base::NoCopy { + public: + static const unsigned int kMaxStack = 64; + static const unsigned int kStackStart = 2; // We want to skip c'tor and StackTrace::generateNew() + class StackTraceEntry { + public: + StackTraceEntry(std::size_t index, const std::string& loc, const std::string& demang, const std::string& hex, + const std::string& addr); + StackTraceEntry(std::size_t index, const std::string& loc) : + m_index(index), + m_location(loc) { + } + std::size_t m_index; + std::string m_location; + std::string m_demangled; + std::string m_hex; + std::string m_addr; + friend std::ostream& operator<<(std::ostream& ss, const StackTraceEntry& si); + + private: + StackTraceEntry(void); + }; + + StackTrace(void) { + generateNew(); + } + + virtual ~StackTrace(void) { + } + + inline std::vector& getLatestStack(void) { + return m_stack; + } + + friend std::ostream& operator<<(std::ostream& os, const StackTrace& st); + + private: + std::vector m_stack; + + void generateNew(void); +}; +/// @brief Handles unexpected crashes +class CrashHandler : base::NoCopy { + public: + typedef void (*Handler)(int); + + explicit CrashHandler(bool useDefault); + explicit CrashHandler(const Handler& cHandler) { + setHandler(cHandler); + } + void setHandler(const Handler& cHandler); + + private: + Handler m_handler; +}; +#else +class CrashHandler { + public: + explicit CrashHandler(bool) {} +}; +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) +} // namespace debug +} // namespace base +extern base::debug::CrashHandler elCrashHandler; +#define MAKE_LOGGABLE(ClassType, ClassInstance, OutputStreamInstance) \ +el::base::type::ostream_t& operator<<(el::base::type::ostream_t& OutputStreamInstance, const ClassType& ClassInstance) +/// @brief Initializes syslog with process ID, options and facility. calls closelog() on d'tor +class SysLogInitializer { + public: + SysLogInitializer(const char* processIdent, int options = 0, int facility = 0) { +#if defined(ELPP_SYSLOG) + (void)base::consts::kSysLogLoggerId; + openlog(processIdent, options, facility); +#else + ELPP_UNUSED(processIdent); + ELPP_UNUSED(options); + ELPP_UNUSED(facility); +#endif // defined(ELPP_SYSLOG) + } + virtual ~SysLogInitializer(void) { +#if defined(ELPP_SYSLOG) + closelog(); +#endif // defined(ELPP_SYSLOG) + } +}; +#define ELPP_INITIALIZE_SYSLOG(id, opt, fac) el::SysLogInitializer elSyslogInit(id, opt, fac) +/// @brief Static helpers for developers +class Helpers : base::StaticClass { + public: + /// @brief Shares logging repository (base::Storage) + static inline void setStorage(base::type::StoragePointer storage) { + ELPP = storage; + } + /// @return Main storage repository + static inline base::type::StoragePointer storage() { + return ELPP; + } + /// @brief Sets application arguments and figures out whats active for logging and whats not. + static inline void setArgs(int argc, char** argv) { + ELPP->setApplicationArguments(argc, argv); + } + /// @copydoc setArgs(int argc, char** argv) + static inline void setArgs(int argc, const char** argv) { + ELPP->setApplicationArguments(argc, const_cast(argv)); + } + /// @brief Sets thread name for current thread. Requires std::thread + static inline void setThreadName(const std::string& name) { + ELPP->setThreadName(name); + } + static inline std::string getThreadName() { + return ELPP->getThreadName(base::threading::getCurrentThreadId()); + } +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + /// @brief Overrides default crash handler and installs custom handler. + /// @param crashHandler A functor with no return type that takes single int argument. + /// Handler is a typedef with specification: void (*Handler)(int) + static inline void setCrashHandler(const el::base::debug::CrashHandler::Handler& crashHandler) { + el::elCrashHandler.setHandler(crashHandler); + } + /// @brief Abort due to crash with signal in parameter + /// @param sig Crash signal + static void crashAbort(int sig, const char* sourceFile = "", unsigned int long line = 0); + /// @brief Logs reason of crash as per sig + /// @param sig Crash signal + /// @param stackTraceIfAvailable Includes stack trace if available + /// @param level Logging level + /// @param logger Logger to use for logging + static void logCrashReason(int sig, bool stackTraceIfAvailable = false, + Level level = Level::Fatal, const char* logger = base::consts::kDefaultLoggerId); +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + /// @brief Installs pre rollout callback, this callback is triggered when log file is about to be rolled out + /// (can be useful for backing up) + static inline void installPreRollOutCallback(const PreRollOutCallback& callback) { + ELPP->setPreRollOutCallback(callback); + } + /// @brief Uninstalls pre rollout callback + static inline void uninstallPreRollOutCallback(void) { + ELPP->unsetPreRollOutCallback(); + } + /// @brief Installs post log dispatch callback, this callback is triggered when log is dispatched + template + static inline bool installLogDispatchCallback(const std::string& id) { + return ELPP->installLogDispatchCallback(id); + } + /// @brief Uninstalls log dispatch callback + template + static inline void uninstallLogDispatchCallback(const std::string& id) { + ELPP->uninstallLogDispatchCallback(id); + } + template + static inline T* logDispatchCallback(const std::string& id) { + return ELPP->logDispatchCallback(id); + } +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + /// @brief Installs post performance tracking callback, this callback is triggered when performance tracking is finished + template + static inline bool installPerformanceTrackingCallback(const std::string& id) { + return ELPP->installPerformanceTrackingCallback(id); + } + /// @brief Uninstalls post performance tracking handler + template + static inline void uninstallPerformanceTrackingCallback(const std::string& id) { + ELPP->uninstallPerformanceTrackingCallback(id); + } + template + static inline T* performanceTrackingCallback(const std::string& id) { + return ELPP->performanceTrackingCallback(id); + } +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + /// @brief Converts template to std::string - useful for loggable classes to log containers within log(std::ostream&) const + template + static std::string convertTemplateToStdString(const T& templ) { + el::Logger* logger = + ELPP->registeredLoggers()->get(el::base::consts::kDefaultLoggerId); + if (logger == nullptr) { + return std::string(); + } + base::MessageBuilder b; + b.initialize(logger); + logger->acquireLock(); + b << templ; +#if defined(ELPP_UNICODE) + std::string s = std::string(logger->stream().str().begin(), logger->stream().str().end()); +#else + std::string s = logger->stream().str(); +#endif // defined(ELPP_UNICODE) + logger->stream().str(ELPP_LITERAL("")); + logger->releaseLock(); + return s; + } + /// @brief Returns command line arguments (pointer) provided to easylogging++ + static inline const el::base::utils::CommandLineArgs* commandLineArgs(void) { + return ELPP->commandLineArgs(); + } + /// @brief Reserve space for custom format specifiers for performance + /// @see std::vector::reserve + static inline void reserveCustomFormatSpecifiers(std::size_t size) { + ELPP->m_customFormatSpecifiers.reserve(size); + } + /// @brief Installs user defined format specifier and handler + static inline void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { + ELPP->installCustomFormatSpecifier(customFormatSpecifier); + } + /// @brief Uninstalls user defined format specifier and handler + static inline bool uninstallCustomFormatSpecifier(const char* formatSpecifier) { + return ELPP->uninstallCustomFormatSpecifier(formatSpecifier); + } + /// @brief Returns true if custom format specifier is installed + static inline bool hasCustomFormatSpecifier(const char* formatSpecifier) { + return ELPP->hasCustomFormatSpecifier(formatSpecifier); + } + static inline void validateFileRolling(Logger* logger, Level level) { + if (ELPP == nullptr || logger == nullptr) return; + logger->m_typedConfigurations->validateFileRolling(level, ELPP->preRollOutCallback()); + } +}; +/// @brief Static helpers to deal with loggers and their configurations +class Loggers : base::StaticClass { + public: + /// @brief Gets existing or registers new logger + static Logger* getLogger(const std::string& identity, bool registerIfNotAvailable = true); + /// @brief Changes default log builder for future loggers + static void setDefaultLogBuilder(el::LogBuilderPtr& logBuilderPtr); + /// @brief Installs logger registration callback, this callback is triggered when new logger is registered + template + static inline bool installLoggerRegistrationCallback(const std::string& id) { + return ELPP->registeredLoggers()->installLoggerRegistrationCallback(id); + } + /// @brief Uninstalls log dispatch callback + template + static inline void uninstallLoggerRegistrationCallback(const std::string& id) { + ELPP->registeredLoggers()->uninstallLoggerRegistrationCallback(id); + } + template + static inline T* loggerRegistrationCallback(const std::string& id) { + return ELPP->registeredLoggers()->loggerRegistrationCallback(id); + } + /// @brief Unregisters logger - use it only when you know what you are doing, you may unregister + /// loggers initialized / used by third-party libs. + static bool unregisterLogger(const std::string& identity); + /// @brief Whether or not logger with id is registered + static bool hasLogger(const std::string& identity); + /// @brief Reconfigures specified logger with new configurations + static Logger* reconfigureLogger(Logger* logger, const Configurations& configurations); + /// @brief Reconfigures logger with new configurations after looking it up using identity + static Logger* reconfigureLogger(const std::string& identity, const Configurations& configurations); + /// @brief Reconfigures logger's single configuration + static Logger* reconfigureLogger(const std::string& identity, ConfigurationType configurationType, + const std::string& value); + /// @brief Reconfigures all the existing loggers with new configurations + static void reconfigureAllLoggers(const Configurations& configurations); + /// @brief Reconfigures single configuration for all the loggers + static inline void reconfigureAllLoggers(ConfigurationType configurationType, const std::string& value) { + reconfigureAllLoggers(Level::Global, configurationType, value); + } + /// @brief Reconfigures single configuration for all the loggers for specified level + static void reconfigureAllLoggers(Level level, ConfigurationType configurationType, + const std::string& value); + /// @brief Sets default configurations. This configuration is used for future (and conditionally for existing) loggers + static void setDefaultConfigurations(const Configurations& configurations, + bool reconfigureExistingLoggers = false); + /// @brief Returns current default + static const Configurations* defaultConfigurations(void); + /// @brief Returns log stream reference pointer if needed by user + static const base::LogStreamsReferenceMapPtr logStreamsReference(void); + /// @brief Default typed configuration based on existing defaultConf + static base::TypedConfigurations defaultTypedConfigurations(void); + /// @brief Populates all logger IDs in current repository. + /// @param [out] targetList List of fill up. + static std::vector* populateAllLoggerIds(std::vector* targetList); + /// @brief Sets configurations from global configuration file. + static void configureFromGlobal(const char* globalConfigurationFilePath); + /// @brief Configures loggers using command line arg. Ensure you have already set command line args, + /// @return False if invalid argument or argument with no value provided, true if attempted to configure logger. + /// If true is returned that does not mean it has been configured successfully, it only means that it + /// has attempted to configure logger using configuration file provided in argument + static bool configureFromArg(const char* argKey); + /// @brief Flushes all loggers for all levels - Be careful if you dont know how many loggers are registered + static void flushAll(void); + /// @brief Adds logging flag used internally. + static inline void addFlag(LoggingFlag flag) { + ELPP->addFlag(flag); + } + /// @brief Removes logging flag used internally. + static inline void removeFlag(LoggingFlag flag) { + ELPP->removeFlag(flag); + } + /// @brief Determines whether or not certain flag is active + static inline bool hasFlag(LoggingFlag flag) { + return ELPP->hasFlag(flag); + } + /// @brief Adds flag and removes it when scope goes out + class ScopedAddFlag { + public: + ScopedAddFlag(LoggingFlag flag) : m_flag(flag) { + Loggers::addFlag(m_flag); + } + ~ScopedAddFlag(void) { + Loggers::removeFlag(m_flag); + } + private: + LoggingFlag m_flag; + }; + /// @brief Removes flag and add it when scope goes out + class ScopedRemoveFlag { + public: + ScopedRemoveFlag(LoggingFlag flag) : m_flag(flag) { + Loggers::removeFlag(m_flag); + } + ~ScopedRemoveFlag(void) { + Loggers::addFlag(m_flag); + } + private: + LoggingFlag m_flag; + }; + /// @brief Sets hierarchy for logging. Needs to enable logging flag (HierarchicalLogging) + static void setLoggingLevel(Level level) { + ELPP->setLoggingLevel(level); + } + /// @brief Sets verbose level on the fly + static void setVerboseLevel(base::type::VerboseLevel level); + /// @brief Gets current verbose level + static base::type::VerboseLevel verboseLevel(void); + /// @brief Sets vmodules as specified (on the fly) + static void setVModules(const char* modules); + /// @brief Clears vmodules + static void clearVModules(void); +}; +class VersionInfo : base::StaticClass { + public: + /// @brief Current version number + static const std::string version(void); + + /// @brief Release date of current version + static const std::string releaseDate(void); +}; +} // namespace el +#undef VLOG_IS_ON +/// @brief Determines whether verbose logging is on for specified level current file. +#define VLOG_IS_ON(verboseLevel) (ELPP->vRegistry()->allowed(verboseLevel, __FILE__)) +#undef TIMED_BLOCK +#undef TIMED_SCOPE +#undef TIMED_SCOPE_IF +#undef TIMED_FUNC +#undef TIMED_FUNC_IF +#undef ELPP_MIN_UNIT +#if defined(ELPP_PERFORMANCE_MICROSECONDS) +# define ELPP_MIN_UNIT el::base::TimestampUnit::Microsecond +#else +# define ELPP_MIN_UNIT el::base::TimestampUnit::Millisecond +#endif // (defined(ELPP_PERFORMANCE_MICROSECONDS)) +/// @brief Performance tracked scope. Performance gets written when goes out of scope using +/// 'performance' logger. +/// +/// @detail Please note in order to check the performance at a certain time you can use obj->checkpoint(); +/// @see el::base::PerformanceTracker +/// @see el::base::PerformanceTracker::checkpoint +// Note: Do not surround this definition with null macro because of obj instance +#define TIMED_SCOPE_IF(obj, blockname, condition) el::base::type::PerformanceTrackerPtr obj( condition ? \ + new el::base::PerformanceTracker(blockname, ELPP_MIN_UNIT) : nullptr ) +#define TIMED_SCOPE(obj, blockname) TIMED_SCOPE_IF(obj, blockname, true) +#define TIMED_BLOCK(obj, blockName) for (struct { int i; el::base::type::PerformanceTrackerPtr timer; } obj = { 0, \ + el::base::type::PerformanceTrackerPtr(new el::base::PerformanceTracker(blockName, ELPP_MIN_UNIT)) }; obj.i < 1; ++obj.i) +/// @brief Performance tracked function. Performance gets written when goes out of scope using +/// 'performance' logger. +/// +/// @detail Please note in order to check the performance at a certain time you can use obj->checkpoint(); +/// @see el::base::PerformanceTracker +/// @see el::base::PerformanceTracker::checkpoint +#define TIMED_FUNC_IF(obj,condition) TIMED_SCOPE_IF(obj, ELPP_FUNC, condition) +#define TIMED_FUNC(obj) TIMED_SCOPE(obj, ELPP_FUNC) +#undef PERFORMANCE_CHECKPOINT +#undef PERFORMANCE_CHECKPOINT_WITH_ID +#define PERFORMANCE_CHECKPOINT(obj) obj->checkpoint(std::string(), __FILE__, __LINE__, ELPP_FUNC) +#define PERFORMANCE_CHECKPOINT_WITH_ID(obj, id) obj->checkpoint(id, __FILE__, __LINE__, ELPP_FUNC) +#undef ELPP_COUNTER +#undef ELPP_COUNTER_POS +/// @brief Gets hit counter for file/line +#define ELPP_COUNTER (ELPP->hitCounters()->getCounter(__FILE__, __LINE__)) +/// @brief Gets hit counter position for file/line, -1 if not registered yet +#define ELPP_COUNTER_POS (ELPP_COUNTER == nullptr ? -1 : ELPP_COUNTER->hitCounts()) +// Undef levels to support LOG(LEVEL) +#undef INFO +#undef WARNING +#undef DEBUG +#undef ERROR +#undef FATAL +#undef TRACE +#undef VERBOSE +// Undef existing +#undef CINFO +#undef CWARNING +#undef CDEBUG +#undef CFATAL +#undef CERROR +#undef CTRACE +#undef CVERBOSE +#undef CINFO_IF +#undef CWARNING_IF +#undef CDEBUG_IF +#undef CERROR_IF +#undef CFATAL_IF +#undef CTRACE_IF +#undef CVERBOSE_IF +#undef CINFO_EVERY_N +#undef CWARNING_EVERY_N +#undef CDEBUG_EVERY_N +#undef CERROR_EVERY_N +#undef CFATAL_EVERY_N +#undef CTRACE_EVERY_N +#undef CVERBOSE_EVERY_N +#undef CINFO_AFTER_N +#undef CWARNING_AFTER_N +#undef CDEBUG_AFTER_N +#undef CERROR_AFTER_N +#undef CFATAL_AFTER_N +#undef CTRACE_AFTER_N +#undef CVERBOSE_AFTER_N +#undef CINFO_N_TIMES +#undef CWARNING_N_TIMES +#undef CDEBUG_N_TIMES +#undef CERROR_N_TIMES +#undef CFATAL_N_TIMES +#undef CTRACE_N_TIMES +#undef CVERBOSE_N_TIMES +// Normal logs +#if ELPP_INFO_LOG +# define CINFO(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE(writer, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel)) writer(\ +el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#else +# define CVERBOSE(writer, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// Conditional logs +#if ELPP_INFO_LOG +# define CINFO_IF(writer, condition_, dispatchAction, ...) \ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel) && (condition_)) writer( \ +el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#else +# define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// Occasional logs +#if ELPP_INFO_LOG +# define CINFO_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...)\ +CVERBOSE_IF(writer, ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// After N logs +#if ELPP_INFO_LOG +# define CINFO_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...)\ +CVERBOSE_IF(writer, ELPP->validateAfterNCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// N Times logs +#if ELPP_INFO_LOG +# define CINFO_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...)\ +CVERBOSE_IF(writer, ELPP->validateNTimesCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// +// Custom Loggers - Requires (level, dispatchAction, loggerId/s) +// +// undef existing +#undef CLOG +#undef CLOG_VERBOSE +#undef CVLOG +#undef CLOG_IF +#undef CLOG_VERBOSE_IF +#undef CVLOG_IF +#undef CLOG_EVERY_N +#undef CVLOG_EVERY_N +#undef CLOG_AFTER_N +#undef CVLOG_AFTER_N +#undef CLOG_N_TIMES +#undef CVLOG_N_TIMES +// Normal logs +#define CLOG(LEVEL, ...)\ +C##LEVEL(el::base::Writer, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG(vlevel, ...) CVERBOSE(el::base::Writer, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +// Conditional logs +#define CLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_IF(condition, vlevel, ...)\ +CVERBOSE_IF(el::base::Writer, condition, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +// Hit counts based logs +#define CLOG_EVERY_N(n, LEVEL, ...)\ +C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_EVERY_N(n, vlevel, ...)\ +CVERBOSE_EVERY_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CLOG_AFTER_N(n, LEVEL, ...)\ +C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_AFTER_N(n, vlevel, ...)\ +CVERBOSE_AFTER_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CLOG_N_TIMES(n, LEVEL, ...)\ +C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_N_TIMES(n, vlevel, ...)\ +CVERBOSE_N_TIMES(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +// +// Default Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros +// +// undef existing +#undef LOG +#undef VLOG +#undef LOG_IF +#undef VLOG_IF +#undef LOG_EVERY_N +#undef VLOG_EVERY_N +#undef LOG_AFTER_N +#undef VLOG_AFTER_N +#undef LOG_N_TIMES +#undef VLOG_N_TIMES +#undef ELPP_CURR_FILE_LOGGER_ID +#if defined(ELPP_DEFAULT_LOGGER) +# define ELPP_CURR_FILE_LOGGER_ID ELPP_DEFAULT_LOGGER +#else +# define ELPP_CURR_FILE_LOGGER_ID el::base::consts::kDefaultLoggerId +#endif +#undef ELPP_TRACE +#define ELPP_TRACE CLOG(TRACE, ELPP_CURR_FILE_LOGGER_ID) +// Normal logs +#define LOG(LEVEL) CLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG(vlevel) CVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Conditional logs +#define LOG_IF(condition, LEVEL) CLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_IF(condition, vlevel) CVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Hit counts based logs +#define LOG_EVERY_N(n, LEVEL) CLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_EVERY_N(n, vlevel) CVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define LOG_AFTER_N(n, LEVEL) CLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_AFTER_N(n, vlevel) CVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define LOG_N_TIMES(n, LEVEL) CLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_N_TIMES(n, vlevel) CVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Generic PLOG() +#undef CPLOG +#undef CPLOG_IF +#undef PLOG +#undef PLOG_IF +#undef DCPLOG +#undef DCPLOG_IF +#undef DPLOG +#undef DPLOG_IF +#define CPLOG(LEVEL, ...)\ +C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CPLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::PErrorWriter, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define DCPLOG(LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define DCPLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::PErrorWriter, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define PLOG(LEVEL) CPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define PLOG_IF(condition, LEVEL) CPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DPLOG(LEVEL) DCPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DPLOG_IF(condition, LEVEL) DCPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +// Generic SYSLOG() +#undef CSYSLOG +#undef CSYSLOG_IF +#undef CSYSLOG_EVERY_N +#undef CSYSLOG_AFTER_N +#undef CSYSLOG_N_TIMES +#undef SYSLOG +#undef SYSLOG_IF +#undef SYSLOG_EVERY_N +#undef SYSLOG_AFTER_N +#undef SYSLOG_N_TIMES +#undef DCSYSLOG +#undef DCSYSLOG_IF +#undef DCSYSLOG_EVERY_N +#undef DCSYSLOG_AFTER_N +#undef DCSYSLOG_N_TIMES +#undef DSYSLOG +#undef DSYSLOG_IF +#undef DSYSLOG_EVERY_N +#undef DSYSLOG_AFTER_N +#undef DSYSLOG_N_TIMES +#if defined(ELPP_SYSLOG) +# define CSYSLOG(LEVEL, ...)\ +C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_EVERY_N(n, LEVEL, ...) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_AFTER_N(n, LEVEL, ...) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_N_TIMES(n, LEVEL, ...) C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define SYSLOG(LEVEL) CSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_IF(condition, LEVEL) CSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_EVERY_N(n, LEVEL) CSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_AFTER_N(n, LEVEL) CSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_N_TIMES(n, LEVEL) CSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DCSYSLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::Writer, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_EVERY_N(n, LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_AFTER_N(n, LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_N_TIMES(n, LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DSYSLOG(LEVEL) DCSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_IF(condition, LEVEL) DCSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_EVERY_N(n, LEVEL) DCSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_AFTER_N(n, LEVEL) DCSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_N_TIMES(n, LEVEL) DCSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) +#else +# define CSYSLOG(LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() +# define SYSLOG(LEVEL) el::base::NullWriter() +# define SYSLOG_IF(condition, LEVEL) el::base::NullWriter() +# define SYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() +# define SYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() +# define SYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() +# define DCSYSLOG(LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() +# define DSYSLOG(LEVEL) el::base::NullWriter() +# define DSYSLOG_IF(condition, LEVEL) el::base::NullWriter() +# define DSYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() +# define DSYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() +# define DSYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() +#endif // defined(ELPP_SYSLOG) +// +// Custom Debug Only Loggers - Requires (level, loggerId/s) +// +// undef existing +#undef DCLOG +#undef DCVLOG +#undef DCLOG_IF +#undef DCVLOG_IF +#undef DCLOG_EVERY_N +#undef DCVLOG_EVERY_N +#undef DCLOG_AFTER_N +#undef DCVLOG_AFTER_N +#undef DCLOG_N_TIMES +#undef DCVLOG_N_TIMES +// Normal logs +#define DCLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG(LEVEL, __VA_ARGS__) +#define DCLOG_VERBOSE(vlevel, ...) if (ELPP_DEBUG_LOG) CLOG_VERBOSE(vlevel, __VA_ARGS__) +#define DCVLOG(vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG(vlevel, __VA_ARGS__) +// Conditional logs +#define DCLOG_IF(condition, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_IF(condition, LEVEL, __VA_ARGS__) +#define DCVLOG_IF(condition, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_IF(condition, vlevel, __VA_ARGS__) +// Hit counts based logs +#define DCLOG_EVERY_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_EVERY_N(n, LEVEL, __VA_ARGS__) +#define DCVLOG_EVERY_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_EVERY_N(n, vlevel, __VA_ARGS__) +#define DCLOG_AFTER_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_AFTER_N(n, LEVEL, __VA_ARGS__) +#define DCVLOG_AFTER_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_AFTER_N(n, vlevel, __VA_ARGS__) +#define DCLOG_N_TIMES(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_N_TIMES(n, LEVEL, __VA_ARGS__) +#define DCVLOG_N_TIMES(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_N_TIMES(n, vlevel, __VA_ARGS__) +// +// Default Debug Only Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros +// +#if !defined(ELPP_NO_DEBUG_MACROS) +// undef existing +#undef DLOG +#undef DVLOG +#undef DLOG_IF +#undef DVLOG_IF +#undef DLOG_EVERY_N +#undef DVLOG_EVERY_N +#undef DLOG_AFTER_N +#undef DVLOG_AFTER_N +#undef DLOG_N_TIMES +#undef DVLOG_N_TIMES +// Normal logs +#define DLOG(LEVEL) DCLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG(vlevel) DCVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Conditional logs +#define DLOG_IF(condition, LEVEL) DCLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_IF(condition, vlevel) DCVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Hit counts based logs +#define DLOG_EVERY_N(n, LEVEL) DCLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_EVERY_N(n, vlevel) DCVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define DLOG_AFTER_N(n, LEVEL) DCLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_AFTER_N(n, vlevel) DCVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define DLOG_N_TIMES(n, LEVEL) DCLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_N_TIMES(n, vlevel) DCVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#endif // defined(ELPP_NO_DEBUG_MACROS) +#if !defined(ELPP_NO_CHECK_MACROS) +// Check macros +#undef CCHECK +#undef CPCHECK +#undef CCHECK_EQ +#undef CCHECK_NE +#undef CCHECK_LT +#undef CCHECK_GT +#undef CCHECK_LE +#undef CCHECK_GE +#undef CCHECK_BOUNDS +#undef CCHECK_NOTNULL +#undef CCHECK_STRCASEEQ +#undef CCHECK_STRCASENE +#undef CHECK +#undef PCHECK +#undef CHECK_EQ +#undef CHECK_NE +#undef CHECK_LT +#undef CHECK_GT +#undef CHECK_LE +#undef CHECK_GE +#undef CHECK_BOUNDS +#undef CHECK_NOTNULL +#undef CHECK_STRCASEEQ +#undef CHECK_STRCASENE +#define CCHECK(condition, ...) CLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " +#define CPCHECK(condition, ...) CPLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " +#define CHECK(condition) CCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define PCHECK(condition) CPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define CCHECK_EQ(a, b, ...) CCHECK(a == b, __VA_ARGS__) +#define CCHECK_NE(a, b, ...) CCHECK(a != b, __VA_ARGS__) +#define CCHECK_LT(a, b, ...) CCHECK(a < b, __VA_ARGS__) +#define CCHECK_GT(a, b, ...) CCHECK(a > b, __VA_ARGS__) +#define CCHECK_LE(a, b, ...) CCHECK(a <= b, __VA_ARGS__) +#define CCHECK_GE(a, b, ...) CCHECK(a >= b, __VA_ARGS__) +#define CCHECK_BOUNDS(val, min, max, ...) CCHECK(val >= min && val <= max, __VA_ARGS__) +#define CHECK_EQ(a, b) CCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_NE(a, b) CCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_LT(a, b) CCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_GT(a, b) CCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_LE(a, b) CCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_GE(a, b) CCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_BOUNDS(val, min, max) CCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) +#define CCHECK_NOTNULL(ptr, ...) CCHECK((ptr) != nullptr, __VA_ARGS__) +#define CCHECK_STREQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " == " << #str2 << "] " +#define CCHECK_STRNE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " != " << #str2 << "] " +#define CCHECK_STRCASEEQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " == " << #str2 << "] " +#define CCHECK_STRCASENE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " != " << #str2 << "] " +#define CHECK_NOTNULL(ptr) CCHECK_NOTNULL((ptr), ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STREQ(str1, str2) CCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRNE(str1, str2) CCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRCASEEQ(str1, str2) CCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRCASENE(str1, str2) CCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#undef DCCHECK +#undef DCCHECK_EQ +#undef DCCHECK_NE +#undef DCCHECK_LT +#undef DCCHECK_GT +#undef DCCHECK_LE +#undef DCCHECK_GE +#undef DCCHECK_BOUNDS +#undef DCCHECK_NOTNULL +#undef DCCHECK_STRCASEEQ +#undef DCCHECK_STRCASENE +#undef DCPCHECK +#undef DCHECK +#undef DCHECK_EQ +#undef DCHECK_NE +#undef DCHECK_LT +#undef DCHECK_GT +#undef DCHECK_LE +#undef DCHECK_GE +#undef DCHECK_BOUNDS_ +#undef DCHECK_NOTNULL +#undef DCHECK_STRCASEEQ +#undef DCHECK_STRCASENE +#undef DPCHECK +#define DCCHECK(condition, ...) if (ELPP_DEBUG_LOG) CCHECK(condition, __VA_ARGS__) +#define DCCHECK_EQ(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_EQ(a, b, __VA_ARGS__) +#define DCCHECK_NE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_NE(a, b, __VA_ARGS__) +#define DCCHECK_LT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LT(a, b, __VA_ARGS__) +#define DCCHECK_GT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GT(a, b, __VA_ARGS__) +#define DCCHECK_LE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LE(a, b, __VA_ARGS__) +#define DCCHECK_GE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GE(a, b, __VA_ARGS__) +#define DCCHECK_BOUNDS(val, min, max, ...) if (ELPP_DEBUG_LOG) CCHECK_BOUNDS(val, min, max, __VA_ARGS__) +#define DCCHECK_NOTNULL(ptr, ...) if (ELPP_DEBUG_LOG) CCHECK_NOTNULL((ptr), __VA_ARGS__) +#define DCCHECK_STREQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STREQ(str1, str2, __VA_ARGS__) +#define DCCHECK_STRNE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRNE(str1, str2, __VA_ARGS__) +#define DCCHECK_STRCASEEQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASEEQ(str1, str2, __VA_ARGS__) +#define DCCHECK_STRCASENE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASENE(str1, str2, __VA_ARGS__) +#define DCPCHECK(condition, ...) if (ELPP_DEBUG_LOG) CPCHECK(condition, __VA_ARGS__) +#define DCHECK(condition) DCCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_EQ(a, b) DCCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_NE(a, b) DCCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_LT(a, b) DCCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_GT(a, b) DCCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_LE(a, b) DCCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_GE(a, b) DCCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_BOUNDS(val, min, max) DCCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_NOTNULL(ptr) DCCHECK_NOTNULL((ptr), ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STREQ(str1, str2) DCCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRNE(str1, str2) DCCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRCASEEQ(str1, str2) DCCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRCASENE(str1, str2) DCCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DPCHECK(condition) DCPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#endif // defined(ELPP_NO_CHECK_MACROS) +#if defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) +# define ELPP_USE_DEF_CRASH_HANDLER false +#else +# define ELPP_USE_DEF_CRASH_HANDLER true +#endif // defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) +#define ELPP_CRASH_HANDLER_INIT +#define ELPP_INIT_EASYLOGGINGPP(val) \ +namespace el { \ +namespace base { \ +el::base::type::StoragePointer elStorage(val); \ +} \ +el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER); \ +} + +#if ELPP_ASYNC_LOGGING +# define INITIALIZE_EASYLOGGINGPP ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()),\ +new el::base::AsyncDispatchWorker())) +#else +# define INITIALIZE_EASYLOGGINGPP ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()))) +#endif // ELPP_ASYNC_LOGGING +#define INITIALIZE_NULL_EASYLOGGINGPP \ +namespace el {\ +namespace base {\ +el::base::type::StoragePointer elStorage;\ +}\ +el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ +} +#define SHARE_EASYLOGGINGPP(initializedStorage)\ +namespace el {\ +namespace base {\ +el::base::type::StoragePointer elStorage(initializedStorage);\ +}\ +el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ +} + +#if defined(ELPP_UNICODE) +# define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv); std::locale::global(std::locale("")) +#else +# define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv) +#endif // defined(ELPP_UNICODE) +#endif // EASYLOGGINGPP_H diff --git a/utils/ReturnCode/CMakeLists.txt b/utils/ReturnCode/CMakeLists.txt new file mode 100644 index 00000000..2bf631a3 --- /dev/null +++ b/utils/ReturnCode/CMakeLists.txt @@ -0,0 +1,24 @@ + +include(${CMAKE_SOURCE_DIR}/build/global_config.cmake) +set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) +set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) + +include_directories( + ./src + ./include + ${UTILS_SOURCE_PATH}/ReturnCode/include + ${UTILS_SOURCE_PATH}/Log/include +) +#do not rely on any other library +#link_directories( +#) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +aux_source_directory(./src SRC_FILES) + +set(TARGET_NAME ReturnCode) +add_library(${TARGET_NAME} STATIC ${SRC_FILES}) +target_link_libraries(${TARGET_NAME} Log) + diff --git a/utils/ReturnCode/include/ReturnCode.h b/utils/ReturnCode/include/ReturnCode.h new file mode 100644 index 00000000..a75e9195 --- /dev/null +++ b/utils/ReturnCode/include/ReturnCode.h @@ -0,0 +1,28 @@ +#ifndef RETURN_CODE_H +#define RETURN_CODE_H +enum C_RETURN_CODE +{ + C_RETURN_CODE_OK = 0, + C_RETURN_CODE_NOT_OK, + C_RETURN_CODE_INVALID_PARAMENTER, + C_RETURN_CODE_END +}; +typedef struct returnCodeC RETURN_CODE_C; +typedef struct returnCodeC +{ + const char *(*printStringCode)(const RETURN_CODE_C); + const long int mCode; +} RETURN_CODE_C; + +/* +** Make sure we can call this stuff from C++. +*/ +#ifdef __cplusplus +extern "C" +{ +#endif +const RETURN_CODE_C CreateReturnCode(const long int code); +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file diff --git a/utils/ReturnCode/include/VReturnCode.h b/utils/ReturnCode/include/VReturnCode.h new file mode 100644 index 00000000..91786745 --- /dev/null +++ b/utils/ReturnCode/include/VReturnCode.h @@ -0,0 +1,54 @@ +#ifndef V_RETURN_CODE_H +#define V_RETURN_CODE_H +#include +#include +/** + * @brief + * The base return code. + * Attention: VReturnCOdeDefineStr must be added one item when define one new code. + */ +enum class VReturnCodeDefine +{ + OK = 0, + NOT_OK_UNDEFINE_REASON, + NOT_OK_VIRTUAL_FUNCTION, + MAKE_SHARED_PTR_FAILED, + END +}; +class VReturnCode +{ +protected: + VReturnCode(const int &code) : mCode(code) + { + } + +public: + virtual ~VReturnCode() = default; + virtual const int GetIntCode() { return mCode; } + bool IsCodeOK(); + /** + * @brief + * Print the code translate into a readable string. + * @return int + */ + virtual std::string PrintStringCode(); + void SetTips(const std::string &tips) { mTips = tips; } + const std::string &GetTips() { return mTips; } + /** + * @brief + * Create a new return code, which is the only way to create a code shared ptr. + * @param code + * @return std::make_shared + */ + static std::shared_ptr NewCode(const VReturnCodeDefine &code); + +private: + const int mCode; // Can't be reset. + std::string mTips; // Give some tips for return code, such as the not OK detail. +}; +/** + * @brief + * Define the VReturnCode as shared ptr, which other modules can redefine VReturnCode. + */ +using RETURN_CODE = std::shared_ptr; +#endif \ No newline at end of file diff --git a/utils/ReturnCode/src/ReturnCode.c b/utils/ReturnCode/src/ReturnCode.c new file mode 100644 index 00000000..dba1442b --- /dev/null +++ b/utils/ReturnCode/src/ReturnCode.c @@ -0,0 +1,35 @@ +#include "ReturnCode.h" +#include "Log.h" +#include +static const char *RETRUN_CODE_STRING[C_RETURN_CODE_END + 1]={ + "C_RETURN_CODE_OK", + "C_RETURN_CODE_NOT_OK", + "C_RETURN_CODE_INVALID_PARAMENTER", + "C_RETURN_CODE_END" +}; +static const char *PrintStringCode(const RETURN_CODE_C this) +{ + if (C_RETURN_CODE_OK <= this.mCode && this.mCode <= C_RETURN_CODE_END) + { + LogInfo("Return code = [ %s ]\n", RETRUN_CODE_STRING[this.mCode]); + return RETRUN_CODE_STRING[this.mCode]; + } + LogError("Return code = [ %s ]\n", RETRUN_CODE_STRING[C_RETURN_CODE_INVALID_PARAMENTER]); + return RETRUN_CODE_STRING[C_RETURN_CODE_INVALID_PARAMENTER]; +} +const RETURN_CODE_C CreateReturnCode(const long int code) +{ + if (C_RETURN_CODE_OK <= code && code <= C_RETURN_CODE_END) + { + RETURN_CODE_C result = {NULL, code}; + result.printStringCode = PrintStringCode; + return result; + } + else + { + LogError("undefined code.\n"); + RETURN_CODE_C result = {NULL, C_RETURN_CODE_INVALID_PARAMENTER}; + result.printStringCode = PrintStringCode; + return result; + } +} \ No newline at end of file diff --git a/utils/ReturnCode/src/VReturnCode.cpp b/utils/ReturnCode/src/VReturnCode.cpp new file mode 100644 index 00000000..bf687cb8 --- /dev/null +++ b/utils/ReturnCode/src/VReturnCode.cpp @@ -0,0 +1,44 @@ +#include "VReturnCode.h" +#include "Log.h" +const std::string VReturnCOdeDefineStr[static_cast(VReturnCodeDefine::END) + 1] = { + "OK", + "NOT_OK_UNDEFINE_REASON, undefine reason", + "NOT_OK_VIRTUAL_FUNCTION, do nothing function", + "MAKE_SHARED_PTR_FAILED, std::make_shared failed", + "END"}; +std::shared_ptr VReturnCode::NewCode(const VReturnCodeDefine &code) +{ + // return std::make_shared(static_cast(code)); + class MakeShared : public VReturnCode + { + public: + MakeShared(const int &code) : VReturnCode(code) {} + }; + return std::make_shared(static_cast(code)); +} +bool VReturnCode::IsCodeOK() +{ + bool result = mCode == static_cast(VReturnCodeDefine::OK) ? true : false; + // if (!result) + // { + // PrintStringCode(); // Don't print code when run ok. + // } + return result; +} +std::string VReturnCode::PrintStringCode() +{ + if (mCode < static_cast(VReturnCodeDefine::OK) || mCode > static_cast(VReturnCodeDefine::END)) + { + LogError("Illegal code, cross the border.\n"); + return "Illegal code."; + } + if (mCode > static_cast(VReturnCodeDefine::OK)) + { + LogError("Return code:[ %s ]\n", VReturnCOdeDefineStr[mCode].c_str()); + } + else + { + LogInfo("Return code:[ %s %s]\n", VReturnCOdeDefineStr[mCode].c_str(), GetTips().c_str()); + } + return VReturnCOdeDefineStr[mCode]; +} \ No newline at end of file
ZOzreE~@oc3djFhjJ(b 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 z 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 z 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%0D`fu^XAry9*YN%6 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

n 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%0AQdCESr$6@is0Jx8>Dvp`23 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

1_nh7pfmyn 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%0A^k_#)Uqp(W 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 z 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 u3q7Q2#@f|G0&K( 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