Логирование с использованием Maven
Пытаюсь подключить логирование, использую только зависимости, с установкой библиотек на работе большие проблемы, начал с Lomboka, с ним ни чего не вышло, теперь хотелось бы, чтобы оно хоть как-нибудь заработало, вот мой помник:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.13.3</version>
</dependency>
в классе добавляю переменную:
private static final Logger logger = LoggerFactory.getLogger(WindowFunction.class);
IDE подтягивает импорты:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
вот запись в лог:
logger.info("start");
всё OK, ошибок нет, но сообщение не выводится. Создал файл log4j.properties, но я так понимаю, что для вывода в консоль он не обязателен:
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.threshold=INFO
log4j.appender.file.File=log/Log.txt
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=6
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.threshold=INFO
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}
log4j.logger.org.springframework=ERROR
log4j.logger.org.hibernate=ERROR
log4j.logger.org.apache.cxf=ERROR
Всё равно ни чего не выводится.
Ответы (3 шт):
Вы используете Log4j 2. Соответственно Вам необходимо указать либо log4j2.xml, либо log4j2.properties.
Ниже приведен пример log4j2.properties (должен быть в src/main/resources):
# Print configuration errors only
status=error
# Console appender
appender.console.type=Console
appender.console.name=LogToConsole
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
# Root logger
rootLogger.level=info
rootLogger.appenderRef.console.ref=LogToConsole
Нужно настройки прописать в файле resources/log4j.xml, примерно так:
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="mylogs.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<root>
<priority value ="debug"></priority>
<appender-ref ref="console"></appender-ref>
<appender-ref ref="fileAppender"></appender-ref>
</root>
</log4j:configuration>
Предварительно в maven прописать каталог resources как ресурсы:
<resources>
<resource>
<directory>src/resources</directory>
</resource>
</resources>
Заработал вывод в консоль после того как исправил помник:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.28</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.28</version>
</dependency>