Я создал файл 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);
@ Мара, я добавил это к исходному вопросу, спасибо за предложение.
Где находится файл журнала, указанный в файле log4j.properties?
@NaveenKulkarni Я его не создавал, я думал, что он будет создан автоматически во время запуска приложения? Должен ли я создавать его вручную? Если да - то где?
Я только вчера работал над этим
вам не нужно создавать выходной файл журнала вручную. после запуска приложения оно должно быть создано автоматически
Я бы сказал, что проблема не в вашем коде, а в том, как вы запускаете банку. Здесь уже есть ответ stackoverflow.com/questions/10370989/…




Пожалуйста, найдите реализацию ниже:
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? А если нет, то как нам изменить его, чтобы он содержал все необходимые записи журнала?
в log4j.properties вы меняете INFO на DEBUG. В коде измените logger.info на logger.debug
Могу ли я использовать DEBUG, ERROR и INFO одновременно?
TRACE — это самый низкий уровень ведения журнала, он распечатает вам все журналы, включая TRACE–FATAL, если вы укажете в log4j. Но в производстве я предлагаю вам использовать журналы ERROR, так как файл будет заполняться очень быстро. Следовательно, вероятность того, что приложение будет работать медленно, также больше, поскольку оно должно всегда записывать в файл журнала.
Для получения дополнительной информации вы можете увидеть ссылку ниже tutorialspoint.com/log4j/log4j_quick_guide.htm
Привет. не могли бы вы показать свой код со строкой журнала?