Thank you for your response, Kamal. I added a call to activateOptions() on each appender, but that still does not work. I set log4j.debug to true, and I see debug trace for setting the configuration through the logger_config.properties file, but there is no trace for the appenders added in the code other than setting the file for the FileAppender - which I see twice and I've included below: log4j: setFile called: /home/djohnson/test.txt, true log4j: setFile ended log4j: setFile called: /home/djohnson/test.txt, true log4j: setFile ended
Thank you so much for your help! Here's the code after I added the call to activateOptions(): try { PatternLayout layout; String loggerPropFile = properties.getProperty("ngl.config",null); String loggerName = properties.getProperty("ngl.logger.name", null); if (loggerPropFile != null) { PropertyConfigurator.configure(loggerPropFile); } logger = Logger.getLogger(loggerName); Enumeration en = logger.getAllAppenders(); int nbrOfAppenders = 0; while (en.hasMoreElements()) { nbrOfAppenders++; Object ap = en.nextElement(); } if (nbrOfAppenders > 1) { return; } try { if ("true".equals(properties .getProperty("ngl.console", "false"))) { layout = new PatternLayout("%d [%t] %-5p %m%n"); ConsoleAppender cnslAppndr = new ConsoleAppender(layout); logger.addAppender(cnslAppndr); cnslAppndr.activateOptions(); } } catch (RuntimeException e) { handleException(e); } try { String logfile = properties.getProperty("ngl.logfile", null); if (logfile != null) { layout = new PatternLayout("%d [%t] %-5p %m%n"); FileAppender fileAppender = new FileAppender(layout, logfile); logger.addAppender(fileAppender); fileAppender.activateOptions(); } } catch (RuntimeException e) { handleException(e); } } catch (Exception ex) { handleException(ex); } ________________________________ From: Kamal Ahmed [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 19, 2006 3:57 PM To: Log4J Users List Subject: RE: Add appender programmatically after logger configured initially with PropertyConfigurator Donna, I think you have to call activateOptions() method on your Appenders. Also what error message / debug trace are you getting? Hope this helps. -Kamal. ________________________________ From: Donna Johnson [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 19, 2006 4:48 PM To: log4j-user@logging.apache.org Subject: Add appender programmatically after logger configured initially with PropertyConfigurator I am trying to add a couple of appenders to my logger in the code based on flags in the application's properties file. I configure the logger with an appender in the logger.properties file initially and I want to add appenders to that programmatically. I add a console appender as well as a file appender (based on the flags). Nothing is being logged to either the console or the file, even though the file is being created. Any help is very much appreciated! Here is the logger.properties file: # Logger for Errors/Debugging (Syslog) log4j.logger.error=DEBUG, A1 log4j.appender.A1=org.apache.log4j.net.SyslogAppender log4j.appender.A1.syslogHost=localhost log4j.appender.A1.facility=LOCAL5 log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %m%n # Logger for stats log4j.logger.stats=INFO,A2 log4j.appender.A2=org.apache.log4j.RollingFileAppender log4j.appender.A2.File=./cust/properties/stats log4j.appender.A2.MaxFileSize=10MB log4j.appender.A2.MaxBackupIndex=1 log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=%d %m%n Here is the application properties file: # Log to console ngl.console=true # Log to local5 (Unix only) ngl.syslog=localhost:local5 # Log to a disk file ngl.logfile=./cust/properties/test.txt # Logging level (can be DEBUG, INFO, WARN, ERROR, or CRITICAL|FATAL) ngl.level=DEBUG # Host name that will print out on each log line ngl.hostname=localhost # If true, writes abbreviated log header with only level and message ngl.brief=false ngl.config=./cust/properties/logger_config.properties ngl.logger.name=error Here is the actual code to initialize the logger: try { PatternLayout layout; String loggerPropFile = properties.getProperty("ngl.config",null); String loggerName = properties.getProperty("ngl.logger.name", null); if (loggerPropFile != null) { PropertyConfigurator.configure(loggerPropFile); } logger = Logger.getLogger(loggerName); Enumeration en = logger.getAllAppenders(); int nbrOfAppenders = 0; while (en.hasMoreElements()) { nbrOfAppenders++; Object ap = en.nextElement(); } if (nbrOfAppenders > 1) { return; } try { if ("true".equals(properties .getProperty("ngl.console", "false"))) { layout = new PatternLayout("%d [%t] %-5p %m%n"); logger.addAppender(new ConsoleAppender(layout)); } } catch (RuntimeException e) { handleException(e); } try { String logfile = properties.getProperty("ngl.logfile", null); if (logfile != null) { layout = new PatternLayout("%d [%t] %-5p %m%n"); logger.addAppender(new FileAppender(layout, logfile)); } } catch (RuntimeException e) { handleException(e); } } catch (Exception ex) { handleException(ex); } Donna Johnson Sr. Programmer Analyst FedEx 10 Fedex Pkwy 2nd Floor Horizontal Collierville, TN 38017 <http://maps.yahoo.com/py/maps.py?Pyt=Tmap&addr=10+Fedex+Pkwy&csz=Collie rville%2C+TN++38017&country=us> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> tel: 901-263-9914 Add me to your address book... <https://www.plaxo.com/add_me?u=51540020625&v0=826157&k0=553936137> Want a signature like this? <http://www.plaxo.com/signature>