Try ExpressionFilter: http://svn.apache.org/viewvc/logging/log4j/trunk/src/java/org/apache/log 4j/filter/ExpressionFilter.java?view=markup
Scott Deboy Principal Engineer COMOTIV SYSTEMS 111 SW Columbia Street Ste. 950 Portland, OR 97201 Telephone: 503.224.7496 Cell: 503.997.1367 Fax: 503.222.0185 [EMAIL PROTECTED] www.comotivsystems.com -----Original Message----- From: Shroff, Sushama [mailto:[EMAIL PROTECTED] Sent: Wednesday, July 05, 2006 10:53 AM To: [EMAIL PROTECTED] Cc: log4j-user@logging.apache.org Subject: RE: log4j custom filters how to? Heri, Thanks a lot. I need a feature somewhat similar to Chainsaw. I need to be able to filter the logs based on the contents of the logs. For instance if my logs have some information like ( {name = 'xx',age='',......}, {name='yy',age='',........} etc.), I should be able to filter out the logs based on name first, then filter on age if a match for the name is found. For Eg, the user running the application should be able to select a parameter he wants to filter on at runtime. Suppose the user selects 'name = xx && age = xx ' as the filtering parameter for the logs, Then my custom filter should first filter based on name and then on age if a match for name exists. Is this kind of functionality possible by writing log4j custom filters? Could you provide me with some tips for the same. Thanks, sushama -----Original Message----- From: Bender Heri [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 04, 2006 2:23 AM To: Log4J Users List Subject: RE: log4j custom filters how to? If you use xml configuration file you can attach one ore more self written filter class(es): example: <appender name="CONSOLE.OUT" class="org.apache.log4j.ConsoleAppender"> <param name="target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{HH:mm:ss.SSS} (%6r) %-5p %-10X{category} [%-7t] %F:%L %x - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="debug"/> <param name="LevelMax" value="info"/> <param name="AcceptOnMatch" value="false"/> </filter> <filter class="ch.ergonomics.pms.common.supervision.TraceDenyFilter"/> <filter class="ch.ergonomics.pms.common.supervision.XMLDenyFilter"/> </appender> Your own filter class extends org.apache.log4j.spi.Filter and could look like this example: public class TraceAllowFilter extends Filter { /** Standard constructor */ public TraceAllowFilter() { super(); } /** * @see org.apache.log4j.spi.Filter#decide(org.apache.log4j.spi.LoggingEvent) */ public int decide( LoggingEvent aEvent ) { if ( aEvent.getMDC( PMSLogger.MDC_CATEGORY ) == null ) { return Filter.DENY; } if ( aEvent.getMDC( PMSLogger.MDC_CATEGORY ).equals( PMSLogger.TRACE ) ) { String s = ( String ) MDC.get( PMSConfig.PROP_NAME_TRACEON ); if ( ( s != null ) && ( s.equals( "FALSE" ) ) ) { return Filter.DENY; } return Filter.NEUTRAL; } return Filter.DENY; } } it's just a sample. You have to code your own decision algorithm. Be aware that the filters can be chained. Return values of ALLOW or DENY do NOT call the next filter, only NEUTRAL will call also the next filter of the chain. Heri > -----Original Message----- > From: Shroff, Sushama [mailto:[EMAIL PROTECTED] > Sent: Monday, July 03, 2006 11:19 PM > To: log4j-user@logging.apache.org > Subject: [SPAM (Bayesain Analysis)] - log4j custom filters how to? - > Bayesian Filter detected spam > > > Hi, > > > > I am a new user to log4j. I need to write certain custom filters for > log4j and am wondering how it is to be done. > > Any help regarding the same will be appreciated. > > > > Thanks, > > Sushama Shroff > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]