Spring Boot Environment-Specific Logging Configuration

Development Environment Logging Setup


<property name="LOG_PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
<springProfile name="development">

    <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
    
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    
    <logger name="com.yourcompany.packagename" level="debug"/>

    <root level="info">
    
        
    </root>
</springProfile>

Testing Environment Configuration

<property name="TEST_LOG_PATH" value="/var/log/application/test/" />
<springProfile name="testing">
    
    <appender name="TEST_FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${TEST_LOG_PATH}/application_info.log</file>
        
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
        </encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <fileNamePattern>${TEST_LOG_PATH}/archive.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
            
            <MaxHistory>100</MaxHistory>
        </rollingPolicy>
        
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${LOG_PATTERN}</pattern>
        </layout>
    </appender>
    
    
    <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    
    <logger name="com.yourcompany.packagename" level="debug"/>
    
    <root level="info">
        
        
        
    </root>
</springProfile>

Complete Configuration File


<configuration>

    
    <property name="LOG_PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
    
    <property name="TEST_LOG_PATH" value="/var/log/application/test/" />
    
    <property name="PROD_LOG_PATH" value="/var/log/application/production/" />

    
    <springProfile name="development">
        <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${LOG_PATTERN}</pattern>
            </encoder>
        </appender>
        
        <logger name="com.yourcompany.packagename" level="debug"/>

        <root level="info">
            
        </root>
    </springProfile>

    
    <springProfile name="testing">
        
        <appender name="TEST_FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            <file>${TEST_LOG_PATH}/application_info.log</file>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
            </encoder>
            
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                
                <fileNamePattern>${TEST_LOG_PATH}/archive.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
                
                <MaxHistory>100</MaxHistory>
            </rollingPolicy>
            
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </appender>
        
        
        <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${LOG_PATTERN}</pattern>
            </encoder>
        </appender>
        
        <logger name="com.yourcompany.packagename" level="debug"/>
        
        <root level="info">
            
            
        </root>
    </springProfile>

    
    <springProfile name="production">
        <appender name="PROD_FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${PROD_LOG_PATH}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${PROD_LOG_PATH}/warnings.%d{yyyy-MM-dd}.log</fileNamePattern>
                <MaxHistory>100</MaxHistory>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </appender>
        
        <root level="warn">
            
        </root>
    </springProfile>
</configuration>

Required Maven Dependencies

The configuration utilizes several classes from the Logback framework:

  • ConsoleAppender: ch.qos.logback.core.ConsoleAppender - Outputs logs to the console
  • RollingFileAppender: ch.qos.logback.core.rolling.RollingFileAppender - Outputs logs to files with rolling capabilities
  • TimeBasedRollingPolicy: ch.qos.logback.core.rolling.TimeBasedRollingPolicy - Handles log file rotation based on time

These classes are part of the logback-core.jar library. In a Spring Boot application, you typically need to add the web starter dependency which includes logging support:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Tags: Spring Boot logging logback configuration java

Posted on Fri, 28 Aug 2026 16:22:12 +0000 by kusarigama