Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从第三方框架中过滤掉log4j消息?_Java_Hibernate_Spring_Log4j - Fatal编程技术网

Java 从第三方框架中过滤掉log4j消息?

Java 从第三方框架中过滤掉log4j消息?,java,hibernate,spring,log4j,Java,Hibernate,Spring,Log4j,如何过滤来自外部第三方框架的日志消息?我使用的是Hibernate和Spring框架,我希望抑制日志,以便只显示我的log4j日志 不要在log4j.properties中添加这些包。例如,您的属性文件中必须有这个For Spring。如果您有如下条目(任何以org.springframework开头的条目),请将其删除。hibernate也需要这样做 #Logs the SQL from Spring log4j.logger.org.springframework.jdbc.core.Jdb

如何过滤来自外部第三方框架的日志消息?我使用的是Hibernate和Spring框架,我希望抑制日志,以便只显示我的log4j日志

不要在log4j.properties中添加这些包。例如,您的属性文件中必须有这个For Spring。如果您有如下条目(任何以org.springframework开头的条目),请将其删除。hibernate也需要这样做

#Logs the SQL from Spring
log4j.logger.org.springframework.jdbc.core.JdbcTemplate=ERROR
#Logs the SQL parameters from Spring
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=ERROR
正如前面提到的,您还应该设置以下内容。我忘了提这个

log4j.rootLogger=FATAL  
or   
log4j.rootLogger=ERROR  

在log4j.properties中,可以基于每个记录器定义各个级别:

log4j.logger.<name>=FATAL
log4j.logger.=致命
在log4j.xml中,语法是

<logger name="<name>">
  <level value="fatal"/> 
</logger>


通常是完整的限定类名。您可能希望使用WARN或ERROR而不是FATAL

您可以通过更改log4j.properties/log4j.xml文件中的记录器级别来实现

如果要从包中筛选日志,但保留日志记录器配置以供以后使用,则需要设置日志记录器的
。 您还可以将其设置为最高级别,以便仅在出现错误或致命问题时进行日志记录

应将以下条目添加到log4j.xml以关闭hibernate和springframework包的日志记录:

<logger name="org.springframework">
    <level value="off"/>
</logger>
<logger name="org.hibernate">
    <level value="off"/>
</logger>

在我的log4j.properties文件中,我将根记录器日志记录级别设置为错误。然后,对于我特别想要记录的包,比如我的应用程序代码,我将记录级别设置为INFO或DEBUG

log4j.rootLogger=ERROR, stdout
log4j.logger.com.initech.tps=DEBUG
log4j.logger.org.hibernate.SQL=INFO
我看到一些同事将root日志设置得很低,然后列出了他们不想看到的所有内容,这在我看来似乎太落后了。我宁愿列出我想记录的内容,也不愿列出我不想记录的所有内容


顺便说一句,完全为第三方组件关闭登录对我来说似乎是个坏主意。例如,Spring比较嘈杂,对我确实不需要知道的东西使用WARN,但如果它记录了我想看到的东西的错误条目。

则相反。根记录器通常启用所有功能,然后需要关闭不需要的功能。因此,=错误,所以所有较低级别的内容都不会显示。@Thorbjørn Ravn Andersen:请阅读我所说的内容。我告诉OP如果他有这些条目,就把它们拿出来,因为他不想看到来自这些包的任何消息。将类似的行放入,将阻止记录这些包的调试或信息消息,即使为rootLogger.ok定义了debug/info,那么你是说如果我有log4j.rootLogger=FATAL,并且我的log4j.properties中没有列出任何spring包,它仍然会显示来自spring的消息?只要确保我自己清楚。所以可以为父包设置level off,就像在本例中一样,如果我不希望从org.springframework开始的所有包中都有日志,我会将其level设置为off。