Le 14/06/2012 12:32, Rainer Gerhards a écrit :
-----Original Message-----
From: [email protected] [mailto:rsyslog-
[email protected]] On Behalf Of Florian Crouzat
Sent: Thursday, June 14, 2012 11:01 AM
To: [email protected]
Subject: Re: [rsyslog] %msg% is missing a part of the message received in
%rawmsg%
Le 14/06/2012 10:46, Florian Crouzat a écrit :
Hi,
Since a couple weeks I started configuring jboss to log through syslog
using a syslog log4j appender. Everything is fine except I sometimes
miss a part of the very first line of some stacktraces.
My configuration is the following, jboss -> log4j -> rsyslog -> server.log.
I created a raw template for comparison.
$template jbossFormat,"%timegenerated% host.example.com jboss:
%msg%\n"
$template jbossFormatRAW,"%rawmsg%\n"
local2.* /var/log/jboss/server.log;jbossFormat
local2.* /var/log/jboss/raw.log;jbossFormatRAW
local2.* ~
As you can see, one use %msg%, the other %rawmsg%.
My problem: there is a difference between the "message" part of the two
template, see http://pastie.org/4085022
Line 2 of the jbossFormat template is missing the
"com.foo.bar.baz.exception.InvalidSessionException:" part.
It seems jboss and log4j are working fine since it's present in %rawmsg%
so why it doesn't reach %msg% ?
Thanks in advance.
I think I get it, but I'd like confirmation, and maybe even a solution
(not using Java would be a great one, yes)
Java stacktraces are multilines. Only the first line goes through the
log4j pattern layout. So a stacktrace in %rawmsg% looks like this:
<148>local2:WARN [ 1.2.3.4 ] [InternalTransactionOperationManagerBean
] - Transaction error !
<148>foo.bar.exception.TransactionException: fooError = transaction.notfound
<148> at
foo.bar..manager.transaction.cancel(TransactionOperation.java:323)
<148> at sun.reflect.GeneratedMethodAccessor1234.invoke(Unknown Source)
<148> at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
mpl.java:48)
As I already said, lines 1,3,4& 5 are logged "properly", line is
complete and prepended by my rsyslog template header.
Line 2 isn't. My guess: rsyslog thinks that
"foo.bar.exception.TransactionException:" is the syslogfacility and
removes it for %msg% as it's not "the message".
Could it be so ?
Yeah, the default log4j syslog appender is know to emit severely malformed
messages. You may find this small appender useful:
http://www.rsyslog.com/tcp-syslog-rfc5424-log4j-appender/
In any case, I think the rsyslog parser also screws up in line 2. I (think) I would
expect that "foo.bar..." ends up as tag.
Rainer
Thanks for your quick answer.
So it what I was afraid of, the first part of the line is considered as
a tag...
Thanks for suggesting your appender, your already mentionned it in
another mail exchange we had and I think I can't really use it because
of security constraints.
I'll see what I kind do, either in Java or I'll use %rawmsg% in my
regular template.
--
Cheers,
Florian Crouzat
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards