Почему Log4j выводит на консоль другой код, но не мой код? - PullRequest
0 голосов
/ 30 мая 2020

У меня есть веб-приложение, созданное с помощью Eclipse / STS и Spring MVC.

Я использую slf4j и log4j для ведения журнала.

Вот мой файл log4j.properties ... Я знаю, что он используется, потому что я добавил текст «MY TEST PROPS FILE» к дате шаблон, и он появляется в журналах ...

# Root logger option
log4j.rootLogger=DEBUG, INFO, WARN, ERROR, 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=MY TEST PROPS FILE - %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Когда я запускаю свое веб-приложение, вывод консоли выглядит следующим образом ... вы можете увидеть "MY TEST PROPS FILE" на выходе .. .

MY TEST PROPS FILE - 2020-05-29 17:18:36 DEBUG BasicResourcePool:422 - decremented pending_acquires: 0
MY TEST PROPS FILE - 2020-05-29 17:18:36 DEBUG BasicResourcePool:1644 - trace com.mchange.v2.resourcepool.BasicResourcePool@468f3122 [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@642b4cb2)
MY TEST PROPS FILE - 2020-05-29 17:18:36 DEBUG NewProxyConnection:1260 - com.mchange.v2.c3p0.impl.NewProxyConnection@71cf92cb: close() called more than once.
MY TEST PROPS FILE - 2020-05-29 17:18:36 DEBUG BasicResourcePool:1644 - trace com.mchange.v2.resourcepool.BasicResourcePool@468f3122 [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@642b4cb2)
MY TEST PROPS FILE - 2020-05-29 17:18:36 DEBUG BasicResourcePool:1644 - trace com.mchange.v2.resourcepool.BasicResourcePool@468f3122 [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@642b4cb2)

Моя проблема в том, что журнал, который я пытаюсь выполнить из своего кода, не отображается в выводе консоли.

Я делаю это ...

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/* ... */

    private static Logger logger = LoggerFactory.getLogger(WebController.class);

/* ... */

    @RequestMapping(value={"", "/", "showhome"}, method={RequestMethod.POST,RequestMethod.GET})
    public ModelAndView showHome(Model model) {

        logger.info("########### TEST LOG INFO");
        logger.error("########### TEST LOG ERROR");
        logger.warn("########### TEST LOG WARN");
        logger.debug("########### TEST LOG DEBUG");

/* ... */
    }

Мне, должно быть, не хватает чего-то простого. Почему мои вызовы регистратора тестов не отображаются в выводе консоли?

ОБНОВЛЕНИЕ - РЕШЕНИЕ НАЙДЕНО: Я нашел решение и опубликовал его как ответ ниже.

1 Ответ

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

Я нашел решение своей проблемы.

Я перешел на log4j2, поместив это в свой pom. xml ...

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.7</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.7</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.7</version>
</dependency>

А затем я создал файл log4j2. properties, вот так ...

status = error
name = PropertiesConfig

filters = threshold

filter.threshold.type = ThresholdFilter
filter.threshold.level = debug

appenders = console

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

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

Теперь работает.

Всем привет.

...