Проблема с Log4j2 Slf4j - файлы регистратора не создаются при запуске сервера - PullRequest
0 голосов
/ 05 мая 2020
ERROR StatusLogger Reconfiguration failed: No configuration found for '75b84c92' at 'null' in 'null'

Это ошибка, которую я получаю при запуске сервера (netty). Я использую следующие зависимости: log4j-core-2.13.1, log4j-api-2.13.1, log4j-slf4j-impl-2.13.1 и slf4j-api-1.7.29

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Давай сделаем это. Здесь меньше обсуждаемой информации, поэтому это дает мне возможность подробно объяснить. Начнем.

Ваш pom. xml должен выглядеть как минимум так

<properties>
    <spring.version>4.1.6.RELEASE</spring.version>
    <log4j.version>1.2.17</log4j.version>
</properties>

<dependencies>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- Log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>

</dependencies>

Создайте файл log4j.properties и поместите его в resources. папка

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#outputs to Tomcat home
log4j.appender.file.File=${catalina.home}/logs/myapp.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Простой controller для возврата страницы приветствия. Кроме того, он показывает вам, как использовать log4j для ведения журнала.

package com.kunal.common.controller;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class WelcomeController {

    private static final Logger logger = Logger.getLogger(WelcomeController.class);

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView getWelcome() {

        //logs debug message
        if(logger.isDebugEnabled()){
            logger.debug("getWelcome is executed!");
        }

        //logs exception
        logger.error("This is Error message", new Exception("Testing"));

        ModelAndView model = new ModelAndView("welcome");
        model.addObject("msg", "Hello Spring MVC + Log4j");
        return model;

    }

}

Давайте запустим

mvn jetty:run (or whichever server you use)

и запустим URL http://localhost: 8080 / spring- mvc -log4j /

Все сообщения появятся в консоли

log4j.properties

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Консоль причала

2015-06-19 14:10:35 DEBUG WelcomeController:19 - getWelcome is executed!
2015-06-19 14:10:35 ERROR WelcomeController:23 - This is Error message
java.lang.Exception: Testing
        at com.kunal.common.controller.WelcomeController.getWelcome(WelcomeController.java:23)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
0 голосов
/ 05 мая 2020

Конфигурация журнала имеет множество аспектов, но если вы используете Spring, вам не нужно делать слишком много вещей для ведения журнала.

Это базовый c pom.xml то, что вы можете использовать:

<?xml version="1.0" encoding="UTF-8"?>
<project ...>
    <modelVersion>4.0.0</modelVersion>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <name>...</name>
    <packaging>...</packaging>
    <version>...</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
    </parent>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
    </dependencies>
</project>

Плагин Lombok делает вашу жизнь проще. Если вы используете аннотацию @Slf4j, тогда вы можете сразу же использовать регистратор: log.debug("say something").

Пример кода

@Slf4j
@Component
public class ClassA{
    public void doSomething() {
        log.debug("say something");
    }
}

Последнее, что вы можете проверить, это конфигурацию журнала в файле конфигурации вашего приложения. Вы можете использовать следующее в качестве ссылки:

logging:
    level:
        root: INFO
        org.springframework: INFO
        com.a.b.c: DEBUG
...