Log4j2를 필터 또는 다른 구성 요소가 로그에서 특정 값을 걸러 낼 수 있도록 구성 할 수 있습니까?Log4j2에서 키를 기반으로 로거에서 특정 키 값 쌍을 필터링 할 수 있습니까?
는 다음 줄 지금
[operation=DONE, userName=junitUser, tenant=Tenant [tenantID=default], needDetails=1, message=BaseMsg [version=1.0, sdk=AppSDK [version=1.3, protocols=[4aac81ca, 393ae7a0]], device=Device [id=12345, type=Pompom, info=Dot's Device]]], channel=null
[operation=DONE, userName=junitUser224, tenant=Tenant [tenantID=default], needDetails=1, message=BaseMsg [version=1.0, sdk=AppSDK [version=1.3, protocols=[4aac81ca,393ae7a0]], device=Device [id=123456, type=Mamamia, info=tom's Device]]], channel=null
내가 로그가있는 방법으로 '사용자 이름 "필드를 필터링 할 수 있습니다 로그에 나타나는 말 (하지만 같은 라인의 다른 필드가 통과 할 수 있도록해야한다) 라인은 이제 아래와 같이 그것을 포함하지 않습니다?
[operation=DONE, tenant=Tenant [tenantID=default], needDetails=1, message=BaseMsg [version=1.0, sdk=AppSDK [version=1.3, protocols=[4aac81ca, 393ae7a0]], device=Device [id=12345, type=Pompom, info=Dot's Device]]], channel=null
[operation=DONE, tenant=Tenant [tenantID=default], needDetails=1, message=BaseMsg [version=1.0, sdk=AppSDK [version=1.3, protocols=[4aac81ca,393ae7a0]], device=Device [id=123456, type=Mamamia, info=tom's Device]]], channel=null
여기 이것은 RewriteAppender으로 수행 할 수 있습니다 내 log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="/Users/dunston/logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<RegexFilter regex=".* zinger_log .*" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
고유 확장자를 사용하지 않고 이것이 가능한지 확실하지 않습니다. 그러나 데이터 구조를 로깅하는 것처럼 보입니다. 그렇습니까? 그렇다면, 호출하기 전에 대신 데이터 구조에서 사용자 이름을 제거하는 메소드를 작성하십시오. – Jeremy
@ 제레미 응답에 감사드립니다. 달성하고자하는 한 가지는 '구성 가능성'의 용이성이었습니다. 마찬가지로 최종 사용자가 log4j2 구성을 변경하여 특정 필드를 허용/금지하도록 허용 할 수있는 것처럼, 그러한 기능이 이미 패키지의 일부로 사용 가능하다면. 또한이 유형의 로그를 생성하기위한 데이터 구조의 복사본을 필터링하기 시작했습니다. 아마도 log4j2에서 ThreadContext를 통해 필드 이름을 가져 와서 롤링 파일 로그에 쓰기 전에 필드의 키와 값을 필터링하십시오. 다른 우아한 접근 방식을 사용할 수 있는지 확실하지 않은가요? – user46743