5
私のアプリケーションをlog4j
からlog4j2
にマイグレーションしています。移行中、custom
patternlayouts
,patternparsers
およびpatternconverters
が使用されています。私はlog4j2プラグインを使用してこれらの変更を実装する方法を認識していません。誰でもこのカスタムレイアウトTestPatternLayout
をlog4j2に変換する方法を教えてください。どうもありがとう。log4j2でカスタムパターンレイアウトを実装する方法
PFB log4j
を使用してカスタムパターンのレイアウトがどのように実装されているかの完全な詳細。
TestPatternLayout:
public class TestPatternLayout extends PatternLayout {
@Override
protected PatternParser createPatternParser(String pattern) {
return new TestPatternParser(pattern);
}
}
TestPatternParser:
public class TestPatternParser extends PatternParser {
private static final char Test_CHAR = 'e';
private static final char DATETIME_CHAR = 'd';
public TestPatternParser(String pattern) {
super(pattern);
}
@Override
protected void finalizeConverter(char c) {
switch (c) {
case Test_CHAR:
currentLiteral.setLength(0);
addConverter(new TestPatternConverter());
break;
default:
super.finalizeConverter(c);
}
}
}
TestPatternConverter:
public class TestPatternConverter extends PatternConverter {
@Override
protected String convert(LoggingEvent event) {
String testID = ObjectUtils.EMPTY_STRING;
if(TestLogHandler.isTestLogEnabled()) {
TestContextHolder contextHolder = TestLogHandler.getLatestContextHolderFromStack(event.getThreadName());
if(contextHolder != null) {
testID = contextHolder.getTestIDForThread(event.getThreadName());
}
else{
testID = TestContextHolder.getTestIDForThread(event.getThreadName());
}
}
return testID;
}
}
log4j.xmlでレイアウト定義:
<appender name="TEST_LOG_FILE" class="org.apache.log4j.RollingFileAppender">
...
<layout class="com.test.it.logging.TestPatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] [TestId: %e] [%t] %m%n"/>
</layout>
...
</appender>