diff --git a/clutchlog/clutchlog.h b/clutchlog/clutchlog.h
index 19bd4f8..6332e50 100644
--- a/clutchlog/clutchlog.h
+++ b/clutchlog/clutchlog.h
@@ -471,7 +471,7 @@ class clutchlog
/** Current format of the file output. */
std::string _format_dump;
/** Character for filling. */
- const char _hfill_char;
+ char _hfill_char;
/** Standard output. */
std::ostream* _out;
#if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
@@ -794,11 +794,11 @@ class clutchlog
const size_t right_len = format.size() - hfill_pos - hfill_tag.size();
if(right_len+left_len > _nb_columns) {
// The right part would go over the terminal width: add a new line.
- const std::string hfill(std::max(0, _nb_columns-right_len), _hfill_char);
+ const std::string hfill(std::max((size_t)0, _nb_columns-right_len), _hfill_char);
format = replace(format, "\\{hfill\\}", "\n"+hfill);
} else {
// There is some space in between left and right parts.
- const std::string hfill(std::max(0, _nb_columns - (right_len+left_len)), _hfill_char);
+ const std::string hfill(std::max((size_t)0, _nb_columns - (right_len+left_len)), _hfill_char);
format = replace(format, "\\{hfill\\}", hfill);
}
} else {
diff --git a/docs/classclutchlog-members.html b/docs/classclutchlog-members.html
index c9753c5..1c9fa81 100644
--- a/docs/classclutchlog-members.html
+++ b/docs/classclutchlog-members.html
@@ -71,7 +71,7 @@ $(function() {
@@ -253,10 +253,10 @@ std::string | _format_dump |
| | Current format of the file output.
|
| |
-|
-const char | _hfill_char |
-| | Character for filling.
|
-| |
+|
+char | _hfill_char |
+| | Character for filling.
|
+| |
|
std::ostream * | _out |
| | Standard output.
|
diff --git a/docs/clutchlog_8h.html b/docs/clutchlog_8h.html
index c23689b..3cfe27e 100644
--- a/docs/clutchlog_8h.html
+++ b/docs/clutchlog_8h.html
@@ -170,10 +170,10 @@ Macros
#define CLUTCHLOG_STRIP_CALLS 5 |
| | Compile-time number of call stack levels to remove from depth display by default.
|
| |
-|
-#define | CLUTCHLOG_HFILL_CHAR '.' |
-| | Character used as a filling for right-align the right part of messages with "{hfill}".
|
-| |
+|
+#define | CLUTCHLOG_HFILL_MARK '.' |
+| | Character used as a filling for right-align the right part of messages with "{hfill}".
|
+| |
diff --git a/docs/clutchlog_8h_source.html b/docs/clutchlog_8h_source.html
index d4f933a..c47e305 100644
--- a/docs/clutchlog_8h_source.html
+++ b/docs/clutchlog_8h_source.html
@@ -224,8 +224,8 @@ $(function() {
182 #ifndef CLUTCHLOG_DEFAULT_FORMAT
- 183 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
- 185 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
+ 183 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 // Enables: name, depth and depth_marks
+ 185 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1 // Enables: hfill
186 #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg} {hfill} {func} @ {file}:{line}\n"
188 #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg}\t\t\t\t\t{func} @ {file}:{line}\n"
@@ -241,745 +241,770 @@ $(function() {
199 #ifndef CLUTCHLOG_DEFAULT_FORMAT
200 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
- 202 #define CLUTCHLOG_DEFAULT_FORMAT "[{name}] {level_letter}:{depth_marks} {msg}\n"
+ 202 #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter}:{depth_marks} {msg} {hfill} {func}\n"
- 204 #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg}\n"
+ 204 #define CLUTCHLOG_DEFAULT_FORMAT "{level_letter} {msg}\t\t\t\t\t{func}\n"
- 211 #ifndef CLUTCHDUMP_DEFAULT_FORMAT
- 212 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
- 214 #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}"
-
- 216 #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func} @ {file}:{line}"
-
- 218 #endif // CLUTCHDUMP_DEFAULT_FORMAT
-
-
- 222 #ifndef CLUTCHDUMP_DEFAULT_SEP
- 223 #define CLUTCHDUMP_DEFAULT_SEP "\n"
- 225 #endif // CLUTCHDUMP_DEFAULT_SEP
-
-
- 229 #ifndef CLUTCHLOG_DEFAULT_DEPTH_MARK
- 230 #define CLUTCHLOG_DEFAULT_DEPTH_MARK ">"
- 232 #endif // CLUTCHLOG_DEFAULT_DEPTH_MARK
-
-
- 236 #ifndef CLUTCHLOG_STRIP_CALLS
- 237 #define CLUTCHLOG_STRIP_CALLS 5
- 239 #endif // CLUTCHLOG_STRIP_CALLS
-
-
- 243 #ifndef CLUTCHLOG_HFILL_CHAR
- 244 #define CLUTCHLOG_HFILL_CHAR '.'
- 246 #endif // CLUTCHLOG_HFILL_CHAR
-
-
-
-
-
-
-
-
-
-
-
- 269 enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 337 std::vector<int> codes; codes.reserve(3);
- 338 if(this->
fore != fg::none) { codes.push_back(
static_cast<int>(this->
fore ));}
- 339 if(this->
back != bg::none) { codes.push_back(
static_cast<int>(this->
back ));}
- 340 if(this->
style != typo::none) { codes.push_back(
static_cast<int>(this->
style));}
- 341 if(codes.size() == 0) {
return os;}
-
-
- 344 assert(codes.size() > 0);
-
- 346 for(
size_t i=1; i < codes.size(); ++i) {
- 347 os <<
";" << codes[i];
-
-
-
-
-
-
-
-
-
-
-
-
-
- 382 std::ostringstream os;
-
- 384 fmt reset(fmt::typo::reset);
-
-
-
-
-
-
-
-
- 399 void operator=(
clutchlog const&) =
delete;
-
-
-
-
-
-
- 406 {level::critical,
"Critical"},
- 407 {level::error ,
"Error"},
- 408 {level::warning ,
"Warning"},
- 409 {level::progress,
"Progress"},
- 410 {level::note ,
"Note"},
- 411 {level::info ,
"Info"},
- 412 {level::debug ,
"Debug"},
- 413 {level::xdebug ,
"XDebug"}
-
-
- 416 {level::critical,fmt(fmt::fg::red, fmt::typo::underline)},
- 417 {level::error ,fmt(fmt::fg::red, fmt::typo::bold)},
- 418 {level::warning ,fmt(fmt::fg::magenta, fmt::typo::bold)},
- 419 {level::progress,fmt()},
- 420 {level::note ,fmt()},
- 421 {level::info ,fmt()},
- 422 {level::debug ,fmt()},
- 423 {level::xdebug ,fmt()}
-
-
-
-
-
- 429 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
- 430 _depth(std::numeric_limits<size_t>::max() -
_strip_calls),
-
-
-
-
-
-
-
-
-
-
-
- 442 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
-
- 444 ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
- 445 _nb_columns = w.ws_col;
-
-
-
-
-
-
-
-
-
-
-
-
- 466 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
-
- 470 std::string _depth_mark;
-
-
-
-
-
-
-
- 481 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
- 483 static const size_t _max_buffer = 4096;
-
-
- 486 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
-
-
-
-
-
+
+ 212 #ifndef CLUTCHDUMP_DEFAULT_FORMAT
+ 213 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+ 215 #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth}) @ {file}:{line}"
+
+ 217 #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func} @ {file}:{line}"
+
+ 219 #endif // CLUTCHDUMP_DEFAULT_FORMAT
+
+ 221 #ifndef CLUTCHDUMP_DEFAULT_FORMAT
+ 222 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+ 224 #define CLUTCHDUMP_DEFAULT_FORMAT "# [{name}] {level} in {func} (at depth {depth})"
+
+ 226 #define CLUTCHDUMP_DEFAULT_FORMAT "# {level} in {func}"
+
+ 228 #endif // CLUTCHDUMP_DEFAULT_FORMAT
+
+
+
+ 233 #ifndef CLUTCHDUMP_DEFAULT_SEP
+ 234 #define CLUTCHDUMP_DEFAULT_SEP "\n"
+ 236 #endif // CLUTCHDUMP_DEFAULT_SEP
+
+
+ 240 #ifndef CLUTCHLOG_DEFAULT_DEPTH_MARK
+ 241 #define CLUTCHLOG_DEFAULT_DEPTH_MARK ">"
+ 243 #endif // CLUTCHLOG_DEFAULT_DEPTH_MARK
+
+
+ 247 #ifndef CLUTCHLOG_STRIP_CALLS
+ 248 #define CLUTCHLOG_STRIP_CALLS 5
+ 250 #endif // CLUTCHLOG_STRIP_CALLS
+
+
+ 254 #ifndef CLUTCHLOG_HFILL_MARK
+ 255 #define CLUTCHLOG_HFILL_MARK '.'
+ 257 #endif // CLUTCHLOG_HFILL_MARK
+
+
+
+
+
+
+
+
+
+
+
+ 280 enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 348 std::vector<int> codes; codes.reserve(3);
+ 349 if(this->
fore != fg::none) { codes.push_back(
static_cast<int>(this->
fore ));}
+ 350 if(this->
back != bg::none) { codes.push_back(
static_cast<int>(this->
back ));}
+ 351 if(this->
style != typo::none) { codes.push_back(
static_cast<int>(this->
style));}
+ 352 if(codes.size() == 0) {
return os;}
+
+
+ 355 assert(codes.size() > 0);
+
+ 357 for(
size_t i=1; i < codes.size(); ++i) {
+ 358 os <<
";" << codes[i];
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 393 std::ostringstream os;
+
+ 395 fmt reset(fmt::typo::reset);
+
+
+
+
+
+
+
+
+ 410 void operator=(
clutchlog const&) =
delete;
+
+
+
+
+
+
+ 417 {level::critical,
"Critical"},
+ 418 {level::error ,
"Error"},
+ 419 {level::warning ,
"Warning"},
+ 420 {level::progress,
"Progress"},
+ 421 {level::note ,
"Note"},
+ 422 {level::info ,
"Info"},
+ 423 {level::debug ,
"Debug"},
+ 424 {level::xdebug ,
"XDebug"}
+
+
+ 427 {level::critical,fmt(fmt::fg::red, fmt::typo::underline)},
+ 428 {level::error ,fmt(fmt::fg::red, fmt::typo::bold)},
+ 429 {level::warning ,fmt(fmt::fg::magenta, fmt::typo::bold)},
+ 430 {level::progress,fmt()},
+ 431 {level::note ,fmt()},
+ 432 {level::info ,fmt()},
+ 433 {level::debug ,fmt()},
+ 434 {level::xdebug ,fmt()}
+
+
+
+
+
+ 440 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+ 441 _depth(std::numeric_limits<size_t>::max() -
_strip_calls),
+
+
+
+
+
+
+
+
+
+
+
+ 453 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+
+ 455 ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
+ 456 _nb_columns = w.ws_col;
+
+
+
+
+
+
+
+
+
+
+
+
+ 477 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
+
+ 481 std::string _depth_mark;
+
+
+
+
+
+
+
+ 492 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
-
+ 494 static const size_t _max_buffer = 4096;
+
+
+ 497 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+
+
+
-
-
-
-
-
-
- 512 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
- 513 void depth(
size_t d) {_depth = d;}
- 516 size_t depth()
const {
return _depth;}
+
+
+
+
+
+
+
- 519 void depth_mark(std::string mark) {_depth_mark = mark;}
- 521 std::string depth_mark()
const {
return _depth_mark;}
-
-
-
-
-
-
-
-
-
-
-
- 541 return ilevel->second;
-
- 543 throw std::out_of_range(
"'" + name +
"' is not a valid log level name");
-
-
-
-
-
-
-
-
- 556 const std::string& in_file,
- 557 const std::string& in_function=
".*",
- 558 const std::string& in_line=
".*"
-
-
-
-
-
-
-
- 570 template<
class ... FMT>
-
-
-
-
-
-
-
-
-
- 590 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 611 const std::string&
file,
- 612 const std::string&
func,
-
-
-
-
-
-
-
-
- 621 if(not (scope.stage <=
_stage)) {
-
-
-
-
- 626 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
-
-
- 630 void *buffer[_max_buffer];
- 631 stack_depth = backtrace(buffer, _max_buffer);
- 632 scope.depth = stack_depth;
-
-
-
-
-
-
-
-
- 641 std::ostringstream sline; sline <<
line;
-
-
-
- 645 and std::regex_search(sline.str(),
_in_line);
-
-
- 648 scope.matches = scope.there;
-
-
-
-
-
- 661 const std::string& form,
- 662 const std::string& mark,
- 663 const std::string& tag
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 720 const std::regex re(mark);
- 721 return std::regex_replace(form, re, tag);
-
-
-
- 726 const std::string& form,
- 727 const std::string& mark,
-
-
-
- 731 std::ostringstream stag; stag << tag;
- 732 return replace(form, mark, stag.str());
-
-
-
-
- 738 const std::string& what,
-
- 740 const std::string& name,
-
-
- 743 const std::string&
file,
- 744 const std::string&
func,
-
-
-
-
-
-
-
-
-
-
-
-
-
- 758 std::string letter(1,
_level_word.at(stage).at(0));
-
-
- 761 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
-
-
- 765 std::ostringstream chevrons;
-
- 767 chevrons << _depth_mark;
-
-
-
- 771 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
- 772 const std::string hfill_tag =
"{hfill}";
- 773 const size_t hfill_pos =
format.find(hfill_tag);
- 774 if(hfill_pos != std::string::npos) {
- 775 const size_t left_len = hfill_pos;
- 776 const size_t right_len =
format.size() - hfill_pos - hfill_tag.size();
- 777 if(right_len+left_len > _nb_columns) {
- 778 const std::string hfill(_nb_columns-right_len,
_hfill_char);
-
-
- 781 const std::string hfill(_nb_columns - (right_len+left_len),
_hfill_char);
-
-
-
-
-
-
-
-
-
- 792 const std::string& what,
- 793 const std::string&
file,
const std::string&
func,
size_t line
-
-
-
-
-
- 799 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ 523 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+ 524 void depth(
size_t d) {_depth = d;}
+ 527 size_t depth()
const {
return _depth;}
+
+ 530 void depth_mark(
const std::string mark) {_depth_mark = mark;}
+ 532 std::string depth_mark()
const {
return _depth_mark;}
+
+ 534 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
+ 535 void hfill_mark(
const char mark) {
_hfill_char = mark;}
+
+
+
+
+
+
+
+
+
+
+
+
+ 558 return ilevel->second;
+
+ 560 throw std::out_of_range(
"'" + name +
"' is not a valid log level name");
+
+
+
+
+
+
+
+
+ 573 const std::string& in_file,
+ 574 const std::string& in_function=
".*",
+ 575 const std::string& in_line=
".*"
+
+
+
+
+
+
+
+ 587 template<
class ... FMT>
+
+
+
+
+
+
+
+
+
+ 607 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 628 const std::string&
file,
+ 629 const std::string&
func,
+
+
+
+
+
+
+
+
+ 638 if(not (scope.stage <=
_stage)) {
+
+
+
+
+ 643 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
+
+
+ 647 void *buffer[_max_buffer];
+ 648 stack_depth = backtrace(buffer, _max_buffer);
+ 649 scope.depth = stack_depth;
+
+
+
+
+
+
+
+
+ 658 std::ostringstream sline; sline <<
line;
+
+
+
+ 662 and std::regex_search(sline.str(),
_in_line);
+
+
+ 665 scope.matches = scope.there;
+
+
+
+
+
+ 678 const std::string& form,
+ 679 const std::string& mark,
+ 680 const std::string& tag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 737 const std::regex re(mark);
+ 738 return std::regex_replace(form, re, tag);
+
+
+
+ 743 const std::string& form,
+ 744 const std::string& mark,
+
+
+
+ 748 std::ostringstream stag; stag << tag;
+ 749 return replace(form, mark, stag.str());
+
+
+
+
+ 755 const std::string& what,
+
+ 757 const std::string& name,
+
+
+ 760 const std::string&
file,
+ 761 const std::string&
func,
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 775 std::string letter(1,
_level_word.at(stage).at(0));
+
+
+ 778 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
+
+
+ 782 std::ostringstream chevrons;
+
+ 784 chevrons << _depth_mark;
+
+
+
+ 788 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL
+ 789 const std::string hfill_tag =
"{hfill}";
+ 790 const size_t hfill_pos =
format.find(hfill_tag);
+ 791 if(hfill_pos != std::string::npos) {
+ 792 if(_nb_columns > 0) {
+ 793 const size_t left_len = hfill_pos;
+ 794 const size_t right_len =
format.size() - hfill_pos - hfill_tag.size();
+ 795 if(right_len+left_len > _nb_columns) {
+
+ 797 const std::string hfill(std::max((
size_t)0, _nb_columns-right_len),
_hfill_char);
+
+
+
+ 801 const std::string hfill(std::max((
size_t)0, _nb_columns - (right_len+left_len)),
_hfill_char);
+
+
+
+
+
+
+
+
+
-
-
-
- 817 const In container_begin,
const In container_end,
- 818 const std::string&
file,
const std::string&
func,
size_t line,
- 819 const std::string& filename_template =
"dump_{n}.dat",
-
-
-
-
-
-
- 826 const std::string tag =
"\\{n\\}";
- 827 const std::regex re(tag);
- 828 std::string outfile =
"";
-
-
- 831 if(std::regex_search(filename_template, re)) {
-
-
-
- 835 outfile =
replace(filename_template, tag, n);
-
- 837 }
while( fs::exists( outfile ) );
-
-
-
- 841 outfile = filename_template;
-
-
- 844 std::ofstream fd(outfile);
-
-
- 847 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
-
-
-
-
-
-
-
-
-
-
-
- 859 std::copy(container_begin, container_end,
- 860 std::ostream_iterator<typename In::value_type>(fd, sep.c_str()));
-
-
-
-
-
-
-
- 871 #else // not WITH_CLUTCHLOG
-
-
-
-
-
-
-
-
- 880 #pragma GCC diagnostic push
- 881 #pragma GCC diagnostic ignored "-Wreturn-type"
-
-
-
-
- 886 enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
-
-
- 889 enum class fg { black, red, green, yellow, blue, magenta, cyan, white, none }
fore;
- 890 enum class bg { black, red, green, yellow, blue, magenta, cyan, white, none }
back;
- 891 enum class typo { reset, bold, underline, inverse, none }
style;
-
-
-
-
-
-
-
-
- 900 std::ostream&
print_on(std::ostream&)
const {}
-
- 902 friend std::ostream&
operator<<(std::ostream&,
const fmt&) {}
- 903 std::string
operator()(
const std::string&)
const {}
-
-
-
- 907 void operator=(
clutchlog const&) =
delete;
-
-
-
-
-
-
-
-
-
-
-
-
- 920 void format(
const std::string&) {}
- 921 std::string
format()
const {}
-
-
-
-
- 926 void out(std::ostream&) {}
- 927 std::ostream&
out() {}
-
- 929 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
- 930 void depth(
size_t) {}
- 931 size_t depth()
const {}
-
- 933 void depth_mark(std::string) {}
- 934 std::string depth_mark()
const {}
-
-
-
-
-
- 940 const std::map<std::string,level>
levels()
const {};
-
-
- 943 void file(std::string) {}
- 944 void func(std::string) {}
- 945 void line(std::string) {}
+
+
+ 816 const std::string& what,
+ 817 const std::string&
file,
const std::string&
func,
size_t line
+
+
+
+
+
+ 823 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 841 const In container_begin,
const In container_end,
+ 842 const std::string&
file,
const std::string&
func,
size_t line,
+ 843 const std::string& filename_template =
"dump_{n}.dat",
+
+
+
+
+
+
+ 850 const std::string tag =
"\\{n\\}";
+ 851 const std::regex re(tag);
+ 852 std::string outfile =
"";
+
+
+ 855 if(std::regex_search(filename_template, re)) {
+
+
+
+ 859 outfile =
replace(filename_template, tag, n);
+
+ 861 }
while( fs::exists( outfile ) );
+
+
+
+ 865 outfile = filename_template;
+
+
+ 868 std::ofstream fd(outfile);
+
+
+ 871 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+
+
+
+
+
+
+
+
+
+
+
+ 883 std::copy(container_begin, container_end,
+ 884 std::ostream_iterator<typename In::value_type>(fd, sep.c_str()));
+
+
+
+
+
+
+
+ 895 #else // not WITH_CLUTCHLOG
+
+
+
+
+
+
+
+
+ 904 #pragma GCC diagnostic push
+ 905 #pragma GCC diagnostic ignored "-Wreturn-type"
+
+
+
+
+ 910 enum level {critical=0, error=1, warning=2, progress=3, note=4, info=5, debug=6, xdebug=7};
+
+
+ 913 enum class fg { black, red, green, yellow, blue, magenta, cyan, white, none }
fore;
+ 914 enum class bg { black, red, green, yellow, blue, magenta, cyan, white, none }
back;
+ 915 enum class typo { reset, bold, underline, inverse, none }
style;
+
+
+
+
+
+
+
+
+ 924 std::ostream&
print_on(std::ostream&)
const {}
+
+ 926 friend std::ostream&
operator<<(std::ostream&,
const fmt&) {}
+ 927 std::string
operator()(
const std::string&)
const {}
+
+
+
+ 931 void operator=(
clutchlog const&) =
delete;
+
+
+
+
+
+
+
+
+
+
+
+
+ 944 void format(
const std::string&) {}
+ 945 std::string
format()
const {}
- 947 #pragma GCC diagnostic push
- 948 #pragma GCC diagnostic ignored "-Wunused-parameter"
-
-
- 951 const std::string& in_function=
".*",
- 952 const std::string& in_line=
".*"
-
-
- 955 #pragma GCC diagnostic pop
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 993 const std::string&,
const std::string&,
size_t
-
-
-
-
-
-
-
- 1001 const std::string&,
const std::string&,
size_t,
-
-
-
-
-
- 1007 #pragma GCC diagnostic pop
- 1008 #endif // WITH_CLUTCHLOG
-
- 1010 #endif // __CLUTCHLOG_H__
+
+
+
+ 950 void out(std::ostream&) {}
+ 951 std::ostream&
out() {}
+
+ 953 #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1
+ 954 void depth(
size_t) {}
+ 955 size_t depth()
const {}
+
+ 957 void depth_mark(
const std::string) {}
+ 958 std::string depth_mark()
const {}
+
+ 960 #if CLUTCHLOG_HAVE_UNIX_SYSIOCTL == 1
+ 961 void hfill_mark(
const char) {}
+ 962 char hfill_mark()
const {}
+
+
+
+
+
+ 968 const std::map<std::string,level>
levels()
const {};
+
+
+ 971 void file(std::string) {}
+ 972 void func(std::string) {}
+ 973 void line(std::string) {}
+
+ 975 #pragma GCC diagnostic push
+ 976 #pragma GCC diagnostic ignored "-Wunused-parameter"
+
+
+ 979 const std::string& in_function=
".*",
+ 980 const std::string& in_line=
".*"
+
+
+ 983 #pragma GCC diagnostic pop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1021 const std::string&,
const std::string&,
size_t
+
+
+
+
+
+
+
+ 1029 const std::string&,
const std::string&,
size_t,
+
+
+
+
+
+ 1035 #pragma GCC diagnostic pop
+ 1036 #endif // WITH_CLUTCHLOG
+
+ 1038 #endif // __CLUTCHLOG_H__
-void file(std::string file)
Set the regular expression filtering the file location.
Definition: clutchlog.h:548
-#define CLUTCHDUMP_DEFAULT_FORMAT
Compile-time default format of the comment line in file dump.
Definition: clutchlog.h:216
-fg
Foreground color codes.
Definition: clutchlog.h:286
-static std::string dump_default_format
Default format of the comment line in file dump.
Definition: clutchlog.h:220
-const std::map< std::string, level > & levels() const
Get the map of available log levels string representations toward their identifier....
Definition: clutchlog.h:531
-void out(std::ostream &out)
Set the output stream on which to print.
Definition: clutchlog.h:508
-fmt()
 Empty constructor, only useful for a no-op formatter.
Definition: clutchlog.h:321
-static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:262
-void line(std::string line)
Set the regular expression filtering the line location.
Definition: clutchlog.h:552
-void format_comment(const std::string &format)
Set the template string for dumps.
Definition: clutchlog.h:503
-typo
Typographic style codes.
Definition: clutchlog.h:312
-#define CLUTCHDUMP_DEFAULT_SEP
Compile-time default item separator for dump.
Definition: clutchlog.h:224
-static std::string default_depth_mark
Default mark for stack depth.
Definition: clutchlog.h:234
+void file(std::string file)
Set the regular expression filtering the file location.
Definition: clutchlog.h:565
+#define CLUTCHDUMP_DEFAULT_FORMAT
Compile-time default format of the comment line in file dump.
Definition: clutchlog.h:217
+fg
Foreground color codes.
Definition: clutchlog.h:297
+static std::string dump_default_format
Default format of the comment line in file dump.
Definition: clutchlog.h:231
+const std::map< std::string, level > & levels() const
Get the map of available log levels string representations toward their identifier....
Definition: clutchlog.h:548
+void out(std::ostream &out)
Set the output stream on which to print.
Definition: clutchlog.h:519
+fmt()
 Empty constructor, only useful for a no-op formatter.
Definition: clutchlog.h:332
+static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:273
+void line(std::string line)
Set the regular expression filtering the line location.
Definition: clutchlog.h:569
+void format_comment(const std::string &format)
Set the template string for dumps.
Definition: clutchlog.h:514
+typo
Typographic style codes.
Definition: clutchlog.h:323
+#define CLUTCHDUMP_DEFAULT_SEP
Compile-time default item separator for dump.
Definition: clutchlog.h:235
+#define CLUTCHLOG_HFILL_MARK
Character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:256
+static std::string default_depth_mark
Default mark for stack depth.
Definition: clutchlog.h:245
#define CLUTCHLOG_DEFAULT_FORMAT
Compile-time default format of the messages (debug mode: with absolute location).
Definition: clutchlog.h:194
-std::string format() const
Get the template string.
Definition: clutchlog.h:500
-void log(const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) const
Print a log message IF the location matches the given one.
Definition: clutchlog.h:790
-level level_of(const std::string name)
Return the log level tag corresponding to the given pre-configured name.
Definition: clutchlog.h:537
-std::string _format_dump
Current format of the file output.
Definition: clutchlog.h:461
-std::string operator()(const std::string &msg) const
Format the given string with the currently encoded format.
Definition: clutchlog.h:380
-std::string format(std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const
Substitute all tags in the format string with the corresponding information and apply the style corre...
Definition: clutchlog.h:736
-std::string _format_log
Current format of the standard output.
Definition: clutchlog.h:459
-level
Available log levels.
Definition: clutchlog.h:269
-level stage
Current log level.
Definition: clutchlog.h:589
-#define CLUTCHLOG_HFILL_CHAR
Character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:245
-#define CLUTCHLOG_DEFAULT_DEPTH_MARK
Compile-time default mark for stack depth.
Definition: clutchlog.h:231
-friend std::ostream & operator<<(std::ostream &os, const fmt &fmt)
Output stream overload.
Definition: clutchlog.h:365
-std::map< level, fmt > _level_fmt
Dictionary of level identifier to their format.
Definition: clutchlog.h:457
-std::regex _in_line
Current line location filter.
Definition: clutchlog.h:479
+std::string format() const
Get the template string.
Definition: clutchlog.h:511
+void log(const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) const
Print a log message IF the location matches the given one.
Definition: clutchlog.h:814
+level level_of(const std::string name)
Return the log level tag corresponding to the given pre-configured name.
Definition: clutchlog.h:554
+std::string _format_dump
Current format of the file output.
Definition: clutchlog.h:472
+std::string operator()(const std::string &msg) const
Format the given string with the currently encoded format.
Definition: clutchlog.h:391
+std::string format(std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) const
Substitute all tags in the format string with the corresponding information and apply the style corre...
Definition: clutchlog.h:753
+std::string _format_log
Current format of the standard output.
Definition: clutchlog.h:470
+level
Available log levels.
Definition: clutchlog.h:280
+level stage
Current log level.
Definition: clutchlog.h:606
+#define CLUTCHLOG_DEFAULT_DEPTH_MARK
Compile-time default mark for stack depth.
Definition: clutchlog.h:242
+friend std::ostream & operator<<(std::ostream &os, const fmt &fmt)
Output stream overload.
Definition: clutchlog.h:376
+std::map< level, fmt > _level_fmt
Dictionary of level identifier to their format.
Definition: clutchlog.h:468
+std::regex _in_line
Current line location filter.
Definition: clutchlog.h:490
enum clutchlog::fmt::typo style
Typographic style.
-level _stage
Current log level.
Definition: clutchlog.h:473
-const size_t _strip_calls
Current number of call stack levels to remove from depth display.
Definition: clutchlog.h:451
-std::string format_comment() const
Get the template string for dumps.
Definition: clutchlog.h:505
-const char _hfill_char
Character for filling.
Definition: clutchlog.h:463
-#define CLUTCHLOG_STRIP_CALLS
Compile-time number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:238
-std::ostream * _out
Standard output.
Definition: clutchlog.h:465
-void func(std::string func)
Set the regular expression filtering the function location.
Definition: clutchlog.h:550
-void location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
Set the regular expressions filtering the location.
Definition: clutchlog.h:555
-static char default_hfill_char
Default character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:248
-void dump(const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=dump_default_sep) const
Dump a serializable container after a comment line with log information.
Definition: clutchlog.h:815
-std::string replace(const std::string &form, const std::string &mark, const size_t tag) const
Replace mark by tag in form, converting tag to its string representation first.
Definition: clutchlog.h:725
-Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:283
-std::regex _in_file
Current file location filter.
Definition: clutchlog.h:475
-std::ostream & out()
Get the output stream on which to print.
Definition: clutchlog.h:510
-std::string replace(const std::string &form, const std::string &mark, const std::string &tag) const
Replace mark by tag in form.
Definition: clutchlog.h:660
-static unsigned int default_strip_calls
Number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:241
+level _stage
Current log level.
Definition: clutchlog.h:484
+const size_t _strip_calls
Current number of call stack levels to remove from depth display.
Definition: clutchlog.h:462
+std::string format_comment() const
Get the template string for dumps.
Definition: clutchlog.h:516
+#define CLUTCHLOG_STRIP_CALLS
Compile-time number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:249
+std::ostream * _out
Standard output.
Definition: clutchlog.h:476
+void func(std::string func)
Set the regular expression filtering the function location.
Definition: clutchlog.h:567
+void location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
Set the regular expressions filtering the location.
Definition: clutchlog.h:572
+static char default_hfill_char
Default character used as a filling for right-align the right part of messages with "{hfill}".
Definition: clutchlog.h:259
+void dump(const level &stage, const In container_begin, const In container_end, const std::string &file, const std::string &func, size_t line, const std::string &filename_template="dump_{n}.dat", const std::string sep=dump_default_sep) const
Dump a serializable container after a comment line with log information.
Definition: clutchlog.h:839
+std::string replace(const std::string &form, const std::string &mark, const size_t tag) const
Replace mark by tag in form, converting tag to its string representation first.
Definition: clutchlog.h:742
+Color and style formatter for ANSI terminal escape sequences.
Definition: clutchlog.h:294
+std::regex _in_file
Current file location filter.
Definition: clutchlog.h:486
+std::ostream & out()
Get the output stream on which to print.
Definition: clutchlog.h:521
+std::string replace(const std::string &form, const std::string &mark, const std::string &tag) const
Replace mark by tag in form.
Definition: clutchlog.h:677
+static unsigned int default_strip_calls
Number of call stack levels to remove from depth display by default.
Definition: clutchlog.h:252
+char _hfill_char
Character for filling.
Definition: clutchlog.h:474
static std::string default_format
Default format of the messages.
Definition: clutchlog.h:209
enum clutchlog::fmt::fg fore
Foreground color.
-void threshold(const std::string &l)
Set the log level (below which logs are not printed) with a string.
Definition: clutchlog.h:527
-bool there
Location is compatible.
Definition: clutchlog.h:595
-Structure holding a location matching.
Definition: clutchlog.h:585
-std::regex _in_func
Current function location filter.
Definition: clutchlog.h:477
-void threshold(level l)
Set the log level (below which logs are not printed) with an identifier.
Definition: clutchlog.h:525
-void style(level stage, fmt style)
Set the style (color and typo) of the given log level, passing a fmt instance.
Definition: clutchlog.h:573
-const std::map< level, std::string > _level_word
Dictionary of level identifier to their string representation.
Definition: clutchlog.h:453
-scope_t locate(const level &stage, const std::string &file, const std::string &func, const size_t line) const
Gather information on the current location of the call.
Definition: clutchlog.h:609
-bool matches
Everything is compatible.
Definition: clutchlog.h:587
-static std::string dump_default_sep
Default item separator for dump.
Definition: clutchlog.h:227
-level threshold() const
Get the log level below which logs are not printed.
Definition: clutchlog.h:529
-std::ostream & print_on(std::ostream &os) const
Print the currently encoded format escape code on the given output stream.
Definition: clutchlog.h:335
-std::map< std::string, level > _word_level
Dictionary of level string to their identifier.
Definition: clutchlog.h:455
-void style(level stage, FMT... styles)
Set the style (color and typo) of the given log level.
Definition: clutchlog.h:571
-scope_t()
Constructor.
Definition: clutchlog.h:597
+void threshold(const std::string &l)
Set the log level (below which logs are not printed) with a string.
Definition: clutchlog.h:544
+bool there
Location is compatible.
Definition: clutchlog.h:612
+Structure holding a location matching.
Definition: clutchlog.h:602
+std::regex _in_func
Current function location filter.
Definition: clutchlog.h:488
+void threshold(level l)
Set the log level (below which logs are not printed) with an identifier.
Definition: clutchlog.h:542
+void style(level stage, fmt style)
Set the style (color and typo) of the given log level, passing a fmt instance.
Definition: clutchlog.h:590
+const std::map< level, std::string > _level_word
Dictionary of level identifier to their string representation.
Definition: clutchlog.h:464
+scope_t locate(const level &stage, const std::string &file, const std::string &func, const size_t line) const
Gather information on the current location of the call.
Definition: clutchlog.h:626
+bool matches
Everything is compatible.
Definition: clutchlog.h:604
+static std::string dump_default_sep
Default item separator for dump.
Definition: clutchlog.h:238
+level threshold() const
Get the log level below which logs are not printed.
Definition: clutchlog.h:546
+std::ostream & print_on(std::ostream &os) const
Print the currently encoded format escape code on the given output stream.
Definition: clutchlog.h:346
+std::map< std::string, level > _word_level
Dictionary of level string to their identifier.
Definition: clutchlog.h:466
+void style(level stage, FMT... styles)
Set the style (color and typo) of the given log level.
Definition: clutchlog.h:588
+scope_t()
Constructor.
Definition: clutchlog.h:614
#define CLUTCHLOG_HAVE_UNIX_SYSINFO
POSIX headers necessary for stack depth management are available.
Definition: clutchlog.h:32
Definition: clutchlog.h:175
-fmt style(level stage) const
Get the configured fmt instance of the given log level.
Definition: clutchlog.h:575
-bg
Background color codes.
Definition: clutchlog.h:299
+fmt style(level stage) const
Get the configured fmt instance of the given log level.
Definition: clutchlog.h:592
+bg
Background color codes.
Definition: clutchlog.h:310
enum clutchlog::fmt::bg back
Background color.