Can’t you just compare what you wrote to what Gary wrote? If you build your project then it should get packaged in a jar and automatically have the file Log4j uses to quickly load the plugin.
Ralph > On Aug 27, 2015, at 12:50 PM, Nicholas Duane <nic...@msn.com> wrote: > > Based on your previous comments I assume one would show up out-of-the-box at > some point. Of course I need mine now so unfortunately I have to write one. > > Any input on my questions below? > > Thanks, > Nick > >> Date: Thu, 27 Aug 2015 12:20:07 -0700 >> Subject: Re: plugins >> From: garydgreg...@gmail.com >> To: log4j-user@logging.apache.org >> >> Note that I wrote such a filter, which is under review ATM here: >> >> - https://issues.apache.org/jira/browse/LOG4J2-1106 >> - https://issues.apache.org/jira/browse/LOG4J2-1105 >> >> Gary >> >> On Thu, Aug 27, 2015 at 11:51 AM, Nicholas Duane <nic...@msn.com> wrote: >> >>> >>> >>> >>> 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 >>> >>> >>> >> >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> Java Persistence with Hibernate, Second Edition >> <http://www.manning.com/bauer3/> >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> Spring Batch in Action <http://www.manning.com/templier/> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory > --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org