Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,8 @@ endfunction()
# Source for CPP_LOGGER
#-----------------------------------------------------------------------------
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
include_directories(${CMAKE_SOURCE_DIR}/include) # public header
include_directories(${CMAKE_SOURCE_DIR}/src) # private header
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) # public header
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) # private header
include_directories(${CMAKE_BINARY_DIR}/include) # build header

set(CPP_LOGGER_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp-logger/logger.cpp
Expand Down Expand Up @@ -249,7 +249,7 @@ export(EXPORT ${CPP_LOGGER_EXPORTED_TARGETS}
FILE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/${PROJECT_NAME}/${PROJECT_NAME}Targets.cmake")

# Write the configure file
configure_file("${CMAKE_SOURCE_DIR}/cmake/configure_files/cpp_logger_config.hpp.in"
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/configure_files/cpp_logger_config.hpp.in"
"${CMAKE_INCLUDE_OUTPUT_DIRECTORY}/cpp-logger/cpp_logger_config.hpp" @ONLY)


Expand Down Expand Up @@ -379,7 +379,7 @@ if (NOT (CPP_LOGGER_MODULEFILE_NAME MATCHES ".+\.lua"))
endif ()

configure_file(
"${CMAKE_SOURCE_DIR}/cmake/configure_files/cpp_logger_module.lua.in"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/configure_files/cpp_logger_module.lua.in"
"${CMAKE_BINARY_DIR}/cpp_logger_module.lua.install"
@ONLY)

Expand Down
2 changes: 2 additions & 0 deletions include/cpp-logger/clogger.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ extern "C" {
#define CPP_LOGGER_INFO 4
#define CPP_LOGGER_DEBUG 5
#define CPP_LOGGER_TRACE 6
#include <stdio.h>
extern void cpp_logger_clog(const int logger_level, const char* name, const char* string,
...);
extern void cpp_logger_clog_level(const int logger_level, const char* name);
extern void cpp_logger_clog_level_file(const int logger_level, const char* name, FILE* file);
#ifdef __cplusplus
}
#endif
33 changes: 17 additions & 16 deletions include/cpp-logger/logger.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,19 @@ class Logger {
private:
static std::unordered_map<std::string, std::shared_ptr<Logger>> instance_map;
std::string _app_name;
FILE *_file;

public:
LoggerType level;

explicit Logger(std::string app_name)
: _app_name(app_name), level(LoggerType::LOG_ERROR) {}
explicit Logger(std::string app_name, FILE *file = stdout)
: _app_name(app_name), level(LoggerType::LOG_ERROR), _file(file) {}

static std::shared_ptr<Logger> Instance(std::string app_name = "LOGGER") {
static std::shared_ptr<Logger> Instance(std::string app_name = "LOGGER", FILE *file = stdout) {
auto iter = instance_map.find(app_name);
std::shared_ptr<Logger> instance;
if (iter == instance_map.end()) {
instance = std::make_shared<Logger>(app_name);
instance = std::make_shared<Logger>(app_name, file);
instance_map.emplace(app_name, instance);
} else {
instance = iter->second;
Expand All @@ -53,43 +54,43 @@ class Logger {
switch (type) {
case LoggerType::LOG_PRINT: {
if (level >= LoggerType::LOG_PRINT) {
fprintf(stdout, "[%s PRINT]: %s\n", _app_name.c_str(), buffer);
fflush(stdout);
fprintf(_file, "[%s PRINT]: %s\n", _app_name.c_str(), buffer);
fflush(_file);
}
break;
}
case LoggerType::LOG_TRACE: {
if (level >= LoggerType::LOG_TRACE) {
fprintf(stdout, "[%s TRACE]: %s\n", _app_name.c_str(), buffer);
fflush(stdout);
fprintf(_file, "[%s TRACE]: %s\n", _app_name.c_str(), buffer);
fflush(_file);
}
break;
}
case LoggerType::LOG_DEBUG: {
if (level >= LoggerType::LOG_DEBUG) {
fprintf(stdout, "[%s DEBUG]: %s\n", _app_name.c_str(), buffer);
fflush(stdout);
fprintf(_file, "[%s DEBUG]: %s\n", _app_name.c_str(), buffer);
fflush(_file);
}
break;
}
case LoggerType::LOG_INFO: {
if (level >= LoggerType::LOG_INFO) {
fprintf(stdout, "[%s INFO]: %s\n", _app_name.c_str(), buffer);
fflush(stdout);
fprintf(_file, "[%s INFO]: %s\n", _app_name.c_str(), buffer);
fflush(_file);
}
break;
}
case LoggerType::LOG_WARN: {
if (level >= LoggerType::LOG_WARN) {
fprintf(stdout, "[%s WARN]: %s\n", _app_name.c_str(), buffer);
fflush(stdout);
fprintf(_file, "[%s WARN]: %s\n", _app_name.c_str(), buffer);
fflush(_file);
}
break;
}
case LoggerType::LOG_ERROR: {
if (level >= LoggerType::LOG_ERROR) {
fprintf(stderr, "[%s ERROR]: %s\n", _app_name.c_str(), buffer);
fflush(stderr);
fprintf(_file, "[%s ERROR]: %s\n", _app_name.c_str(), buffer);
fflush(_file);
}
break;
}
Expand Down
4 changes: 4 additions & 0 deletions src/cpp-logger/clogger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ void cpp_logger_clog(int logger_level, const char *name, const char *string, ...
void cpp_logger_clog_level(const int logger_level, const char *name) {
cpplogger::Logger::Instance(name)->level = static_cast<cpplogger::LoggerType>(logger_level);
}

void cpp_logger_clog_level_file(const int logger_level, const char *name, FILE *file) {
cpplogger::Logger::Instance(name, file)->level = static_cast<cpplogger::LoggerType>(logger_level);
}