Skip to content

Instantly share code, notes, and snippets.

@akunzai
Last active June 17, 2025 14:09
Show Gist options
  • Select an option

  • Save akunzai/682ea093ee4bbeccfb28f644af624fe0 to your computer and use it in GitHub Desktop.

Select an option

Save akunzai/682ea093ee4bbeccfb28f644af624fe0 to your computer and use it in GitHub Desktop.
My logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds"
packagingData="true"
debug="false">
<property name="LOG_PATH" value="${LOG_PATH:-${catalina.base:-/tmp}/logs}" />
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%date %highlight(%-5level) [%logger] - %msg%n}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%date %-5level [%logger] - %msg%n}"/>
<property name="SENDGRID_API_KEY" value="${SENDGRID_API_KEY:-}" />
<property name="LOG_MAIL_FROM" value="${LOG_MAIL_FROM:-}" />
<property name="LOG_MAIL_TO" value="${LOG_MAIL_TO:-}" />
<property name="LOG_MAIL_SUBJECT" value="Error Notification from ${HOSTNAME}" />
<!-- https://logback.qos.ch/manual/mdc.html -->
<property name="MAIL_LOG_PATTERN" value="${MAIL_LOG_PATTERN:-%msg%n%n
Date: %date%n
Level: %level%n
Logger: %logger%n
Exception: %rootException%n
Remote Address: %X{req.remoteHost} %X{req.xForwardedFor}%n
Request: %X{req.method} %X{req.requestURL}%n
QueryString: %X{req.queryString}%n
User Agent: %X{req.userAgent}%n%n}" />
<!-- https://logback.qos.ch/manual/appenders.html#ConsoleAppender -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- https://logback.qos.ch/manual/appenders.html#RollingFileAppender -->
<appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/app.log</file>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM}/app.%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
<!-- each file should be at most 10MB, keep 180 days' worth of history capped at 1GB total size -->
<maxFileSize>10MB</maxFileSize>
<maxHistory>180</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- https://logback.qos.ch/manual/appenders.html#SMTPAppender -->
<appender name="Mail" class="ch.qos.logback.classic.net.SMTPAppender">
<subject>${LOG_MAIL_SUBJECT}</subject>
<from>${LOG_MAIL_FROM}</from>
<to>${LOG_MAIL_TO}</to>
<smtpHost>smtp.sendgrid.net</smtpHost>
<smtpPort>465</smtpPort>
<SSL>true</SSL>
<username>apikey</username>
<password>${SENDGRID_API_KEY}</password>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${MAIL_LOG_PATTERN}</pattern>
</layout>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- send just one log entry per email -->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<!-- deny all events with a level below ERROR -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<logger name="org.springframework" level="ERROR"/>
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="File"/>
<appender-ref ref="Mail" />
</root>
</configuration>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment