У меня есть проект с spring web mvc и я использую Log4J
. Но одна библиотека (PDFBox / openhtml2pdf) использует протоколирование Apache Commons. Я хочу отключить его (или, лучше, сузить до уровня журнала сервера). Как написано здесь и здесь Я должен поставить
java.util.logging.Logger.getLogger("org.apache.pdfbox")
.setLevel(java.util.logging.Level.OFF);
где-то в главном классе (основная функция или статический блок инициализатора). К сожалению, я понятия не имею, каков мой основной класс (обязательно ли у меня один?). Не существует MainClass или начального класса или чего-то определенного в pom.xml
. Так, где я должен поместить строку в проект Spring Web Mvc, чтобы он выполнялся до того, как все запустится?
- Изменить:
Другой подход, который я попробовал, состоит в том, чтобы исключить ведение журнала в общем виде в pom-xml
<dependency>
<!-- Required for PDF export. -->
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-pdfbox</artifactId>
<version>${openhtml-version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Но это не помогло.
- Изменить 2:
<dependency>
<!-- Required for PDF export. -->
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-pdfbox</artifactId>
<version>${openhtml-version}</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>${pdfbox-version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
и
<openhtml-version>0.0.1-RC12</openhtml-version>
<pdfbox-version>2.0.8</pdfbox-version>
Как мы видим здесь , моя версия opnehtml2pdf поставляется с версией pdfbox 2.0.8.
- Изменить 3
Я использую Spring Web MVC, а не Spring Boot. Я запускаю свое приложение с
mvn tomcat7:run -f pom.xml
но регистрация особенно раздражает при тестировании с:
mvn -Dtest=TestClass test
Вот некоторые части моего pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>..</groupId>
<artifactId>..</artifactId>
<name>..</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java-version>1.8</java-version>
<org.springframework-version>4.3.4.RELEASE</org.springframework-version>
<org.springframework.security-version>4.2.0.RELEASE</org.springframework.security-version>
...
<openhtml-version>0.0.1-RC12</openhtml-version>
<jsoup-version>1.11.2</jsoup-version>
<pdfbox-version>2.0.8</pdfbox-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>but the errors but
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
...
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j-version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j-version}</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
...
<dependency>
<!-- Required for PDF export. -->
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-pdfbox</artifactId>
<version>${openhtml-version}</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>${pdfbox-version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
...
</dependencies>
<repositories>
<!-- maven central repo -->
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
</repository>
<!-- spring main repo -->
<repository>
<id>springsource-repo</id>
<name>SpringSource Repository</name>
<url>http://repo.spring.io/release</url>
</repository>
<!-- For testing against latest Spring snapshots -->
<!-- <repository> <id>org.springframework.maven.snapshot</id> <name>Spring
Maven Snapshot Repository</name> <url>http://maven.springframework.org/snapshot</url>
<releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled>
</snapshots> </repository> -->
<!-- For developing against latest Spring milestones -->
<!-- <repository> <id>org.springframework.maven.milestone</id> <name>Spring
Maven Milestone Repository</name> <url>http://maven.springframework.org/milestone</url>
<snapshots> <enabled>false</enabled> </snapshots> </repository> -->
<!-- Hibernate -->
<repository>
<id>org.hibernate</id>
<name>Hibernate Repository</name>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<!-- MySQL Connector -->
<repository>
<id>mysql</id>
<name>MySQL Connector</name>
<url>http://mvnrepository.com/artifact/mysql/mysql-connector-java/</url>
</repository>
<!-- jitpack.io for pfdbox-layout -->
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-version}</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-version}</version>
<configuration>
<warName>data</warName>
</configuration>
<executions>
<execution>
<id>package</id>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-version}</version>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>${aspectj-maven-version}</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<complianceLevel>${java-version}</complianceLevel>
<verbose>false</verbose>
<Xlint>ignore</Xlint>
<showWeaveInfo>false</showWeaveInfo>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- same version as failsafe plugin -->
<version>${maven-failsafe-version}</version>
<configuration>
<junitArtifactName>junit:junit</junitArtifactName>
<includes>
<include>**/Test*.java</include>
</includes>
<excludes>
<exclude>**/ITest*.java</exclude>
<exclude>**/*_Roo_*</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-version}</version>
<configuration>
<includes>
<include>**/ITest*.java</include>
</includes>
<excludes>
<exclude>**/Test*.java</exclude>
<exclude>**/*_Roo_*</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${maven-tomcat-version}</version>
<configuration>
<uriEncoding>UTF-8</uriEncoding>
<path>/data</path>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-version}</version>
</plugin>
</plugins>
</reporting>
</project>
Предупреждения, от которых я пытаюсь избавиться, выглядят так:
com.openhtmltopdf.css-parse WARNING:: (/#inline_style_1) Found : where ; or } was expected at line 1. Skipping declaration.
com.openhtmltopdf.load INFO:: TIME: parse stylesheets 131ms
- Изменить 3
Я также пытался с log4j-config, но как уже упоминалось здесь это может не работать:
<logger name="org.apache.pdfbox" level="ERROR"/>
- Изменить 4
Log4J main:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p[%d{DATE}]: %c - %m%n" />
</Console>
<RollingFile name="ROLLING"
fileName="...log"
filePattern="...log">
<PatternLayout pattern="%-5p[%d{DATE}]: %c - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="10240KB" />
</Policies>
<DefaultRolloverStrategy max="5" />
</RollingFile>
... other files ...
</Appenders>
<Loggers>
<logger name="org.springframework.web" level="info" />
<logger name="de.my.package" level="info" />
<logger name="de.my.package.controller" level="info" />
<logger name="de.my.package.service" level="info" />
<logger name="de.my.package.dao" level="info" />
<logger name="de.my.package.service.IIPService" level="off" />
<logger name="org.elasticsearch" level="info" />
<logger name="com.zaxxer.hikari" level="info" />
<Logger name="Profiling" additivity="false">
<AppenderRef ref="..." />
</Logger>
<Logger name="DataIntegrityLogger" additivity="false">
<AppenderRef ref="..." />
</Logger>
<Root level="info">
<AppenderRef ref="ROLLING" />
</Root>
<logger name="org.apache.pdfbox" level="ERROR"/>
</Loggers>
</Configuration>
log4jsonfig в тесте
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p: %c - %m%n" />
</Console>
</Appenders>
<Loggers>
<Root level="info">
</Root>
<logger name="org.apache.pdfbox" level="ERROR"/>
</Loggers>
</Configuration>