You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Pranav Pratap (JIRA)" <ji...@apache.org> on 2014/08/29 21:39:53 UTC

[jira] [Created] (LOG4J2-808) RegexFilter does not work properly with RollingFileAppenders

Pranav Pratap created LOG4J2-808:
------------------------------------

             Summary: RegexFilter does not work properly with RollingFileAppenders 
                 Key: LOG4J2-808
                 URL: https://issues.apache.org/jira/browse/LOG4J2-808
             Project: Log4j 2
          Issue Type: Bug
          Components: Filters
    Affects Versions: 2.0-rc1
            Reporter: Pranav Pratap
             Fix For: 2.0-rc1


I am trying to use Regexfilter in RollingFileAppender. For 1st matching instance it retreived the logger, but after that I different patttern but nothing is logged in the file. Here is what I am using:

Main Class:
public class MainApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		final Logger logger = LogManager.getLogger(MainApp.class.getName());
	
		ApplicationContext context = 
            new ClassPathXmlApplicationContext("Beans.xml");
		
     HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
     logger.trace("NPF:Trace:Entering Log4j2 Example.");
     logger.debug("NTL:debug Entering Log4j2 Example.");
     obj.getMessage();	
     Company comp = new Company();
     comp.setCompName("ANC");
     comp.setEstablish(1889);
     
     CompanyBusiness compBus =      (CompanyBusiness)context.getBean("compBus");
     compBus.finaceBusiness(comp.getCompName(), comp.getEstablish());
    logger.trace("NTL: Trace: Exiting Log4j2 Example.");
	}}

log4j2.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<Configuration>
 	<Appenders>
		<Console name="STDOUT" target="SYSTEM_OUT">
			<PatternLayout pattern="%d{yyyy-MM-dd [%t] HH:mm:ss} %-5p %c{1}:%L - %m%X%n" />
		</Console>
		<RollingFile name="RollingFile" fileName="C:\logTest\runtime\tla\els3.log"  append="true"
    	filePattern="C:\logTest\runtime\tla\els3-%d{yyyy-MM-dd}-%i.log" >
      	 <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%X%n" />
      	  	<RegexFilter regex=".*business*." onMatch="ACCEPT" onMismatch="DENY"/>	
          			<Policies>
      		    		<SizeBasedTriggeringPolicy size="20 MB" />
       			</Policies>
      	
    </RollingFile>
		
	</Appenders>
	<Loggers>
		<Logger name="com.anc" level="trace"/>
	
		<Root level="trace"> 
    		<AppenderRef ref="STDOUT" /> 
    		<AppenderRef ref="RollingFile"/> 
		</Root>
	
	</Loggers>
</Configuration>

When I ran for the first time, in my logfile I got logs having only "business" related line. Latter I changed the patter from ".*business*." to "business", logging did not happen in file nor on the console. Also my application terminated without anykind of logging.

Then I tried to revert back the pattern to ".*business*.", thereafter no logging happened on the log file, but on the console all the log trace is printed. When I comment out the Regexfilter after trying for long time, my logs was printed in the log file.

I am not sure if this is a bug of Regexfilter works only for one time. Also if we do not pass any patter matching characters, the application stops without any log printing either on console or file.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org