javalogbackappendersmtpappender

logback-smtpAppender is there any way to add some info in subject from application?


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>

Solution

  • 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.