plog
plog copied to clipboard
[Feature Request] Single logger, but each appender has a different level
If I am using IoC or shared logger etc. Then the shared instance does not want to know what has been set up and what instances are being used (i.e. default always)
But (for example)
- Errors only should go to the EventLog,
- Anything that is not Debug / Verbose goes to Console
- Everything goes to a file All via the default macros
so, If the code calls PLOGD << then I would expect only the file to have an update If the code calls PLOGE, then all the appenders get an entry.
Is this possible, or have I missed something ?
I think it might be possible, by:
- Moving the Severity calls into
IAppender
- In Logger.h
- Iterate over Appenders to get the Max Severity
- If set is called at this level, then call set on all appenders
- in the operator call, also check the severity before calling
it
's write.
In the IAppender, have it's default severity set to "unknown" then when it is added to the logger, if it is set to unknown, then set it to the loggers value.
I think with some tweaking, the above should then be backward compatible with existing builds as well.
Thoughts ?
It should be possible with the following approach: https://github.com/SergiusTheBest/plog/issues/181#issuecomment-786281845 Could you check if it works for your use case?
That explanation would work, can this be added more prominently, and perhaps in an example please ?
I ran into the same problem and added m_severity as an instance variable inside ConsoleAppender. The new write method looks like this, and it solves my problem with a half dozen changed lines of code. ` virtual void write (const Record &record) PLOG_OVERRIDE { if (record.getSeverity() <= m_severity) { util::nstring str = Formatter::format(record); util::MutexLock lock(m_mutex);
writestr(str);
}
}
`