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

#java #spring #log4j

#java #spring #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 , но когда я запускаю приложение с помощью command:

 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);
  

Комментарии:

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

2. @Mara Я добавил это к исходному вопросу, спасибо, что предложили это

3. Где файл журнала, указанный в файле log4j.properties?

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

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

Ответ №1:

Пожалуйста, ознакомьтесь с реализацией ниже:

log4j.properties

в разделе `

src/main/ресурсы

`

 # 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");
    }
}
  

Комментарии:

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

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

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

4. TRACE это самый низкий уровень ведения журнала, он распечатает вам все журналы, включая TRACE to FATAL , если вы укажете в log4j . Но в рабочей среде я предлагаю вам использовать ERROR журналы, так как файл будет заполняться очень быстро, следовательно, вероятность замедления приложения также больше, поскольку ему всегда приходится записывать данные в файл журнала.

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