How To Configure Log4J via C#
One of our products is currently using IKVM to interop with a java library. I kept seeing console warnings saying:
log4j:WARN Please initialize the log4j system properly.
Clearly the java library uses log4j and it is not getting initialized by my application. A customer was rightfully confused by this message so I spent a little time getting log4j setup and working.
At first I was hoping I could host log4j configuration XML along side my log4net configuration but sadly that was a pipedream. I opted for this approach.
public const string Log4JConfigFileName = "log4j.config" ; private static void ConfigureLog4J() { if (File.Exists(Log4JConfigFileName)) { PropertyConfigurator.configureAndWatch(Log4JConfigFileName); return ; } var patternLayout = new PatternLayout( "%d [%t] %-5p %c - %m%n" ); var consoleAppender = new ConsoleAppender(patternLayout); var fileAppender = new RollingFileAppender(patternLayout, "./logs/file-extraction-errors.log" , true ); fileAppender.setMaxFileSize( "1MB" ); fileAppender.setMaxBackupIndex(5); var rootLogger = Logger.getRootLogger(); rootLogger.setLevel(Level.ERROR); rootLogger.addAppender(fileAppender); rootLogger.addAppender(consoleAppender); } |
Look for an existing log4j.config log file use that when it is present. Otherwise configure a console and a file appender and log only Errors to a particular file. The manual a lot.
Our log4j usage is pretty vertical so I can get away with hard coding the defaults and rely on throwing a log4j configuration file into the application directory when we need better control.
Hope this post helps if you ever have the pleasure of interop with log4j.