当前位置: 首页 > 知识库问答 >
问题:

GlassFish 4中没有日志框架依赖项在pom.xml中工作

危阳
2023-03-14

每个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:在[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配置文件。使用默认配置:只将错误记录到控制台。

要包含的项目需要每个日志记录框架。但是有没有什么技巧可以在运行项目时保留外部库所需的日志记录框架WOKRs。

共有1个答案

云丰
2023-03-14

通常,您将拥有多个组件,每个组件使用不同的日志记录API。您通常想要做的是用一个特定的日志记录实现绑定其中的每一个。例如,Spring使用commons-logging,因此要将其路由到log4j2,您需要包括log4j-jcl jar。同样,要将SLF4J路由到log4j2,您需要包含log4j-slf4j-impl jar。您不会包含任何日志JAR,因为它是另一个日志实现。在上面的例子中,您得到的错误显示您对SLF4J有log4j2 SLF4J绑定、logback、log4j1.2绑定和log4j1.3绑定。您应该只有其中的1个,所以删除罐子为您不想使用的。

注意,SLF4J告诉您它选择了log4j2绑定,但随后您从log4j2得到一个错误,通知您它找不到配置文件-通常这是log4j2.xml。

 类似资料:
  • 我有一个使用Spring的项目。它使用的是3.1.1版本,但是,由于某些原因,我真的不知道,有些spring工件与两个不同的版本是重复的。我在项目中的所有pom.xml文件中查找这些依赖项。我还使用dependecy插件来找出那些依赖项包含在哪里。 这里有输出的提取 据我所知,这意味着包含在中。 更新:似乎当我评论下一段代码时,罐子不包括在战争中。

  • null 0.0.1-快照 _remote.repositories Maven-metadata-local org-utility-0.0.1-snapshot.jar org-utility-0.0.1-snapshot.pom org-utility-0.0.1-snapshot-jar-with-dependencies.jar 因此,我能够将jar“retrieve org-utili

  • 在不讨论原因的情况下,假设有人想要一个老式的Play Framework web服务,并且不想使用依赖注入,也不想依赖Google的Guice。在玩法2.8.x中还可能吗? 有没有一个简单的方法可以让你不去这里就呆在老学校里? 我承认,但不完全理解https://www.playframework.com/documentation/2.4.x/migration24。我认为我的问题与2.7中删除

  • 我正在使用OSGI felix平台中的SCR框架在我的组件中注入服务引用。除了可选的依赖项外,这非常有效。因此,如果我有两个组件Foo和Bar,其中Foo如下所示: 只要定义Bar接口的捆绑包部署在我的OSGi平台中,这就可以工作。如果平台中没有激活Bar实现组件,SCR仍然很高兴,并将激活我的FoImpl组件,当然无需参考任何Bar实现。但是,如果Bar接口未部署在平台中,SCR在激活组件期间崩

  • 例如:我们有一个health Utility jar,它作为maven依赖项添加到另一个项目a中。我们希望从health Utility jar中获得项目a的maven版本

  • 我有一个Gradle项目,我正在使用maven-publisher插件将我的android库安装到maven本地和maven Repo。 这是有效的,但是生成的pom.xml不包括任何依赖项信息。是否存在包含这些信息的变通方法,或者我被迫返回到maven插件并执行所有需要的手动配置? 通过研究,我意识到我没有告诉发布依赖项在哪里,我只是指定了输出/工件,所以我需要一种方法将这个链接到依赖项,但我还