Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
claude-dev-suite avatar

Logback

  • 31 installs
  • 27 repo stars
  • Updated July 17, 2026
  • claude-dev-suite/claude-dev-suite

Configure Logback logging for Java and Spring Boot with logback-spring.xml, rolling file appenders, and async logging.

About

Covers Logback, a logging framework for Java and Spring Boot with native SLF4J support and file rotation. A developer uses it when configuring logback-spring.xml, rolling file appenders, and async logging.

  • logback-spring.xml and rolling file appenders
  • Async logging and automatic file rotation

Logback by the numbers

  • 31 all-time installs (skills.sh)
  • Ranked #54 of 89 Java & JVM skills by installs in the Skillselion catalog
  • Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill logback

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs31
repo stars27
Last updatedJuly 17, 2026
Repositoryclaude-dev-suite/claude-dev-suite

What it does

Configure Logback logging for Java and Spring Boot with logback-spring.xml, rolling file appenders, and async logging.

Files

SKILL.mdMarkdownGitHub ↗

Logback - Quick Reference

When to Use This Skill

  • Configure logging in Spring Boot/Java applications
  • File appender with rotation
  • High-performance async logging
Deep Knowledge: Use mcp__documentation__fetch_docs with technology: logback for comprehensive documentation.

Configuration

logback-spring.xml (Spring Boot)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <property name="LOG_PATH" value="${LOG_PATH:-logs}"/>
    <property name="LOG_FILE" value="${LOG_FILE:-app}"/>

    <!-- Console Appender -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>
        </encoder>
    </appender>

    <!-- Rolling File Appender -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/${LOG_FILE}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Async Appender -->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="FILE"/>
        <queueSize>512</queueSize>
        <discardingThreshold>0</discardingThreshold>
    </appender>

    <!-- Logger Configuration -->
    <logger name="com.myapp" level="DEBUG"/>
    <logger name="org.springframework" level="INFO"/>
    <logger name="org.hibernate.SQL" level="DEBUG"/>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="ASYNC"/>
    </root>

    <!-- Profile-specific -->
    <springProfile name="prod">
        <root level="WARN">
            <appender-ref ref="ASYNC"/>
        </root>
    </springProfile>
</configuration>

JSON Format (ELK Stack)

<appender name="JSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeMdcKeyName>requestId</includeMdcKeyName>
        <includeMdcKeyName>userId</includeMdcKeyName>
    </encoder>
</appender>

MDC Usage

import org.slf4j.MDC;

MDC.put("requestId", UUID.randomUUID().toString());
MDC.put("userId", user.getId());
try {
    // Business logic
} finally {
    MDC.clear();
}

When NOT to Use This Skill

  • SLF4J API questions: Focus on API usage, not Logback implementation details
  • Log4j2 configuration: Different XML structure and features
  • Application code logging: Use SLF4J API, Logback is just the implementation
  • Non-Java projects: Use language-appropriate logging frameworks
  • Simple console output: System.out may be sufficient for basic scripts

Anti-Patterns

Anti-PatternWhy It's BadSolution
Synchronous file appender in high-trafficBlocks application threadsUse AsyncAppender wrapper
No rolling policyLogs fill disk spaceUse RollingFileAppender with size/time policies
Logging to console in productionPerformance overhead, lost logsUse file appenders, ship to centralized logging
DEBUG level in productionPerformance impact, disk usageUse INFO or WARN in production profiles
Not clearing MDCMemory leaks, wrong context in threadsAlways clear MDC in finally block
Hardcoded log pathsBreaks across environmentsUse properties: ${LOG_PATH}

Quick Troubleshooting

IssueCauseSolution
Configuration not loadedWrong file name/locationUse logback-spring.xml in src/main/resources
Logs not rotatingMissing rolling policyAdd SizeAndTimeBasedRollingPolicy
Performance degradationSynchronous appendersWrap with AsyncAppender
MDC values not appearingPattern missing MDC placeholdersAdd %X{key} to pattern
Duplicate log entriesLogger additivity enabledSet additivity="false" on logger
Profile-specific config ignoredUsing logback.xml insteadRename to logback-spring.xml for Spring profiles

Related skills

Java & JVMmonitoring

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.