You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by bu...@apache.org on 2002/12/09 14:38:12 UTC

DO NOT REPLY [Bug 15177] New: - configureAndWatch fails with ExternallyRolledFileAppender

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: log4j-dev@jakarta.apache.org
        ReportedBy: r.daykin@pindar.com


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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>