代码之家  ›  专栏  ›  技术社区  ›  walters

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

  •  30
  • walters  · 技术社区  · 15 年前

    4 回复  |  直到 15 年前
        1
  •  34
  •   Nathan Hughes    15 年前

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

    log4j.rootLogger=ERROR, stdout
    log4j.logger.com.initech.tps=DEBUG
    log4j.logger.org.hibernate.SQL=INFO
    

    我看到一些同事把根日志记录设置得很低,最后却列出了他们不想看到的所有内容,这在我看来似乎很落后。我宁愿列出我想记录的内容,也不愿列出所有我不想记录的内容。

    顺便说一句,完全关闭第三方组件的登录对我来说似乎是个坏主意。例如,Spring的噪音相对较大,它使用WARN来表示我确实不需要知道的内容,但是如果它记录了一个错误条目来表示我想看到的内容,它就会发出警告。

        2
  •  15
  •   YoK    15 年前

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

    <level value="off"/> 如果您想从包中筛选日志,但保留日志配置以供以后使用。 您还可以将其设置为最高级别,以便仅在出现错误或致命问题时进行日志记录。

    <logger name="org.springframework">
        <level value="off"/>
    </logger>
    <logger name="org.hibernate">
        <level value="off"/>
    </logger>
    
        3
  •  3
  •   Hendrik Brummermann    15 年前

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

    log4j.logger.<name>=FATAL
    

    在log4j.xml中,语法是

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

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

        4
  •  2
  •   CoolBeans Jake    15 年前

    只是不要在log4j.properties中添加这些包。例如,您的属性文件中必须有这个For Spring。如果你有下面这样的条目(任何以组织架构). 冬眠也需要这样做。

    #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