While I got my LevelRangeFilter working I didn't get an answer to #1 below.  
Can someone answer that for me so that I can code appropriately?
 
Thanks,
Nick
 
> From: nic...@msn.com
> To: log4j-user@logging.apache.org
> Subject: plugins
> Date: Thu, 27 Aug 2015 14:51:58 -0400
> 
> 
> 
> 
> I've got a couple questions regarding plugins I'm hoping someone might be 
> able to help me with.  I checked the docs and it's still not quite clear.
>  
> 1. I'm unsure what to set printObject to in my Plugin annotation.  From 
> http://logging.apache.org/log4j/2.x/manual/extending.html it says:
>  
> "Specifying the printObject attribute with a value of "true" indicates that a 
> call to toString will format the arguments to the filter as the configuration 
> is being processed."
>  
> which unfortunately doesn't clear things up any.  I looked at the docs for 
> printObject and that doesn't say anything other than it's a Boolean and its 
> default is false.
>  
> 2. I created a LevelRangeFiler and I'm trying to figure out how to get it 
> loaded by log4j.  I read over the instructions on plugins located at 
> http://logging.apache.org/log4j/2.x/manual/plugins.html but since I'm a java 
> noob I'm still a bit lost.  I'm wondering, if I just have a .java class which 
> I compile to a .class file, can that be used?  If so, how?
>  
> Below is the filter I wrote based on looking at the threshold filter example 
> at http://logging.apache.org/log4j/2.x/manual/extending.html.
> 
> import org.apache.logging.log4j.core.filter.AbstractFilter;
> import org.apache.logging.log4j.core.Filter;
> import org.apache.logging.log4j.core.config.plugins.Plugin;
> import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
> import org.apache.logging.log4j.core.config.plugins.PluginFactory;
> import org.apache.logging.log4j.Level;
> import org.apache.logging.log4j.core.LogEvent;
> import org.apache.logging.log4j.core.Logger;
> import org.apache.logging.log4j.Marker;
> import org.apache.logging.log4j.message.Message;
> 
> @Plugin(name="LevelRangeFilter", category="Core", elementType="filter",
>         printObject=true)
> public class LevelRangeFilter extends AbstractFilter
> {
>     private final Level minLevel;
>     private final Level maxLevel;
>     
>     public LevelRangeFilter(Level minLevel, Level maxLevel,
>             Filter.Result onMatch, Filter.Result onMismatch)
>     {
>     super(onMatch, onMismatch);
>     this.minLevel = minLevel;
>     this.maxLevel = maxLevel;
>     }
> 
>     private Result filter(Level level)
>     {
>     if (level.isMoreSpecificThan(this.minLevel) &&
>             level.isLessSpecificThan(this.maxLevel))
>         {
>         return this.onMatch;
>         }
>     return this.onMismatch;
>     }
> 
>     public Filter.Result filter(Logger logger, Level level,
>             Marker marker, String msg, Object[] params)
>     {
>     return filter(level);
>     }
> 
>     public Filter.Result filter(Logger logger, Level level,
>         Marker marker, Object msg, Throwable t)
>     {
>     return filter(level);
>     }
> 
>     public Filter.Result filter(Logger logger, Level level,
>         Marker marker, Message msg, Throwable t)
>     {
>     return filter(level);
>     }
> 
>     public Filter.Result filter(LogEvent event)
>     {
>     return filter(event.getLevel());
>     }
>     
>     @PluginFactory
>     public static LevelRangeFilter createFilter(
>         @PluginAttribute(value="minLevel",
>         defaultString="DEBUG") Level minLevel,
>         @PluginAttribute(value="maxLevel",
>         defaultString="FATAL") Level maxLevel,
>         @PluginAttribute(value="onMatch",
>         defaultString="NEUTRAL") Result onMatch,
>         @PluginAttribute(value="onMismatch",
>         defaultString="DENY") Result onMismatch)
>     {
>     return new LevelRangeFilter(minLevel, maxLevel, onMatch, onMismatch);
>     }
> }
> 
> Thanks,
> Nick
> 
> 
>                                         
                                          

Reply via email to