[logback-user] Split long data on multiple rows

Anders Hammar anders at hammar.net
Tue Sep 22 15:50:37 CEST 2009


Thanks Ceki!

I was happily hacking along when it suddenly struck me - 'foo' is not a
string, but a complex object which is converted to a printable string by a
Converter. So, sticking to that logback design it's impossible to tell the
final length of foo's string value in the TurboFilter or in
writeLoopOnConverters(). Bummer!

/Anders

On Tue, Sep 22, 2009 at 13:59, Ceki Gulcu <ceki at qos.ch> wrote:

>
> Since you system is based on logback-core and not logback-classic, you
> could create a turbo filter which instead of returning ACCEPT, DENY, NEUTRAL
> could return an array of MyEvent instances which would correspond closely to
> what you have in mind.
>
>
> Anders Hammar wrote:
>
>> Thanks Ceki! I knew I could count on you replying quickly.
>>
>> The framework here is the auditing framework I constructed some 1,5 years
>> ago for a customer. They've now realized this requirement.
>>
>> I was kind of hoping that I could add some step before the layout gets the
>> event. In that step, I could check the event, and if necessary split it into
>> x events. And then the layout would get these n events instead and do the
>> normal logging on each of them.
>> I had a look at the filters, but they only handle allow/block kind of
>> things. This would be some other kind of "filter". Maybe there's no
>> advantage going down this path compared to your suggestion...
>>
>> /Anders
>>
>> On Tue, Sep 22, 2009 at 11:38, Ceki Gulcu <ceki at qos.ch <mailto:
>> ceki at qos.ch>> wrote:
>>
>>
>>    Hello Anders,
>>
>>    Logback-core? Nice.
>>
>>    If only the field 'foo' needs to be split, then just override the
>>    converter for the field foo to do the splitting, and you are done.
>>    However, you requirements differ as you also require the repetition
>>    of other fields.
>>
>>    The approach which seems the most logical to me, would be to derive
>>    a sub-class from PatternLayoutBase overriding the
>>    writeLoopOnConverters method so that when the foo field needs
>>    splitting, you would loop over the converter chain as many times as
>>    necessary.
>>
>>    Here is a possible implementation:
>>
>>    class MyPatternLayout extends PatternLayoutBase<MyEvent> {
>>
>>     ...
>>
>>     protected String writeLoopOnConverters(MyEvent event) {
>>       Foo foo = event.getFoo();
>>       StringBuilder sb = new StringBuilder();           String[] fooParts
>> = split(foo);
>>       for(String s: fooParts) {
>>         // construct a new event from 'event' so that foo has only one
>> part
>>         MyEvent splitEvent = new MyEvent(event, s);
>>         String line = super.writeLoopOnConverters(splitEvent);
>>         sb.append(line);
>>         sb.append(CoreConstants.LINE_SEPARATOR);
>>       }
>>       return sb.toString();
>>     }
>>    }
>>
>>    HTH,
>>
>>
>>    Anders Hammar wrote:
>>
>>        Hi,
>>
>>        I have a framework that utilizes logback-core for logging. Due
>>        to limitations in the software reading the log files, a new
>>        requirement is that long data should be split on multiple rows.
>>        I'm trying to figure out if there a simple way of doing this?
>>
>>        More info: What I have is an extension of the PatternLayoutBase
>>        which adds the converters for my event class. I'm using the
>>        standard RollingFileAppender. So, let's say I have a
>>        FooConverter, which gets the foo info from the event. But, when
>>        logging to the file, the foo info part must never be longer than
>>        x chars. If it is, it should be split on multiple rows. Other
>>        data (generated by other converters) should then be repeated.
>>
>>        Any suggestions on how to do this in a clean logback way is
>>        appreciated! What I'm currently thinking is to loop on the
>>        converters (calling PatternLayoutBase.writeLoopOnConverters
>>        multiple times), but I need to know when that's required...
>>        Anyone done something similar?
>>
>>        /Anders
>>
>>
>>    --    Ceki Gülcü
>>    Logback: The reliable, generic, fast and flexible logging framework
>>    for Java.
>>    http://logback.qos.ch
>>    _______________________________________________
>>    Logback-user mailing list
>>    Logback-user at qos.ch <mailto: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
>>
>
> --
> Ceki Gülcü
> Logback: The reliable, generic, fast and flexible logging framework for
> Java.
> http://logback.qos.ch
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://qos.ch/pipermail/logback-user/attachments/20090922/32bcd7a6/attachment-0001.htm>


More information about the Logback-user mailing list