Log4j2 custom pattern example in java .
1. Create custom pattern, first we need to create plugin. For example I need to print TransactionLogId in logs.
TransactionLogIdConverter.java
@Plugin(name="TransactionIdConverter", category = "Converter")
@ConverterKeys({"trnLogid","trscId"})
public class TransactionLogIdConverter extends LogEventPatternConverter{
protected TransactionLogIdConverter(String name, String style) {
super(name, style);
}
public static TransactionLogIdConverter newInstance(String[] options) {
return new TransactionLogIdConverter("trnLogid",Thread.currentThread().getName());
}
@Override
public void format(LogEvent event, StringBuilder toAppendTo) {
toAppendTo.append(getTransactionId());
}
protected String getTransactionId() {
String transacationId = TransactionLogIdGenerator.myTransactionId();
return transacationId;
}
}
2. Next create TransactionIdGenerator.java class for generating TransactionLogId.
TransactionIdGenerator.java
public class TransactionLogIdGenerator {
public static String myTransactionId(){
return "1234-5678-0123";
}
}
3. Now we need add custom pattern in log4j.xml file using %trnLogid. And we have to add custom pattern plugin package name in log4j2.xml file in configuration element.
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://logging.apache.org/log4j/2.0/config"
status="OFF" packages="com.custom.pattern">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern=" Date:-%d TransactionLogID:- %trnLogid line Number:-%L Location:-%l classNmae: %C Message:-%m%n"/>
</Console>
</Appenders>
<loggers>
<Logger name="org.apache.log4j.xml" level="all" />
<root level="all">
<appender-ref ref="STDOUT" level="TRACE" />
</root>
</loggers>
</configuration>
For testing log4j2 custom pattern we have to create one Test.java class.
public class Test {
private static final Logger logger = LogManager.getLogger(Test.class);
public static void myTest(){
logger.info("this is my info message");
logger.debug("This is debug message");
}
public static void main(String[] args) {
myTest();
}
}
The output comes like below.
Date:-2015-06-22 16:26:50,612 TransactionLogID:- 1234-5678-0123 line Number:-12 Location:-com.custom.test.Test.myTest(Test.java:12) classNmae: com.custom.test.Test Message:-this is my info message
Date:-2015-06-22 16:26:50,616 TransactionLogID:- 1234-5678-0123 line Number:-13 Location:-com.custom.test.Test.myTest(Test.java:13) classNmae: com.custom.test.Test Message:-This is debug message
Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!
ReplyDeleteBiotech Internships | internships for cse students | web designing course in chennai | it internships | electrical engineering internships | internship for bcom students | python training in chennai | web development internship | internship for bba students | internship for 1st year engineering students
Your content is so informative and valuable to me. Thanks for posting.
ReplyDeleteData Analytics Training Course in Kolkata
Thanks for sharing such an useful and informative blog.
ReplyDeleteJava classes in Pune