DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15177>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15177 configureAndWatch fails with ExternallyRolledFileAppender Summary: configureAndWatch fails with ExternallyRolledFileAppender Product: Log4j Version: 1.2 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Normal Priority: Other Component: Configurator AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] using log4J 1.2.6 on Windows NT4 jdk 1.2.2. I suspect this bug may apply generally, but without testing, I'll not commit to that. When using an ExternallyRolledFileAppender, the appender opens a socket. When the config file is updated, the following exception is thrown repeatedly: java.net.BindException: Address in use: bind at java.net.ServerSocket.<init>(ServerSocket.java:181) at java.net.ServerSocket.<init>(ServerSocket.java:86) at org.apache.log4j.varia.HUP.run(ExternallyRolledFileAppender.java:110) I suspect that the PropertyWatchDog class needs to call resetConfiguration before loading the new config, though I wouldn't swear to it. to test use something like the following: Log.Properties: # Set root logger level to DEBUG and its only appender to A1. log4j.rootLogger=DEBUG, CONSOLE, file log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%-5p [%d{dd/MM/yyyy HH:mm:ss z} - %t] %n%m%n log4j.appender.file=org.apache.log4j.varia.ExternallyRolledFileAppender log4j.appender.file.File=FooFile.log log4j.appender.file.port=2025 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%-5p [%d{dd/MM/yyyy HH:mm:ss z} - % t] %n%m%n log4j.appender.file.append=true Foo.java: import org.apache.log4j.*; import org.apache.log4j.varia.*; public class Foo extends Object { private static Logger log; public Foo(String configFile) throws Exception { log = Logger.getLogger("FooLog"); PropertyConfigurator.configureAndWatch(configFile); log.debug( "starting log"); } /** */ public static void main( String args[] ) throws Exception { // Incorrect number of args or is the arg is a request for usage help? if ((args.length != 1) || (args[0].compareTo("-h") == 0)) { System.err.println( "Usage: java com.pindartech.CCCS.PrintServiceMain <CONFIGFILE>" ); return; } Foo foo = new Foo(args[0]); log.info( "Foo created, running..." ); while (true) { try { Thread.sleep(5000); log.info("still here"); } catch (Exception e) { } finally { LogManager.shutdown(); } } } } -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
