Hello,

Yes, it is possible to limit the computation of caller info by a user
defined criteria, including the presence of an exception. The %caller
conversion word [1] takes an evaluator as a second parameter. Quoting
from the docs:

  This conversion word can also use evaluators to test logging events
  against a given criterion before creating the output. For example,
  using %caller{3, CALLER_DISPLAY_EVAL} will display three lines of
  stacktrace, only if the evaluator called CALLER_DISPLAY_EVAL returns a
  positive answer.

Evaluators are described at [2]. See also [3].

Here is a sample configuration file for your use case:

<configuration>
  <evaluator name="CALLER_EVAL">
    <expression>throwable != null</expression>
  </evaluator>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>
        [%thread] %level - %msg%n%caller{6, CALLER_EVAL}
      </pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

I hope this helps,

--
Ceki
http://twitter.com/#!/ceki

[1] http://logback.qos.ch/manual/layouts.html#conversionWord
[2] http://logback.qos.ch/manual/layouts.html#Evaluators
[3] http://logback.qos.ch/manual/filters.html#JaninoEventEvaluator

On 04.07.2012 17:21, lopardo . wrote:
Hi. Is it possible to log method name and line number only for
exceptions? Or set a different pattern, but only for exceptions?

That way I could log more info, even if it's slower to process, for some
exceptions.

Thanks.

Regards,
lopardo.



_______________________________________________
Logback-user mailing list
Logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user

Reply via email to