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

log4j2未找到1个记录器的附加器

公孙志尚
2023-03-14

我有麻烦配置我的log4j2.xml文件包括Hibernate日志记录。

这是我的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
    <Properties>
        <Property name="logDir" value="${env:MY_APP}/logs"/>
    </Properties>
    <Appenders>
        <RollingFile name="MY_APP" fileName="${logDir}/my_app.log" bufferedIO="true" filePattern="${logDir}/my_app-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="[%t] %d %-5p %x %m%n"/>
            <Policies>
                <OnStartupTriggeringPolicy/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${logDir}" maxDepth="1">
                    <IfFileName glob="my_app-*.log.gz" />
                    <IfLastModified age="31d" />
                </Delete>
            </DefaultRolloverStrategy>
         </RollingFile>
     </Appenders>
     <Loggers>
         <Root level="trace">
             <AppenderRef ref="MY_APP" level="debug"/>
         </Root>
         <Logger name="com.company" level="info"/>
         <Logger name="com.companyName" level="info"/>
         <Logger name="com.companyName.myApp" level="debug"/>
         <Logger name="org.hibernate" level="info"/>
    </Loggers>

在启动我的罐子时,我会将以下内容打印到控制台:

log4j:WARN No appenders could be found for logger(org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我似乎从我的应用程序中获取日志到我的滚动文件中,但我不明白为什么这个hibernate记录器没有使用相同的appender。

非常感谢您的帮助!

共有2个答案

康鹏云
2023-03-14

实际上,控制台显示的事实

log4j:WARN No appenders could be found for logger(org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

指示类路径上仍然存在log4j 1. x jars,并且没有提供log4j 1. x配置。修复方法是将log4j 1. x jar替换为Log4j 2中的log4j-1.2-api jar。

刘野
2023-03-14

我也有类似的问题,但我的问题与我创建的特定类有关,而不是库中的类。但是,我发现错误是专门针对log4j2的,因为我使用了不正确的Logger。

我的代码过去是:

import org.apache.log4j.Logger;

public class SomeClass {
   static Logger logger = Logger.getLogger(SomeClass.class);
}

最终为我工作的是:

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

public class SomeClass {
   static Logger logger = LogManager.getLogger(SomeClass.class.getName());
}

注意:导入中的差异以及记录器是如何“创建”的。

这就是我解决这个错误的方法,但它不在图书馆里。

对我来说,我在我的项目中也有Hibernate,但是没有任何额外的配置,Hibernate会自动记录到我的所有应用程序。他们可能已经在包的更新中修复了这个问题。

建议(如果尚未修复)-可能尝试升级Hibernate的包/库,看看它是否有效。或者,看看您是否可以了解记录器是如何创建的,以便利用它使用的org。阿帕奇。登录中。log4j。记录器而不是组织。阿帕奇。log4j。记录器

 类似资料:
  • 我尝试使用第二个日志文件与我的默认日志文件在servlet我有这个log4j.xml配置。 现在在servlet中,我将记录器设置为: 但在运行时:错误日志。调试(“启动应用程序”);我得到: log4j和log4j.xml在类路径我做错了什么?

  • 问题内容: 我正在尝试在Firefoxdriver上运行Selenium Webdriver代码,但在运行时我遇到了一个例外- 代码是-import org.openqa.selenium。*; 导入org.openqa.selenium.firefox.FirefoxDriver; 问题答案: 实际上,您得到的异常与您在帖子标题中提到的警告无关。 警告 :只是告诉您您没有为硒驱动程序定义任何附加

  • 我已经将log4j放入了buildpath中,但在运行应用程序时会收到以下消息: 这些警告意味着什么?这里的附加符是什么?

  • 问题内容: 我已经将log4j放到了我的构建路径中,但是在运行应用程序时收到以下消息: 这些警告是什么意思?这里的追加器是什么? 问题答案: 这个log4j指南的简短介绍有些陈旧,但仍然有效。 该指南将为你提供有关如何使用记录器和附加器的信息。 为了让你步入正轨,你可以采用两种简单的方法。 首先是将这一行添加到你的main方法中: 第二种方法是将这个标准文件log4j.properties(来自上

  • Log4j2-LogManager。getLogger(“名称”)未找到自定义记录器。 以下所有操作都返回相同的记录器,即此代码所在类的根记录器。我想这些都会有所不同,我会在前3个电话中拿回我的3个定制电话。注意:将创建appender指定的文件,但不会向其发送日志。 我使用以下方法创建自定义记录器: writeXmlConfiguration中的等效XML为: