RollingFileAppender에서 Regexfilter를 사용하려고합니다. 첫 번째 일치하는 인스턴스의 경우 로거를 다시 수집했지만 그 이후에는 다른 패턴이 있지만 파일에는 아무 것도 기록되지 않습니다. 여기 내가 사용하고있는 것입니다 :RollingFileAppender가 제대로 작동하지 않는 RegexFilter
메인 클래스 :
public class MainApp {
public static void main(String[] args) {
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>
내가 처음 실행하면, 내 로그 파일에 난 단지 가진 로그를 얻었다 "사업 "관련 선. 늦게 나는 그 후퇴를 바꾸었다. 사업 (패턴에 비즈니스 단어 전후에 astreik이 있음). "비즈니스"로깅은 파일이나 콘솔에서 발생하지 않았습니다. 내 응용 프로그램도 로깅없이 종료되었습니다.
그런 다음 패턴을 ''로 되돌리려했습니다. 사업. ' (패턴은 비즈니스 단어 전후에 astreik을 가짐), 이후에는 로그 파일에 로깅이 발생하지 않았지만 콘솔에서는 모든 로그 추적이 인쇄됩니다. 오랫동안 시도한 후에 Regexfilter를 주석 처리하면 내 로그가 로그 파일에 인쇄됩니다.
Regexfilter의 버그인지 한번 확실하지 않습니다. 또한 일치하는 문자를 전달하지 않으면 콘솔이나 파일에서 로그 인쇄없이 응용 프로그램이 중지됩니다.