Create a custom converter

This class converts the well known log levels to a custom format

CustomLogLevelConverter.java
package com.hascode;

public class CustomLogLevelConverter extends ClassicConverter {
    @Override
    public String convert(ILoggingEvent event) {
        switch (event.getLevel().toInt()) {
            case Level.ERROR_INT:
                return "ERROR!!!";
            case Level.WARN_INT:
                return "WARN!!";
            case Level.INFO_INT:
                return "INFO!";
            case Level.TRACE_INT:
                return "DEBUG";
            default:
                return event.getLevel().toString();
        }
    }
}

Register the converter

The following Logback config includes some defaults and registers our custom converter.

The name used for the conversionWord attribute of the conversionRule is also the placeholder used in our log format definition later.
logback-base.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
    <conversionRule conversionWord="customLevel" converterClass="com.hascode.CustomLogLevelConverter" />
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
</included>

This config is now included into our logback.xml which is picked up by spring boot.

logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback-base.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    [..]
</configuration>

Configure the Log Format

Now we may specify our shiny new log levels in our log format by adding the following config to our application.properties:

application.properties
logging.pattern.console=%d{DEFAULT_MICROS} %customLevel[%thread]  %-32.32logger{32} %message %ex{full} %n