Re: [Log4cplus-devel] No Support for Threshold in AsyncAppender
Logging Framework for C++
Brought to you by:
wilx
From: Václav Z. <vha...@gm...> - 2014-03-11 17:33:54
|
On 03/11/2014 11:06 AM, Markus von Arx wrote: > Hi > > Is there a reason why the AsyncAppender properties constructor > [AsyncAppender::AsyncAppender (helpers::Properties const & props)] does > not call the base class properties constructor? I see that there is some > tuff in the Appender base class properties constructor (e.g. the > "layout" property) that is unnecessary for the AsyncAppender, but other > stuff (e.g. "filters." and "Threshold") would also make sense for the > AsyncAppender. > > I'm asking because this is why AsyncAppender does not support the > Threshold configuration attribute. I think supporting thresholds (and > also filters) would be very useful for the AsyncAppender because it > could greatly reduce the number of log messages that are passed through > the QueueThread if the AsyncAppender could discard most messages directly. > > If this is not intentional, I'd like to ask for a patch/bugfix to enable > Threshold configuration for the AsyncAppender. > > Btw: I patched AsyncAppender myself to add Threshold support. Because I > don't know why AsyncAppender properties constructor does not call the > base class properties constructor, I added my code at the end of the > AsyncAppender properties constructor, just before the call to > [init_queue_thread (queue_len);]. I basically copy-pasted code from the > Appender base class. Work's fine. Here's my code in case you find it useful: > > if (props.exists(LOG4CPLUS_TEXT("Threshold"))) { > tstring tmp = props.getProperty(LOG4CPLUS_TEXT("Threshold")); > tmp = log4cplus::helpers::toUpper(tmp); > threshold = log4cplus::getLogLevelManager().fromString(tmp); > } I guess threshold processing could be useful. Feel free to create a bug report to remind me or send a patch. -- VZ |