[logback-user] System property based Discriminator

Ceki Gulcu ceki at qos.ch
Fri Mar 11 11:04:29 UTC 2016


Hello,

I presume your question is regarding the usage of a discriminator within 
SiftingAppender. Is that correct? If so, as you can see in the append() 
method [1] defined in SiftingAppenderBase, the discriminator is invoked 
for every append call.

In my opinion, SiftingAppender may be too much for the problem at hand. 
A simpler alternative would be to schedule a periodic task which checks 
for changes in the system property and reconfigure logback when changes 
are detected. The code invoke Joran (logback's configirator) is described at

   http://logback.qos.ch/manual/configuration.html#joranDirectly

I hope this helps,

--
Ceki

[1] 
https://github.com/qos-ch/logback/blob/master/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java#L101


On 3/11/2016 10:25, DK wrote:
> I'm trying to split logs based on a System property that changes
> dynamically at runtime. Is the below Discriminator code the way to go?
> Will this Discriminator get called for every log statement?
 >
 > import ch.qos.logback.classic.spi.ILoggingEvent;
 > import ch.qos.logback.core.sift.AbstractDiscriminator;
 >
 > public class SysPropDiscriminator extends AbstractDiscriminator {
 >
 >     private static final String KEY = "PROP";
 >
 >     @Override
 >     public String getDiscriminatingValue(ILoggingEvent event) {
 >         String propValue = System.getProperty("my.property");
 >         if (propValue == null || propValue.length() == 0) {
 >             return "unknown";
 >         } else {
 >             return propValue;
 >         }
 >     }
 >
 >     @Override
 >     public String getKey() {
 >         return KEY;
 >     }
 > }


More information about the logback-user mailing list