Hi Dario,
Comments inline.
On 18.04.2012 18:00, Dario Campagna wrote:
Hi,
I am Dario Campagna, I am a software developer working for an
Italian company.
Few days ago I discovered Logback and started studying it to see if it
is suitable for the application I am working on.
In particular, I made some experiments with different appenders and
layouts defined in a configuration file.
I encountered some problems trying to run the application I am using
for my experiment with a configuration file that attach to the root
logger the following sifting appender.
<appender name="SIFT-txt" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>parent</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="SIFT-${parent}"
class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>node</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${parent}-${node}"
class="ch.qos.logback.core.FileAppender">
<file>${parent}/${node}/log.txt</file>
<append>true</append>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%level%date{ISO8601}: %mdc - %msg%n</pattern>
</layout>
</appender>
</sift>
</appender>
</sift>
</appender>
With the above appender I would like to write a log event in a file
whose path depends on two keys of the mdc.
The ideas is that the outmost sifting appender discriminates on the
key named "parent", while the innermost sifting appender discriminates
on the key named "node". The FileAppender writes log events to a file
inside the ${parent}/${node} folder.
[cut]
17:48:15,581 |-ERROR in
ch.qos.logback.core.joran.spi.Interpreter@38:11 - no applicable action
for [sift], current pattern is [[configuration][appender][sift]]
Isn't the configurator/appender/sift a pattern defined by logback-classic?
Sifting appenders cannot be nested. The error messages don't make much
sense. Probably due to the fact that sifting appenders cannot be nested.
Is the nesting of sifting appender in the configuration file allowed?
No.
If it is not allowed, is this limitation mentioned somewhere?
No. This is not mentioned in the docs.
Anyway, instead of nesting sifting appender, you should create your own
discriminator class which merges the values for MDC keys parent and node
into ${parent}/${node}. Just emulate the code in MDCBasedDiscriminator
[1]. If you run into trouble ask for help here.
HTH,
[1] http://goo.gl/9KWxK
--
Ceki
http://twitter.com/#!/ceki
_______________________________________________
Logback-user mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/logback-user