This has been bugging me for ages too.. Just committed a change.  I think
it's still an ERROR level, but doesn't log the full trace.  The message
though does contain the underlying exception message, so it's still pretty
useful.  Maybe a property on the appender if you DON'T want it to nag on
error?

This could be controversial, but I'm in agreement with Jacob on this one.

cheers,

Paul Smith

> -----Original Message-----
> From: Jacob Kjome [mailto:[EMAIL PROTECTED]
> Sent: Saturday, May 08, 2004 1:41 AM
> To: Log4J Developers List
> Subject: socketappender stacktrace, is it necessary?
> 
> 
> 
> Hi everyone,
> 
> I've been using Chainsaw2 and like it quite a bit (nice work 
> guys!).  However,
> the socketappender, at least in Logj4-1.2.8, prints out a big 
> stack trace if
> nothing is listening to the socket it is appending to.  
> Wouldn't a simple
> warning suffice?  In fact, I'd report it as a "WARN" rather 
> than an "ERROR".  A
> user can determine whether or not they want to view log 
> messages being appended
> to the socket and really only need to be gently reminded of 
> the lack of the
> socket listener.  It's not like the app won't work anymore 
> which is what one
> might think after seeing "ERROR" and a huge scary stack 
> trace.  Below is what I
> see even when I'm not concerned with viewing logging.  Do you 
> think this is
> necessary to have in the server logs?  How about: "log4j:WARN 
> No socket listener
> at localhost:4445 to recieve socket appender messages. We 
> will try again later"
> with no stack trace (I apologize if this is already fixed in 
> 1.3.  I haven't had
> a chance to look; at work with no CVS access)....
> 
> 
> log4j:ERROR Could not connect to remote log4j server at 
> [localhost]. We will try
> again later.
> java.net.ConnectException: Connection refused: connect
>       at java.net.PlainSocketImpl.socketConnect(Native Method)
>       at java.net.PlainSocketImpl.doConnect(Unknown Source)
>       at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
>       at java.net.PlainSocketImpl.connect(Unknown Source)
>       at java.net.Socket.connect(Unknown Source)
>       at java.net.Socket.connect(Unknown Source)
>       at java.net.Socket.<init>(Unknown Source)
>       at java.net.Socket.<init>(Unknown Source)
>       at 
> org.apache.log4j.net.SocketAppender.connect(SocketAppender.java:195)
>       at 
> org.apache.log4j.net.SocketAppender.activateOptions(SocketAppe
> nder.java:152)
>       at 
> org.apache.log4j.config.PropertySetter.activate(PropertySetter
> .java:247)
>       at 
> org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigur
> ator.java:210)
>       at
> org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMCon
> figurator.java:140)
>       at
> org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(D
> OMConfigurator.java:153)
>       at
> org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElem
> ent(DOMConfigurator.java:415)
>       at 
> org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigur
> ator.java:335)
>       at 
> org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:781)
>       at 
> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurat
> or.java:666)
>       at 
> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurat
> or.java:616)
>       at 
> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurat
> or.java:584)
>       at 
> org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator
> .java:687)
>       at
> org.apache.log4j.servlet.InitShutdownController.initializeLog4
> j(InitShutdownController.java:215)
>       at
> org.apache.log4j.servlet.InitContextListener.contextInitialize
> d(InitContextListener.java:265)
>       at
> org.apache.catalina.core.StandardContext.listenerStart(Standar
> dContext.java:3805)
>       at 
> org.apache.catalina.core.StandardContext.start(StandardContext
> .java:4321)
>       at 
> org.apache.catalina.core.ContainerBase.addChildInternal(Contai
> nerBase.java:823)
>       at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.
> java:807)
>       at 
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
>       at
> org.apache.catalina.core.StandardHostDeployer.addChild(Standar
> dHostDeployer.java:903)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>       at java.lang.reflect.Method.invoke(Unknown Source)
>       at 
> org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUt
> ils.java:252)
>       at 
> org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
>       at org.apache.commons.digester.Rule.end(Rule.java:276)
>       at 
> org.apache.commons.digester.Digester.endElement(Digester.java:1058)
>       at 
> org.apache.catalina.util.CatalinaDigester.endElement(CatalinaD
> igester.java:76)
>       at 
> org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
>       at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndE
> lement(Unknown
> Source)
>       at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$Fragment
> ContentDispatcher.dispatch(Unknown
> Source)
>       at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocu
> ment(Unknown
> Source)
>       at 
> org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>       at 
> org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>       at 
> org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
>       at 
> org.apache.commons.digester.Digester.parse(Digester.java:1567)
>       at
> org.apache.catalina.core.StandardHostDeployer.install(Standard
> HostDeployer.java:488)
>       at 
> org.apache.catalina.core.StandardHost.install(StandardHost.java:863)
>       at 
> org.apache.catalina.manager.ManagerServlet.deploy(ManagerServl
> et.java:813)
>       at 
> org.apache.catalina.manager.ManagerServlet.doGet(ManagerServle
> t.java:320)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(ApplicationFilterChain.java:237)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterChain.java:157)
>       at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.java:214)
>       at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
>       at
> org.apache.catalina.core.StandardContextValve.invokeInternal(S
> tandardContextValve.java:198)
>       at
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.java:152)
>       at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
>       at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Aut
> henticatorBase.java:540)
>       at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:102)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:137)
>       at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:117)
>       at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:102)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
>       at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java:109)
>       at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
>       at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>       at 
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.
> java:160)
>       at 
> org.apache.coyote.http11.Http11Processor.process(Http11Process
> or.java:793)
>       at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
> r.processConnection(Http11Protocol.java:702)
>       at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoi
> nt.java:571)
>       at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:644)
>       at java.lang.Thread.run(Unknown Source)
> 
> 
> Jake
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to