I'm trying to get additional fields to log with log4j, and its working but only when I create an appender in code and not in the log4j.properties
using the properties file it will run but won't use AppServerPatternLayout so the custom fields aren't displayed.
log4j.rootLogger=FATAL
log4j.logger.some.log=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=logging.AppServerPatternLayout
log4j.appender.stdout.layout.ConversionPattern=-----------------using log file------------------------%nTime: %d%nHost: %h%nServer: %s%nComponent: %b%nVersion: %v%nPriority: %p%nThread Id: %t%nContext: %x%nMessage: %m%n
AppServerLoggerFactory factory;
factory = new AppServerLoggerFactory("MyServer", "MyComponent", "1.0");
AppServerLogger.setFactory(factory);
Logger logger = AppServerLogger.getLogger("some.log");
PatternLayout layout = new AppServerPatternLayout( formatString );
logger.addAppender( new ConsoleAppender(layout) );
logger.info("Hello");
PropertyConfigurator.configure("customlog.properties");
AppServerLoggerFactory factory;
factory = new AppServerLoggerFactory("MyServer", "MyComponent", "1.0");
AppServerLogger.setFactory(factory);
Logger logger = AppServerLogger.getLogger("some.log");
logger.info("Hello");
----------------using in code appender----------------------
Time: 2009-11-06 12:55:05,785
Host: M1330
Server: MyServer
Component: MyComponent
Version: 1.0
Priority: INFO
Thread Id: main
Context:
Message: logging config from code
-----------------using log file------------------------
Time: 2009-11-06 12:56:17,983
Host:
Server:
Component:
Version:
Priority: INFO
Thread Id: main
Context:
Message: logging config from customlog.properties
Using MDC you can add custom fields like
MDC.put("Version", versionName);
Logger log = LogManager.getLogger("some.log");
log.info("Hello");
and pull it out in the log4j.properties with a UPPER case X
log4j.appender.stdout.layout.ConversionPattern=%X{Version}
From the example you posted, I can only guess that AppServerPatternLayout
is not in the package logging
. Everything else looks find. Add
log4j.DEBUG=true
to your properties file. log4j will then dump what it does while reading the properties. Maybe that gives you an idea what's wrong.
If that doesn't help, consider to use Nested Diagnostic Contexts.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With