diff --git a/include/ylt/easylog.hpp b/include/ylt/easylog.hpp index 4388acec6..414dc4793 100644 --- a/include/ylt/easylog.hpp +++ b/include/ylt/easylog.hpp @@ -72,6 +72,21 @@ class logger { void stop_async_log() { appender_->stop(); } + // set and get + void set_min_severity(Severity severity) { min_severity_ = severity; } + Severity get_min_severity() { return min_severity_; } + + void set_console(bool enable) { + enable_console_ = enable; + if (appender_) { + appender_->enable_console(enable); + } + } + bool get_console() { return enable_console_; } + + void set_async(bool enable) { async_ = enable; } + bool get_async() { return async_; } + private: logger() { static appender appender{}; @@ -117,6 +132,36 @@ inline void init_log(Severity min_severity, const std::string &filename = "", max_file_size, max_files, flush_every_time); } +template +inline void set_min_severity(Severity severity) { + logger::instance().set_min_severity(severity); +} + +template +inline Severity get_min_severity() { + return logger::instance().get_min_severity(); +} + +template +inline void set_console(bool enable) { + logger::instance().set_console(enable); +} + +template +inline bool get_console() { + return logger::instance().get_console(); +} + +template +inline void set_async(bool enable) { + logger::instance().set_async(enable); +} + +template +inline bool get_async() { + return logger::instance().get_async(); +} + template inline void flush() { logger::instance().flush(); diff --git a/include/ylt/easylog/record.hpp b/include/ylt/easylog/record.hpp index db882454f..8fa617897 100644 --- a/include/ylt/easylog/record.hpp +++ b/include/ylt/easylog/record.hpp @@ -18,6 +18,8 @@ #include #include #include + +#include "ylt/util/time_util.h" #ifdef __linux__ #include #include @@ -177,6 +179,11 @@ class record_t { else if constexpr (detail::has_str_v) { ss_.append(data.str()); } + else if constexpr (std::is_same_v) { + ss_.append( + ylt::get_local_time_str(std::chrono::system_clock::to_time_t(data))); + } else { std::stringstream ss; ss << data; diff --git a/src/easylog/tests/test_easylog.cpp b/src/easylog/tests/test_easylog.cpp index efc3002f2..d821cac74 100644 --- a/src/easylog/tests/test_easylog.cpp +++ b/src/easylog/tests/test_easylog.cpp @@ -13,6 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include + #include #include @@ -38,6 +40,24 @@ TEST_CASE("test basic") { std::filesystem::remove(filename); easylog::init_log(Severity::DEBUG, filename, false, true, 5000, 1, true); + std::chrono::seconds seconds(3); + std::chrono::system_clock::time_point p(seconds); + std::chrono::system_clock::now(); + + std::time_t now = std::time(0); + std::chrono::system_clock::time_point pt = + std::chrono::system_clock::from_time_t(now); + ELOG_INFO << pt; + ELOG_INFO << std::chrono::system_clock::now(); + + easylog::set_console(false); + ELOG_INFO << "no console"; + easylog::set_console(true); + + easylog::set_min_severity(Severity::WARN); + ELOG_INFO << "info log"; + easylog::set_min_severity(Severity::DEBUG); + std::unique_ptr ptr(new int(42)); ELOG_INFO << ptr.get(); ELOG_INFO << 42 << " " << 4.5 << 'a' << Severity::DEBUG;