Description
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 any kind 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.