50 #define __func__ __FUNCTION__ 112 typedef std::pair<const std::string, int>
logd;
147 bool timestamp_ =
false;
149 bool auto_newline_ =
true;
153 void set_indent(
int level);
154 void enable_timestamp();
155 void set_prefix(
const std::string& prefix);
156 void set_auto_newline(
bool enabled);
165 bool show_names =
true,
bool do_indent =
false,
bool show_timestamps =
true,
bool break_strict =
true,
bool auto_newline =
true)
const;
169 return severity_ > domain.
domain_->second;
213 if (!
debug().dont_log(domain)) do_log_entry(str);
220 if (!
debug().dont_log(domain)) do_log_entry(str);
224 if (!str_.empty()) do_log_exit();
227 void do_log_entry(
const std::string& str) noexcept;
228 void do_log_exit() noexcept;
239 #define log_scope(description) lg::scope_logger scope_logging_object__(lg::general(), description); 240 #define log_scope2(domain,description) lg::scope_logger scope_logging_object__(domain, description); 242 #define LOG_STREAM(level, domain) if (lg::level().dont_log(domain)) ; else lg::level()(domain) | formatter() 245 #define LOG_STREAM_NAMELESS(level, domain) if (lg::level().dont_log(domain)) ; else lg::level()(domain, false) | formatter() 248 #define LOG_STREAM_NAMELESS_STREAMING(level, domain) if (lg::level().dont_log(domain)) ; else lg::level()(domain, false, false, true, true, false) | formatter() 251 #define LOG_STREAM_INDENT(level,domain) if (lg::level().dont_log(domain)) ; else lg::level()(domain, true, true) | formatter() 255 #define FORCE_LOG_TO(logger, domain) logger(domain) | formatter() 260 #define PLAIN_LOG lg::err()(lg::general(), false, false, false, false, true) | formatter() 261 #define STREAMING_LOG lg::err()(lg::general(), false, false, false, false, false) | formatter() std::string get_timestamp(const std::time_t &t, const std::string &format)
std::string get_timespan(const std::time_t &t)
logger(char const *name, int severity)
redirect_output_setter(std::ostream &stream)
Constructor.
Helper class to redirect the output of the logger in a certain scope.
const std::string log_file_suffix
std::pair< const std::string, int > logd
bool is_not_log_file(const std::string &fn)
Helper function for rotate_logs.
scope_logger(const log_domain &domain, const char *str)
std::string & get_log_file_path()
bool get_log_domain_severity(const std::string &name, int &severity)
std::string sanitize_log(const std::string &logstr)
void rotate_logs(const std::string &log_dir)
Deletes old log files from the log directory.
bool dont_log(const log_domain &domain) const
std::string unique_log_filename()
Generates a unique log file name.
void check_log_dir_writable()
~redirect_output_setter()
const log_domain & domain_
std::ostream * old_stream_
The previously set redirection.
void set_strict_severity(int severity)
terrain_code operator|(const terrain_code &a, const terrain_code &b)
std::string get_name() const
bool set_log_domain_severity(const std::string &name, int severity)
std::string list_logdomains(const std::string &filter)
void set_log_file_path(const std::string &path)
int get_severity() const
Returns following values depending on the logger: error: 0 warn: 1 info: 2 debug: 3 See also the lg::...
scope_logger(const log_domain &domain, const std::string &str)
const std::string log_file_prefix
void precise_timestamps(bool pt)
std::stringstream & log_to_chat()
Use this to show WML errors in the ingame chat.