log4j2 - problem z zapisem logu do pliku

0

Cześć,
Mam taki problem w którym zupełnie nie wiem czemu zapis logu do liku nie działa w spring boot przy użyciu log4j2.

Problem jest taki, że stworzyłem 2 Logger-y, jeden w klasie startującej aplikację a drugi w kontrolerze. Oba wypisuje na konsolę log, ale do pliku z logami zapisuj się tylko log ze startu aplikacji.
Proszę o pomoc w rozwiązaniu tego problemu. Poniżej plik log4j2.properties:

name = PropertiesConfig
property.filename = logs/example.log

appenders = console, rolling
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{dd.MM.yyyy HH:mm:ss,SSS} %-5p %c{1}:%L - %m%n

appender.rolling.type = RollingFile
appender.rolling.name = roll
appender.rolling.fileName = ${filename}
appender.rolling.filePattern = logs/history/%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{dd.MM.yyyy HH:mm:ss,SSS} %-5p %c{1}:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 2
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=100MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5

loggers = rolling

logger.rolling.name = org.apache.logging.log4j.core.appender.rolling
logger.rolling.level = all
logger.rolling.additivity = true
logger.rolling.appenderRefs = rolling
logger.rolling.appenderRef.rolling.ref = roll

rootLogger.level = all
rootLogger.appenderRefs = rolling, stdout
rootLogger.appenderRef.rolling.ref = roll
rootLogger.appenderRef.stdout.ref = STDOUT

UPDATE:
Wydaj mi się, że problem leży po stornie konfiguracji gradle, gdyż z tego co zauważyłem na konsolę jest wypisywany log w innym formacie niż jest zdefiniowane w log4j2.properties
Mój build.gradle:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'org.springframework.boot'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'net.ltgt.apt'
apply plugin: 'net.ltgt.apt-idea'

buildscript {
    repositories {
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${spring_boot_gradle_plugin}")
        classpath("gradle.plugin.com.querydsl.plugin:querydsl-plugin:${querydsl_plugin}")
        classpath("net.ltgt.gradle:gradle-apt-plugin:${gradle_apt_plugin}")
    }
}

repositories {
    mavenCentral()
}

configurations {
    all.collect { configuration ->
        configuration.exclude  module: 'spring-boot-starter-logging'
    }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-jpa:${spring_boot_version}")
    compile("org.springframework.boot:spring-boot-starter-web:${spring_boot_version}")
    compile("org.springframework.boot:spring-boot-devtools:${spring_boot_version}")

    compile 'org.apache.logging.log4j:log4j-api:2.11.1'
    compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.11.1'

    compile("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcat_embed_jasper}")
    compile("javax.servlet:jstl:${jstl}")
    
    compile("mysql:mysql-connector-java:${mysql_connector}")
    compile("javax.xml.bind:jaxb-api:${jaxb_api}")
    compile("org.glassfish.jaxb:jaxb-runtime:${jaxb_runtime}")

    compile("com.querydsl:querydsl-jpa:${querydls_version}")
    annotationProcessor (
            "com.querydsl:querydsl-apt:${querydls_version}:jpa",
            "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:${hibernate_jpa}",
            "javax.annotation:javax.annotation-api:${annotation_api}"
    )
    
    testCompile("org.codehaus.groovy:groovy-all:${groovy_all}")
    testCompile("org.spockframework:spock-core:${spock}")
}
1

Po co Ci ten log4j2? Czemu nie możesz użyć slf4j?

Pokaż kod Aplikacji i tego kontrolera. Ciężko wróżyć z fusów.

Dodatkowo nie robisz do końca tak jak tutaj piszą, nie excludujesz logging przykładowo:
https://docs.spring.io/spring-boot/docs/1.5.1.RELEASE/reference/htmlsingle/#howto-configure-log4j-for-logging

0

Dzięki za zainteresowanie tematem.

Excluduje logging poniższa linijka za to odpowiada:

    all.collect { configuration ->
        configuration.exclude  module: 'spring-boot-starter-logging'
    }
}

Kontroler z którego nie otrzymuję logów:

@Controller
public class IndexController {

    private final Logger logger = LogManager.getLogger(IndexController.class);

    @GetMapping("/")
    public String index(Model model) {
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
        logger.fatal("This is a fatal message");

        model.addAttribute("message", "Hello");

        return "index";
    }

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1