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