-
1. Re: jog4j SMTP appender sendin errors one line stachtrace per mail
peterj Nov 21, 2011 10:29 AM (in response to simoncigoj)I suspect that you will have to debug Log4J's SMTP appender to answer this.
But I did have a thought - when you receive multiple emails for a stack trace, what does that same stack trace look like in the server.log? Is that stack trace, by any chance, being written to stdout/stderr and intercepted by log4j? If so, then it is one line per stack trace entry. If that is the case, you will have to either fix the app that is writing to stdout/stderr, or write a custom SMTP appender that handles this situation.
-
2. Re: jog4j SMTP appender sendin errors one line stachtrace per mail
simoncigoj Nov 21, 2011 3:16 PM (in response to peterj)Hmm I have set the File appender and the SMPT appender, so the log is outputed to a file and to a SMTP, I have commented out the console appender in jboss-log4j.xml. After the inspection off server.log files I can approve that also there there are errors written by lines, could be some sort of buffer setting error? ... the stack trace of an error is writen line by line for example like this :
13:24:59,911 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) javax.imageio.IIOException: Can't get input stream from URL!
13:24:59,926 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at javax.imageio.ImageIO.read(Unknown Source)
13:24:59,942 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at si.arctur.fourPM.components.gant.ProjectGantExport.getImage(ProjectGantExport.java:176)
13:24:59,958 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at si.arctur.fourPM.components.gant.ProjectGantExport.drawItemIcons(ProjectGantExport.java:343)
13:24:59,973 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at si.arctur.fourPM.components.gant.ProjectGantExport.drawItems(ProjectGantExport.java:199)
13:24:59,989 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at si.arctur.fourPM.components.gant.ProjectGantExport.generateImage(ProjectGantExport.java:129)
13:25:00,005 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at si.arctur.fourPM.components.gant.ProjectGantExport.exportStructure(ProjectGantExport.java:92)
13:25:00,020 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at si.arctur.fourPM.components.gant.ProjectGantExport.generate(ProjectGantExport.java:75)
13:25:00,036 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
13:25:00,051 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
13:25:00,083 ERROR [STDERR] [] - [root] (ajp-127.0.0.1-8009-4) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
......
But it happens on irregular bases, I cann not reproduce this type of behaviour, so it is quite difficult to debug. After restarting the server it usulay works for a while.
My log4j appender conf settings:
<!-- A time/date based rolling appender -->
<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="D:\\Logs\\jboss\\server.log"/>
<!--<param name="ImmediateFlush" value="false" />
<param name="BufferedIO" value="true" />-->
<param name="Append" value="true"/>
<!-- In AS 5.0.x the server log threshold was set by a system
property. In 5.1 and later we are instead using the system
property to set the priority on the root logger (see <root/> below)
<param name="Threshold" value="${jboss.server.log.threshold}"/>
-->
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<!-- Rollover at the top of each hour
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
-->
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] (Thread) Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] [%X{url}] - [%X{username}] (%t) %m%n"/>
<!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
-->
</layout>
</appender>
<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Threshold" value="ERROR"/>
<param name="To" value="emailAccount"/>
<param name="From" value="emailAccount"/>
<param name="Subject" value="Subject"/>
<param name="SMTPHost" value="smtp host"/>
<param name="BufferSize" value="20"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE},%c] [%X{url}] [%X{username}] %m%n"/>
</layout>
</appender>
-
3. Re: jog4j SMTP appender sendin errors one line stachtrace per mail
alesj Nov 21, 2011 4:41 PM (in response to simoncigoj)Something is writting to StdErr.
----
dmlloyd: ever seen this?
10:32
dmlloyd
10:32
yeah
10:32
that'll happen when stack traces are written to stderr instead of logged
10:32
there's no way the stdio interceptor can tell what lines are part of a message
10:32
a single message
10:33
alesj
10:33
why would suddenly things be written to stderr and not log?
10:33
dmlloyd: ^
10:34
dmlloyd
10:34
they're not suddenly being written to stderr
10:34
it's this particular one which is
10:35
alesj
10:35
so, you're saying the somewhere in the stack, something is writting to stderr … some user app code?
10:35
dmlloyd
10:35
the exception is thrown from line 1395 of javax/imageio/ImageIO.java
10:35
yeah probably
10:36
whoever is calling that, probably si.arctur.fourPM.components.gant.ProjectGantExport#getImage() if I had to guess
10:36
if they don't want that behavior, they should edit their logging config and set the STDERR category to not use parent handlers
10:37
then manually add CONSOLE and FILE back in
10:37
to jsut that category
-
4. Re: jog4j SMTP appender sendin errors one line stachtrace per mail
simoncigoj Nov 22, 2011 9:48 AM (in response to alesj)Tnx for the detailed answer...indead I checked our code and in some places we use printStackTrace() which is by default writing to STDERR, I will try to log those exceptions better.
I' will also try your suggestion, and observer the behaveour.Tnx again for the quick answer.
p.s.
I've also found some suggestions to solve this problem here:
http://i-proving.ca/space/Technologies/JBoss/JBoss+and+log4j -
5. Re: jog4j SMTP appender sendin errors one line stachtrace per mail
thelinker Jul 16, 2012 11:57 AM (in response to simoncigoj)Just an update on the suggestions mentioned above,
the http://i-proving.ca/space/Technologies/JBoss/JBoss+and+log4j
should now be
http://i-proving.com/2009/03/23/JBoss-and-log4j/