@@ -36,30 +36,23 @@ enum class log_level
3636 */
3737class logger
3838{
39+ std::string generate_common_prefix (fmt::text_style const &ts,
40+ char const *prefix);
41+
3942public:
4043 template <typename S, typename ... TArgs>
4144 void log (log_level with_level, char const *prefix,
42- fmt::text_style const &style, S const &format_str,
43- TArgs &&... tags) const
45+ fmt::text_style const &style, S const &format_str, TArgs &&...args)
4446 {
4547 if (with_level < m_current_level) {
4648 return ;
4749 }
4850
4951 auto const &ts = m_use_color ? style : fmt::text_style{};
5052
51- std::string str = fmt::format (" {:%Y-%m-%d %H:%M:%S} " ,
52- fmt::localtime (std::time (nullptr )));
53-
54- if (m_current_level == log_level::debug) {
55- str += fmt::format (ts, " [{}] " , this_thread_num);
56- }
57-
58- if (prefix) {
59- str += fmt::format (ts, " {}: " , prefix);
60- }
53+ auto str = generate_common_prefix (ts, prefix);
6154
62- str += fmt::format (ts, format_str, std::forward<TArgs>(tags )...);
55+ str += fmt::format (ts, format_str, std::forward<TArgs>(args )...);
6356 str += ' \n ' ;
6457
6558 std::fputs (str.c_str (), stderr);
@@ -81,11 +74,15 @@ class logger
8174 void disable_progress () noexcept { m_show_progress = false ; }
8275 void auto_progress () noexcept { m_show_progress = osmium::util::isatty (2 ); }
8376
77+ void needs_leading_return () noexcept { m_needs_leading_return = true ; }
78+ void no_leading_return () noexcept { m_needs_leading_return = false ; }
79+
8480private:
8581 log_level m_current_level = log_level::info;
8682 bool m_log_sql = false ;
8783 bool m_log_sql_data = false ;
8884 bool m_show_progress = true ;
85+ bool m_needs_leading_return = false ;
8986
9087#ifdef _WIN32
9188 bool m_use_color = false ;
@@ -98,51 +95,51 @@ class logger
9895logger &get_logger () noexcept ;
9996
10097template <typename S, typename ... TArgs>
101- void log_debug (S const &format_str, TArgs &&... tags )
98+ void log_debug (S const &format_str, TArgs &&... args )
10299{
103100 get_logger ().log (log_level::debug, nullptr , {}, format_str,
104- std::forward<TArgs>(tags )...);
101+ std::forward<TArgs>(args )...);
105102}
106103
107104template <typename S, typename ... TArgs>
108- void log_info (S const &format_str, TArgs &&... tags )
105+ void log_info (S const &format_str, TArgs &&... args )
109106{
110107 get_logger ().log (log_level::info, nullptr , {}, format_str,
111- std::forward<TArgs>(tags )...);
108+ std::forward<TArgs>(args )...);
112109}
113110
114111template <typename S, typename ... TArgs>
115- void log_warn (S const &format_str, TArgs &&... tags )
112+ void log_warn (S const &format_str, TArgs &&... args )
116113{
117114 get_logger ().log (log_level::warn, " WARNING" , fg (fmt::color::red),
118- format_str, std::forward<TArgs>(tags )...);
115+ format_str, std::forward<TArgs>(args )...);
119116}
120117
121118template <typename S, typename ... TArgs>
122- void log_error (S const &format_str, TArgs &&... tags )
119+ void log_error (S const &format_str, TArgs &&... args )
123120{
124121 get_logger ().log (log_level::error, " ERROR" ,
125122 fmt::emphasis::bold | fg (fmt::color::red), format_str,
126- std::forward<TArgs>(tags )...);
123+ std::forward<TArgs>(args )...);
127124}
128125
129126template <typename S, typename ... TArgs>
130- void log_sql (S const &format_str, TArgs &&... tags )
127+ void log_sql (S const &format_str, TArgs &&... args )
131128{
132- auto const &logger = get_logger ();
129+ auto &logger = get_logger ();
133130 if (logger.log_sql ()) {
134131 logger.log (log_level::error, " SQL" , fg (fmt::color::blue), format_str,
135- std::forward<TArgs>(tags )...);
132+ std::forward<TArgs>(args )...);
136133 }
137134}
138135
139136template <typename S, typename ... TArgs>
140- void log_sql_data (S const &format_str, TArgs &&... tags )
137+ void log_sql_data (S const &format_str, TArgs &&... args )
141138{
142- auto const &logger = get_logger ();
139+ auto &logger = get_logger ();
143140 if (logger.log_sql_data ()) {
144141 logger.log (log_level::error, " SQL" , {}, format_str,
145- std::forward<TArgs>(tags )...);
142+ std::forward<TArgs>(args )...);
146143 }
147144}
148145
0 commit comments