I have defined a very simple SocketAppender to a log4J 1.2.8 client 
application


log4j.appender.SockLog=org.apache.log4j.net.SocketAppender 
log4j.appender.SockLog.RemoteHost=localhost 
log4j.appender.SockLog.Port=4451 
#log4j.appender.SockLog.LocationInfo=true 
log4j.appender.SockLog.Threshold=WARN 


A very simple SocketReceiver is configured for the "listener" server

 <plugin name="Log4JSocketReceiver" 
class="org.apache.log4j.net.SocketReceiver"> 
   <param name="Port" value="4451"/>  
 </plugin>  


1) I have read about a bug in log4J 1.3 that prevents the LocationInfo 
propertery being set to true.
        When will this be fixed ? I need the location info for remote 
debugging

2) When I have the listener server down and run the client application, I 
expect only a "couldn't connect" terse error message.
        Instead I get the full java.net.ConnectException + stack trace . 
Not exactly simply dropped.
        Note this is from the initialization code, not subsequent 
loggings.
        Is there anyway to avoid this message. I want the application to 
use the socket if it is available, else ignore it.
        (Note that log4perl handles this very situation very cleanly)


The log4J javadoc for socketappender states :

"If the remote server is down, the logging requests are simply dropped. 
However, if and when the server comes back up, then event transmission is 
resumed transparently. This transparent reconneciton is performed by a 
connector thread which periodically attempts to connect to the server."

log4j:ERROR Could not connect to remote log4j server at [localhost]. We 
will try again later. 
java.net.ConnectException: Connection refused   
        at java.net.PlainSocketImpl.socketConnect(Native Method)     
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)    
 
        at 
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)      
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)      
 
        at java.net.Socket.connect(Socket.java:452)   
        at java.net.Socket.connect(Socket.java:402)   
        at java.net.Socket.<init>(Socket.java:309)   
        at java.net.Socket.<init>(Socket.java:153)   
        at 
org.apache.log4j.net.SocketAppender.connect(SocketAppender.java:195)       
 
        at 
org.apache.log4j.net.SocketAppender.activateOptions(SocketAppender.java:152) 
 
        at 
org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247)   
 
        at 
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:123) 
 
        at 
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:87) 
 
        at 
org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:645)
 
 
        at 
org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:603)
 
 
        at 
org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:500)
 
 
        at 
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:406)
 
 
        at 
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:307)
 
 
        at 
org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315) 
 
        at fvis.logging.FvisLog.getFvisLogger(FvisLog.java:56)     
        at fvis.logging.TestFvisLog.main(TestFvisLog.java:68)    
bash-2.05$ java -Dfvis.home=/home/fvusmnd1/fvis fvis.logging.TestFvisLog 
fvis.drpg.log4j.properties 

Reply via email to