diff --git a/CMakeLists.txt b/CMakeLists.txt index b1e87cb..0d4539d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,19 +6,19 @@ cmake_minimum_required(VERSION 3.10 FATAL_ERROR) project("clutchlog" - VERSION 0.10 + VERSION 0.11 DESCRIPTION "A logging system which targets versatile debugging") enable_language(CXX) # C++ set(CMAKE_CXX_STANDARD 17) -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -std=c++17 -lstdc++fs") if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0) link_libraries(stdc++fs) add_compile_definitions(FSEXPERIMENTAL) endif() -endif() +endif() ###################################################################################### diff --git a/README.md b/README.md index 88733e9..578f04b 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,8 @@ Available tags are: - `{level_letter}`: the first letter of the current log level, - `{file}`: the current file (absolute path), - `{func}`: the current function, -- `{line}`: the current line number. +- `{line}`: the current line number, +- `{level_fmt}`: the format of the current level (i.e. configured with `clutchlog::style`). Some tags are only available on POSIX operating systems as of now: - `{name}`: the name of the current binary, diff --git a/docs/annotated.html b/docs/annotated.html index d1602d8..7884bea 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -22,7 +22,7 @@
clutchlog -  0.10 +  0.11
@@ -68,7 +68,7 @@ $(function() {
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
- +
 Cclutchlog
 CclutchlogThe single class which holds everything
 CfmtColor and style formatter for ANSI terminal escape sequences
 Cscope_tStructure holding a location matching
diff --git a/docs/classclutchlog-members.html b/docs/classclutchlog-members.html index 8902b65..45de837 100644 --- a/docs/classclutchlog-members.html +++ b/docs/classclutchlog-members.html @@ -22,7 +22,7 @@
clutchlog -  0.10 +  0.11
@@ -69,58 +69,58 @@ $(function() {

This is the complete list of members for clutchlog, including all inherited members.

- - - - - - - - - - - + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - + + - - - - - - - - + + + + + + + +
_format_dumpclutchlogprotected
_format_logclutchlogprotected
_in_fileclutchlogprotected
_in_funcclutchlogprotected
_in_lineclutchlogprotected
_level_fmtclutchlogprotected
_level_wordclutchlogprotected
_outclutchlogprotected
_stageclutchlogprotected
_strip_callsclutchlogprotected
_word_levelclutchlogprotected
_format_dumpclutchlogprotected
_format_logclutchlogprotected
_in_fileclutchlogprotected
_in_funcclutchlogprotected
_in_lineclutchlogprotected
_level_fmtclutchlogprotected
_level_wordclutchlogprotected
_outclutchlogprotected
_stageclutchlogprotected
_strip_callsclutchlogprotected
_word_levelclutchlogprotected
clutchlog(clutchlog const &)=delete (defined in clutchlog)clutchlog
critical enum value (defined in clutchlog)clutchlog
debug enum value (defined in clutchlog)clutchlog
default_depth_markclutchloginlineprotectedstatic
default_formatclutchloginlineprotectedstatic
default_hfill_charclutchloginlineprotectedstatic
default_hfill_maxclutchloginlineprotectedstatic
default_strip_callsclutchloginlineprotectedstatic
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) constclutchloginline
dump_default_formatclutchloginlineprotectedstatic
dump_default_sepclutchloginlineprotectedstatic
default_depth_markclutchloginlineprotectedstatic
default_formatclutchloginlineprotectedstatic
default_hfill_charclutchloginlineprotectedstatic
default_hfill_maxclutchloginlineprotectedstatic
default_strip_callsclutchloginlineprotectedstatic
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) constclutchloginline
dump_default_formatclutchloginlineprotectedstatic
dump_default_sepclutchloginlineprotectedstatic
error enum value (defined in clutchlog)clutchlog
file(std::string file)clutchloginline
format(const std::string &format)clutchloginline
format() constclutchloginline
format(std::string format, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginline
format_comment(const std::string &format)clutchloginline
format_comment() constclutchloginline
func(std::string func)clutchloginline
file(std::string file)clutchloginline
format(const std::string &format)clutchloginline
format() constclutchloginline
format(std::string row, const std::string &what, const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginline
format_comment(const std::string &format)clutchloginline
format_comment() constclutchloginline
func(std::string func)clutchloginline
info enum value (defined in clutchlog)clutchlog
level enum nameclutchlog
level_of(const std::string name)clutchloginline
levels() constclutchloginline
line(std::string line)clutchloginline
locate(const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginline
location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")clutchloginline
log(const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) constclutchloginline
logger()clutchloginlinestatic
level enum nameclutchlog
level_of(const std::string name)clutchloginline
levels() constclutchloginline
line(std::string line)clutchloginline
locate(const level &stage, const std::string &file, const std::string &func, const size_t line) constclutchloginline
location(const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")clutchloginline
log(const level &stage, const std::string &what, const std::string &file, const std::string &func, size_t line) constclutchloginline
logger()clutchloginlinestatic
note enum value (defined in clutchlog)clutchlog
operator=(clutchlog const &)=delete (defined in clutchlog)clutchlog
out(std::ostream &out)clutchloginline
out()clutchloginline
out(std::ostream &out)clutchloginline
out()clutchloginline
progress enum value (defined in clutchlog)clutchlog
replace(const std::string &form, const std::string &mark, const std::string &tag) constclutchloginline
replace(const std::string &form, const std::string &mark, const size_t tag) constclutchloginline
style(level stage, FMT... styles)clutchloginline
style(level stage, fmt style)clutchloginline
style(level stage) constclutchloginline
threshold(level l)clutchloginline
threshold(const std::string &l)clutchloginline
threshold() constclutchloginline
replace(const std::string &form, const std::string &mark, const std::string &tag) constclutchloginline
replace(const std::string &form, const std::string &mark, const size_t tag) constclutchloginline
style(level stage, FMT... styles)clutchloginline
style(level stage, fmt style)clutchloginline
style(level stage) constclutchloginline
threshold(level l)clutchloginline
threshold(const std::string &l)clutchloginline
threshold() constclutchloginline
warning enum value (defined in clutchlog)clutchlog
xdebug enum value (defined in clutchlog)clutchlog
diff --git a/docs/classclutchlog.html b/docs/classclutchlog.html index 0196391..e171444 100644 --- a/docs/classclutchlog.html +++ b/docs/classclutchlog.html @@ -22,7 +22,7 @@
clutchlog -  0.10 +  0.11
@@ -64,12 +64,16 @@ $(function() {
clutchlog Class Reference
+ +

The single class which holds everything. + More...

+ +

#include <clutchlog.h>

@@ -83,137 +87,138 @@ Classes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - + + +

Classes

Public Member Functions

Configuration accessors
-void format (const std::string &format)
 Set the template string.
 
-std::string format () const
 Get the template string.
 
-void format_comment (const std::string &format)
 Set the template string for dumps.
 
-std::string format_comment () const
 Get the template string for dumps.
 
-void out (std::ostream &out)
 Set the output stream on which to print.
 
-std::ostream & out ()
 Get the output stream on which to print.
 
-void threshold (level l)
 Set the log level (below which logs are not printed) with an identifier.
 
-void threshold (const std::string &l)
 Set the log level (below which logs are not printed) with a string.
 
-level threshold () const
 Get the log level below which logs are not printed.
 
-const std::map< std::string, level > & levels () const
 Get the map of available log levels string representations toward their identifier. *‍/.
 
level level_of (const std::string name)
 Return the log level tag corresponding to the given pre-configured name. More...
 
-void file (std::string file)
 Set the regular expression filtering the file location.
 
-void func (std::string func)
 Set the regular expression filtering the function location.
 
-void line (std::string line)
 Set the regular expression filtering the line location.
 
-void location (const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
 Set the regular expressions filtering the location.
 
template<class ... FMT>
void style (level stage, FMT... styles)
 Set the style (color and typo) of the given log level. More...
 
-void style (level stage, fmt style)
 Set the style (color and typo) of the given log level, passing a fmt instance.
 
-fmt style (level stage) const
 Get the configured fmt instance of the given log level.
 
+void format (const std::string &format)
 Set the template string.
 
+std::string format () const
 Get the template string.
 
+void format_comment (const std::string &format)
 Set the template string for dumps.
 
+std::string format_comment () const
 Get the template string for dumps.
 
+void out (std::ostream &out)
 Set the output stream on which to print.
 
+std::ostream & out ()
 Get the output stream on which to print.
 
+void threshold (level l)
 Set the log level (below which logs are not printed) with an identifier.
 
+void threshold (const std::string &l)
 Set the log level (below which logs are not printed) with a string.
 
+level threshold () const
 Get the log level below which logs are not printed.
 
+const std::map< std::string, level > & levels () const
 Get the map of available log levels string representations toward their identifier. *‍/.
 
level level_of (const std::string name)
 Return the log level tag corresponding to the given pre-configured name. More...
 
+void file (std::string file)
 Set the regular expression filtering the file location.
 
+void func (std::string func)
 Set the regular expression filtering the function location.
 
+void line (std::string line)
 Set the regular expression filtering the line location.
 
+void location (const std::string &in_file, const std::string &in_function=".*", const std::string &in_line=".*")
 Set the regular expressions filtering the location.
 
template<class ... FMT>
void style (level stage, FMT... styles)
 Set the style (color and typo) of the given log level. More...
 
+void style (level stage, fmt style)
 Set the style (color and typo) of the given log level, passing a fmt instance.
 
+fmt style (level stage) const
 Get the configured fmt instance of the given log level.
 
Low-level API
-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.
 
std::string replace (const std::string &form, const std::string &mark, const std::string &tag) const
 Replace mark by tag in form. More...
 
-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.
 
-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 corresponding to the log level.
 
-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.
 
+
+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.
 
std::string replace (const std::string &form, const std::string &mark, const std::string &tag) const
 Replace mark by tag in form. More...
 
+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.
 
+std::string format (std::string row, 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 corresponding to the log level.
 
+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.
 
template<class In >
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.
 
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.
 
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +

Static Protected Attributes

-static std::string default_format = CLUTCHLOG_DEFAULT_FORMAT
 Default format of the messages.
 
-static std::string dump_default_format = CLUTCHDUMP_DEFAULT_FORMAT
 Default format of the comment line in file dump.
 
-static std::string dump_default_sep = CLUTCHDUMP_DEFAULT_SEP
 Default item separator for dump.
 
-static std::string default_depth_mark = CLUTCHLOG_DEFAULT_DEPTH_MARK
 Default mark for stack depth.
 
-static unsigned int default_strip_calls = CLUTCHLOG_STRIP_CALLS
 Number of call stack levels to remove from depth display by default.
 
-static char default_hfill_char = CLUTCHLOG_HFILL_MARK
 Default character used as a filling for right-align the right part of messages with "{hfill}".
 
-static unsigned short default_hfill_max = CLUTCHLOG_HFILL_MAX
 Default maximum number of character used as a filling for right-align the right part of messages with "{hfill}".
 
Default configuration members
+static std::string default_format = CLUTCHLOG_DEFAULT_FORMAT
 Default format of the messages.
 
+static std::string dump_default_format = CLUTCHDUMP_DEFAULT_FORMAT
 Default format of the comment line in file dump.
 
+static std::string dump_default_sep = CLUTCHDUMP_DEFAULT_SEP
 Default item separator for dump.
 
+static std::string default_depth_mark = CLUTCHLOG_DEFAULT_DEPTH_MARK
 Default mark for stack depth.
 
+static unsigned int default_strip_calls = CLUTCHLOG_STRIP_CALLS
 Number of call stack levels to remove from depth display by default.
 
+static char default_hfill_char = CLUTCHLOG_HFILL_MARK
 Default character used as a filling for right-align the right part of messages with "{hfill}".
 
+static size_t default_hfill_max = CLUTCHLOG_HFILL_MAX
 Default maximum number of character used as a filling for right-align the right part of messages with "{hfill}".
 
-xdebug =7
} - - - - - + + + + +

High-level API

enum  level {
+
enum  level {
  critical =0, error =1, warning =2, @@ -225,69 +230,219 @@ High-level API
 Available log levels.
 
static clutchloglogger ()
 Get the logger instance. More...
 
 Available log levels.
 
static clutchloglogger ()
 Get the logger instance. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - +

Internal details

-size_t _strip_calls
 Current number of call stack levels to remove from depth display.
 
-const std::map< level, std::string > _level_word
 Dictionary of level identifier to their string representation.
 
-std::map< std::string, level_word_level
 Dictionary of level string to their identifier.
 
-std::map< level, fmt_level_fmt
 Dictionary of level identifier to their format.
 
-std::string _format_log
 Current format of the standard output.
 
-std::string _format_dump
 Current format of the file output.
 
-std::ostream * _out
 Standard output.
 
-level _stage
 Current log level.
 
-std::regex _in_file
 Current file location filter.
 
-std::regex _in_func
 Current function location filter.
 
-std::regex _in_line
 Current line location filter.
 
+
+size_t _strip_calls
 Current number of call stack levels to remove from depth display.
 
+const std::map< level, std::string > _level_word
 Dictionary of level identifier to their string representation.
 
+std::map< std::string, level_word_level
 Dictionary of level string to their identifier.
 
+std::map< level, fmt_level_fmt
 Dictionary of level identifier to their format.
 
+std::string _format_log
 Current format of the standard output.
 
+std::string _format_dump
 Current format of the file output.
 
+std::ostream * _out
 Standard output.
 
+level _stage
 Current log level.
 
+std::regex _in_file
 Current file location filter.
 
+std::regex _in_func
 Current function location filter.
 
+std::regex _in_line
 Current line location filter.
 
 clutchlog (clutchlog const &)=delete
 
+
 
void operator= (clutchlog const &)=delete
 
 
+

Detailed Description

+

The single class which holds everything.

+

This is a Singleton class.

+

Member Function Documentation

+ +

◆ level_of()

+ +
+
+ + + + + +
+ + + + + + + + +
level clutchlog::level_of (const std::string name)
+
+inline
+
+ +

Return the log level tag corresponding to the given pre-configured name.

+
Note
This is case sensitive, see the pre-configured _level_word.
+ +
+
+ +

◆ logger()

+ +
+
+ + + + + +
+ + + + + + + +
static clutchlog& clutchlog::logger ()
+
+inlinestatic
+
+ +

Get the logger instance.

+
+
+
+
+ +

◆ replace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string clutchlog::replace (const std::string & form,
const std::string & mark,
const std::string & tag 
) const
+
+inline
+
+ +

Replace mark by tag in form.

+
log.replace("{greet} {world}", "\\{greet\\}", "hello");
+
// returns "hello {world}"
+
+
+
+ +

◆ style()

+ +
+
+
+template<class ... FMT>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void clutchlog::style (level stage,
FMT... styles 
)
+
+inline
+
+ +

Set the style (color and typo) of the given log level.

+

This version accept style arguments as if they were passed to clutchlog::fmt.

+ +
+

The documentation for this class was generated from the following file:
+
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:883
+
static clutchlog & logger()
Get the logger instance.
Definition: clutchlog.h:291