
On 16.05.2012 15:27, Y M wrote:
Hello,
My situation is this: on certain specific and frequent log statements, I need the stacktrace to identify the method that needs to be investigated. However, the whole stacktrace is too long and unnecessary in this case (it is generating too much logging and garbage), but in every other, it is useful. I'd like to change the layout for this situation, and use %throwable{5}, for example.
So, I found nothing on the manual similar to this, and nothing searching around, maybe I'll need a custom class. If so, how could I do it? Multiple filtered appenders writing to the same file seems too much overhead and troublesome- I think the best approach would be a custom encoder, and do the selection inside 'doEncode', based on some event parameter, probably a specific marker. I'm just analyzing the possibilities, no coding yet, so I'm not aware of any shortcomings or limitations.
There is support exactly for this type of situation. See the docs for PatternLayout [1]. In particular, the docs on %ex conversion word. Here is the relevant quote: This conversion word can also use evaluators to test logging events against a given criterion before creating the output. For example, using %ex{full, EX_DISPLAY_EVAL} will display the full stack trace of the exception only if the evaluator called EX_DISPLAY_EVAL returns a negative answer. Evaluators are described further down in this document. Refer to [2] for evaluators. Let us know if this approach works for you. [1] http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout [2] http://logback.qos.ch/manual/layouts.html#Evaluators -- Ceki http://twitter.com/#!/ceki