GlassFish 4,没有日志框架依赖项在 pom.xml 中工作
GlassFish 4, no logging framework dependencies is working in pom.xml
每个 spring mvc 项目库都使用自己的日志框架,即。 log4j、slf4j、logback、jboss-logging、commons-logging 等,如下所示与 Maven 集成。
pom.xml
<log4j.version>1.6.5</log4j.version>
<slf4j.version>1.7.16</slf4j.version>
<slf4j.log4j13.version>1.0.1</slf4j.log4j13.version>
<logback.version>1.1.2</logback.version>
<jboss.logging.version>3.3.0.Final</jboss.logging.version>
<commons.logging.version>1.2</commons.logging.version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.5</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-jakarta-log4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j13</artifactId>
<version>${slf4j.log4j13.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
</dependencies>
这是 运行 项目
时显示的严重错误
SLF4J:Class路径包含多个 SLF4J 绑定。
SLF4J:在 [jar:file:/WEB-INF/lib/log4j-slf4j-impl-2.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定
SLF4J:在 [jar:file:/WEB-INF/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定
SLF4J:在 [jar:file:/WEB-INF/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定
SLF4J:在 [jar:file:/WEB-INF/lib/slf4j-log4j13-1.0.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定
SLF4J:实际绑定的类型为 [org.apache.logging.slf4j.Log4jLoggerFactory]
错误 StatusLogger 未找到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台。
要包含的项目需要每个日志记录框架。但是,在 运行 项目没有错误的情况下,是否有任何技巧可以保留外部库所需的日志记录框架。
通常您会有多个组件,每个组件使用不同的日志记录 API。您通常想要做的是将每一个与特定的日志记录实现绑定。例如,Spring 使用 commons-logging,因此要将其路由到 Log4j 2,您将包含 log4j-jcl jar。同样,要将 SLF4J 路由到 Log4j 2,您将包含 log4j-slf4j-impl jar。您不会包含任何 Logback jar,因为它是另一个日志记录实现。在上面的例子中,你得到的错误表明你有 SLF4J 的 Log4j 2 SLF4J 绑定、logback、log4j1.2 绑定和 log4j 1.3 绑定。您应该只有 1 个,因此请移除您不想使用的罐子。
请注意,SLF4J 告诉您它选择了 Log4j 2 绑定,但随后您收到 Log4j 2 的错误消息,通知您它找不到配置文件 - 通常是 log4j2.xml。
每个 spring mvc 项目库都使用自己的日志框架,即。 log4j、slf4j、logback、jboss-logging、commons-logging 等,如下所示与 Maven 集成。
pom.xml
<log4j.version>1.6.5</log4j.version>
<slf4j.version>1.7.16</slf4j.version>
<slf4j.log4j13.version>1.0.1</slf4j.log4j13.version>
<logback.version>1.1.2</logback.version>
<jboss.logging.version>3.3.0.Final</jboss.logging.version>
<commons.logging.version>1.2</commons.logging.version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.5</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-jakarta-log4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j13</artifactId>
<version>${slf4j.log4j13.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
</dependencies>
这是 运行 项目
时显示的严重错误SLF4J:Class路径包含多个 SLF4J 绑定。
SLF4J:在 [jar:file:/WEB-INF/lib/log4j-slf4j-impl-2.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定SLF4J:在 [jar:file:/WEB-INF/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定SLF4J:在 [jar:file:/WEB-INF/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定SLF4J:在 [jar:file:/WEB-INF/lib/slf4j-log4j13-1.0.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
中找到绑定SLF4J:实际绑定的类型为 [org.apache.logging.slf4j.Log4jLoggerFactory]
错误 StatusLogger 未找到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台。
要包含的项目需要每个日志记录框架。但是,在 运行 项目没有错误的情况下,是否有任何技巧可以保留外部库所需的日志记录框架。
通常您会有多个组件,每个组件使用不同的日志记录 API。您通常想要做的是将每一个与特定的日志记录实现绑定。例如,Spring 使用 commons-logging,因此要将其路由到 Log4j 2,您将包含 log4j-jcl jar。同样,要将 SLF4J 路由到 Log4j 2,您将包含 log4j-slf4j-impl jar。您不会包含任何 Logback jar,因为它是另一个日志记录实现。在上面的例子中,你得到的错误表明你有 SLF4J 的 Log4j 2 SLF4J 绑定、logback、log4j1.2 绑定和 log4j 1.3 绑定。您应该只有 1 个,因此请移除您不想使用的罐子。
请注意,SLF4J 告诉您它选择了 Log4j 2 绑定,但随后您收到 Log4j 2 的错误消息,通知您它找不到配置文件 - 通常是 log4j2.xml。