I am trying to mail error logs using logback with some additional information. For example when an error occurse I wanna to add user label that were logged in appliaction, best in the Subject. I know that I can catch all errors and add user label to error message if logged user exist, but is there a better way to do that? For now my logback looks like this:
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<SMTPHost>${smtpHost}</SMTPHost>
<Username>${smtpUser}</Username>
<Password>${smtpPass}</Password>
<To>${mail}</To>
<From>${mailFrom}</From>
<Subject>SYSTEM ERROR: %logger{20} - %m</Subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%date %logger{35} - %message%n</Pattern>
</layout>
</appender>
First, implement MDC solution to track down user in your application, see: Logging user activity in web app. Once this is done (you can benefit from this in many other places), just add custom key to your subject:
<Subject>SYSTEM ERROR: %logger{20} - %X{user} - %m</Subject>
Proven to work.