Почему мои сообщения log4j не отображаются в файле журнала?

Я создал файл log4j.properties и поместил его под /src/main/resources/, содержимое этого файла:

log4j.rootLogger = DEBUG, FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug

# Set the append to false, overwrite
log4j.appender.FILE.Append=false

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Я хотел бы видеть логи в файле log.out, но когда я запускаю приложение командой:

java -jar myapp.jar -Dlog4j.debug

файл не создается.

Это - как и просили в комментариях - как я использую это в коде:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

private static final Logger LOG = LogManager.getLogger(MyClass.class);

и позже:

LOG.debug("some message");

LOG.error("some other msg", error);

Привет. не могли бы вы показать свой код со строкой журнала?

Mara 05.03.2019 09:31

@ Мара, я добавил это к исходному вопросу, спасибо за предложение.

randomuser1 05.03.2019 09:35

Где находится файл журнала, указанный в файле log4j.properties?

Naveen Kulkarni 05.03.2019 09:49

@NaveenKulkarni Я его не создавал, я думал, что он будет создан автоматически во время запуска приложения? Должен ли я создавать его вручную? Если да - то где?

randomuser1 05.03.2019 09:51

Я только вчера работал над этим

Naveen Kulkarni 05.03.2019 09:52

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

Mara 05.03.2019 09:56

Я бы сказал, что проблема не в вашем коде, а в том, как вы запускаете банку. Здесь уже есть ответ stackoverflow.com/questions/10370989/…

Mara 05.03.2019 10:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
353
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, найдите реализацию ниже:

log4j.properties

под `

src/main/resources

`

# Root logger option
log4j.rootLogger=INFO, 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=D:/demo/logs/myapp/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

Наряду с этим у меня также есть Logger, импортированный в class.

package org.nbk.demo;
import org.apache.log4j.Logger;
public class ServerStartup {
    private static final Logger logger = Logger.getLogger(ServerStartup.class);
    public void onApplicationEvent() {
            logger.info("Information Messages");
    }
}

Спасибо, не могли бы вы сказать мне, работает ли это с logger.debug и logger.error? А если нет, то как нам изменить его, чтобы он содержал все необходимые записи журнала?

randomuser1 05.03.2019 09:58

в log4j.properties вы меняете INFO на DEBUG. В коде измените logger.info на logger.debug

Naveen Kulkarni 05.03.2019 09:59

Могу ли я использовать DEBUG, ERROR и INFO одновременно?

randomuser1 05.03.2019 10:02
TRACE — это самый низкий уровень ведения журнала, он распечатает вам все журналы, включая TRACEFATAL, если вы укажете в log4j. Но в производстве я предлагаю вам использовать журналы ERROR, так как файл будет заполняться очень быстро. Следовательно, вероятность того, что приложение будет работать медленно, также больше, поскольку оно должно всегда записывать в файл журнала.
Naveen Kulkarni 05.03.2019 10:05

Для получения дополнительной информации вы можете увидеть ссылку ниже tutorialspoint.com/log4j/log4j_quick_guide.htm

Naveen Kulkarni 05.03.2019 10:10

Другие вопросы по теме