mirror of
https://github.com/matrix-construct/construct
synced 2024-11-29 10:12:39 +01:00
ircd::logger: Add conf items to control the log mask.
This commit is contained in:
parent
d763a15edb
commit
077f8bb546
2 changed files with 97 additions and 2 deletions
|
@ -94,8 +94,8 @@ struct ircd::log::log
|
||||||
{
|
{
|
||||||
string_view name; // name of this logger
|
string_view name; // name of this logger
|
||||||
char snote; // snomask character
|
char snote; // snomask character
|
||||||
bool cmasked {true}; // currently in the console mask (enabled)
|
bool cmasked; // currently in the console mask (enabled)
|
||||||
bool fmasked {true}; // currently in the file mask (enabled)
|
bool fmasked; // currently in the file mask (enabled)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template<class... args> void operator()(const level &, const string_view &fmt, args&&...);
|
template<class... args> void operator()(const level &, const string_view &fmt, args&&...);
|
||||||
|
@ -151,6 +151,8 @@ struct ircd::log::log
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
log(const string_view &name, const char &snote = '\0');
|
log(const string_view &name, const char &snote = '\0');
|
||||||
|
log(log &&) = delete;
|
||||||
|
log(const log &) = delete;
|
||||||
|
|
||||||
static bool exists(const log *const &ptr);
|
static bool exists(const log *const &ptr);
|
||||||
static log *find(const string_view &name);
|
static log *find(const string_view &name);
|
||||||
|
|
|
@ -19,6 +19,13 @@ namespace ircd::log
|
||||||
extern const std::array<string_view, num_of<level>()> default_ansi;
|
extern const std::array<string_view, num_of<level>()> default_ansi;
|
||||||
extern std::array<confs, num_of<level>()> confs;
|
extern std::array<confs, num_of<level>()> confs;
|
||||||
|
|
||||||
|
extern conf::item<std::string> unmask_file;
|
||||||
|
extern conf::item<std::string> unmask_console;
|
||||||
|
extern conf::item<std::string> mask_file;
|
||||||
|
extern conf::item<std::string> mask_console;
|
||||||
|
static bool is_conf_mask_file(const string_view &name);
|
||||||
|
static bool is_conf_mask_console(const string_view &name);
|
||||||
|
|
||||||
std::array<std::ofstream, num_of<level>()> file;
|
std::array<std::ofstream, num_of<level>()> file;
|
||||||
std::array<ulong, num_of<level>()> console_quiet_stdout;
|
std::array<ulong, num_of<level>()> console_quiet_stdout;
|
||||||
std::array<ulong, num_of<level>()> console_quiet_stderr;
|
std::array<ulong, num_of<level>()> console_quiet_stderr;
|
||||||
|
@ -318,6 +325,14 @@ ircd::log::log::log(const string_view &name,
|
||||||
const char &snote)
|
const char &snote)
|
||||||
:name{name}
|
:name{name}
|
||||||
,snote{snote}
|
,snote{snote}
|
||||||
|
,cmasked
|
||||||
|
{
|
||||||
|
is_conf_mask_console(name)
|
||||||
|
}
|
||||||
|
,fmasked
|
||||||
|
{
|
||||||
|
is_conf_mask_file(name)
|
||||||
|
}
|
||||||
{
|
{
|
||||||
for(const auto *const &other : list)
|
for(const auto *const &other : list)
|
||||||
{
|
{
|
||||||
|
@ -661,6 +676,84 @@ ircd::smalldate(const time_t <ime)
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
ircd::log::is_conf_mask_console(const string_view &name)
|
||||||
|
{
|
||||||
|
if(token_exists(string_view(mask_console), ' ', name))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(token_exists(string_view(unmask_console), ' ', name))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// When nothing is in the list then we consider this item masked.
|
||||||
|
return empty(string_view(mask_console));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
ircd::log::is_conf_mask_file(const string_view &name)
|
||||||
|
{
|
||||||
|
if(token_exists(string_view(mask_file), ' ', name))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(token_exists(string_view(unmask_file), ' ', name))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// When nothing is in the list then we consider this item masked.
|
||||||
|
return empty(string_view(mask_file));
|
||||||
|
}
|
||||||
|
|
||||||
|
decltype(ircd::log::unmask_file)
|
||||||
|
ircd::log::unmask_file
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{ "name", "ircd.log.unmask.file" },
|
||||||
|
{ "default", string_view{} },
|
||||||
|
}, []
|
||||||
|
{
|
||||||
|
if(!empty(string_view(unmask_file)))
|
||||||
|
file_unmask(tokens<std::vector>(unmask_file, ' '));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::log::unmask_console)
|
||||||
|
ircd::log::unmask_console
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{ "name", "ircd.log.unmask.console" },
|
||||||
|
{ "default", string_view{} },
|
||||||
|
}, []
|
||||||
|
{
|
||||||
|
if(!empty(string_view(unmask_console)))
|
||||||
|
console_unmask(tokens<std::vector>(unmask_console, ' '));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::log::mask_file)
|
||||||
|
ircd::log::mask_file
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{ "name", "ircd.log.mask.file" },
|
||||||
|
{ "default", string_view{} },
|
||||||
|
}, []
|
||||||
|
{
|
||||||
|
if(!empty(string_view(mask_file)))
|
||||||
|
file_mask(tokens<std::vector>(mask_file, ' '));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::log::mask_console)
|
||||||
|
ircd::log::mask_console
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{ "name", "ircd.log.mask.console" },
|
||||||
|
{ "default", string_view{} },
|
||||||
|
}, []
|
||||||
|
{
|
||||||
|
if(!empty(string_view(mask_console)))
|
||||||
|
console_mask(tokens<std::vector>(mask_console, ' '));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
decltype(ircd::log::confs)
|
decltype(ircd::log::confs)
|
||||||
ircd::log::confs
|
ircd::log::confs
|
||||||
{{
|
{{
|
||||||
|
|
Loading…
Reference in a new issue