[logback-user] using different appenders based on MDC value

Ceki Gulcu ceki at qos.ch
Thu Mar 13 08:34:56 CET 2008


Hello Pascale,

I think generating the one-file-per-server-IP can be achieved through Joran's 
replay capability. However, that's a relatively sophisticated and ill-documented 
technique.

At this time, I suggest that you either enter a bug report asking for this 
feature or implement it on your own by adapting currently existing code.

Best regards,

Pascale, Peter H. wrote:
> You could separate the log statements as a post-processing step
> (generating the one-file-per-server-IP - say on a daily basis). We do
> something like that, but in our case the aggregate log file has a value
> by itself.
> 
> Peter
> 
> 
> -----Original Message-----
> From: logback-user-bounces at qos.ch [mailto:logback-user-bounces at qos.ch]
> On Behalf Of Stefan Armbruster
> Sent: Sunday, February 17, 2008 1:29 PM
> To: logback users list
> Subject: Re: [logback-user] using different appenders based on MDC value
> 
> Assume a clustered webapp distributed to multiple servers running tomcat
> (e.g. 
> app1, app2, app3). Since appX are diskless servers, the webapp's
> logback.xml 
> simply uses SocketAppender to redirect all log messagess to a central
> logging 
> server.
> The webapp uses a servlet filter (similar to 
> http://logback.qos.ch/manual/mdc.html) to populate the MDC with the
> server's 
> IP number. 
> The central logging server receives all log messages from app1-appX
> using 
> SimpleSocketServer and writes them to a single file using the following 
> config:
> 
> <appender name="default" 
> class="ch.qos.logback.core.rolling.RollingFileAppender">
>  <file>default.log</file>
>  <rollingPolicy
> class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
>    <FileNamePattern>default-%d{yyyy-MM-dd}.log</FileNamePattern>
>  </rollingPolicy>
> 
>  <layout class="ch.qos.logback.classic.PatternLayout">
>    <Pattern>%d{ISO8601} [%thread] S:%X{server} %-5level 
>      %logger{36} - %msg%n</Pattern>
>  </layout>
> </appender>
> 
> Note that the server's IP appears inside the logfile, nothing new until
> now. 
> The goal is to have multiple logfiles ( 1 per server IP number), e.g.
> 	default_192.168.0.1.log
> 	default_192.168.0.2.log
> 	...
> 	default_192.168.0.n.log
> 
> So the appender must be aware of the server's ip number stored in the
> MDC map.
> I hope this spreads some more light on my use case.
> 
> Regards,
> Stefan
> 
> 
> Am Sonntag, 17. Februar 2008 schrieb Ceki Gulcu:
>> Stefan,
>>
>> Could you please expand on the use case?
>>
>> Stefan Armbruster wrote:
>>> Hi,
>>>
>>> is there a way to redirect log messages depending on a MDC variable
> to
>>> different appenders? The logback manual only uses MDC values for the
>>> pattern inside a single appender.
>>>
>>> Example: assume, the code sets a MDC variable "context". If a log
> message
>>> is supplied with context="A", it should be written to
> application_A.log,
>>> if it has context="B", the message should be written to
>>> application_B.log, and so on.
>>>
>>> If this is not possible by default, it should be possible to write a
> kind
>>> of MDCAwareAppenderWrapper like this (only pseudo code below):
>>>
>>> public class MDCAwareAppenderWrapper<E> implements Appender<E> {
>>> 	Map<String,Appender> appenderMap;
>>> 	String mdcName;
>>>
>>> 	... setters and getters omitted
>>>
>>> 	public void doAppend(E event) {
>>> 		LoggingEvent le = (LoggingEvent)event;
>>> 		String mdcValue = le.getMDCPropertyMap().get(mdcName);
>>> 		Appender appender = appenderMap.get(mdcValue);
>>> 		appender.doAppend(event);
>>> 	}
>>> }
>>>
>>> MDCAwareAppenderWrapper is configured by a Map<String,Appender> that
> maps
>>> MDC values (A and B from the example above) to the real appenders.
>>>
>>> Any hints or comments on that?
>>>
>>> Kind regards,
>>> Stefan
>>> _______________________________________________
>>> Logback-user mailing list
>>> Logback-user at qos.ch
>>> http://qos.ch/mailman/listinfo/logback-user
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user
> 
> **************************************************************************** 
> This email may contain material confidential to
> Pearson.  If you were not an intended recipient, 
> please notify the sender and delete all copies. 
> We may monitor email to and from our network. 
> ****************************************************************************
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user
> 

-- 
Ceki Gülcü
QOS.ch is looking to hire talented developers in Switzerland.  If
interested, please contact c e k i @ q o s . c h




More information about the Logback-user mailing list