代码之家  ›  专栏  ›  技术社区  ›  Ryan Elkins

如何使用log4j更改包的日志级别?

  •  53
  • Ryan Elkins  · 技术社区  · 15 年前

    我遇到了以下错误:

    http://issues.apache.org/jira/browse/AXIS2-4363

    其说明如下:

    此错误仅在日志级别时发生 对于org.apache.axiom是debug,所以 解决方法是设置日志级别> 调试。

    我的问题是我该怎么做?我一直在搜索我的目录中的属性文件或其他东西,我一直在寻找是否可以在代码中设置一些东西,但我真的不知道我在做什么。我正在我的桌面上运行一个控制台应用程序,同时尝试让它工作。

    更新1:我注意到我的axis2目录在根目录中有自己的log4j.properties文件。这是否被安全地忽略,或者是解决方案的一部分(或者是问题的一部分)?

    更新2:根级别log4j.properties文件设置不正确。现在看起来是这样的:

    log4j.rootLogger=DEBUG, R 
    log4j.logger.org.apache.axiom=WARN
    log4j.appender.R=org.apache.log4j.RollingFileAppender 
    log4j.appender.R.MaxFileSize=10MB 
    log4j.appender.R.MaxBackupIndex=10 
    log4j.appender.R.layout=org.apache.log4j.PatternLayout 
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
    

    但这显然是错误的,因为此代码返回“日志级别为空”:

    System.out.println("Log level is " + logger.getLevel());
    

    目前,我正在用代码设置日志级别

    Logger logger = Logger.getLogger("org.apache.axiom");
    logger.setLevel(Level.WARN);
    
    5 回复  |  直到 7 年前
        1
  •  55
  •   Benjamin Cox    15 年前

    你在使用哪个应用服务器?每一个都将其日志配置放在不同的地方,尽管现在大多数情况下使用公共日志作为围绕log4j或java.util.logging的包装。

    以Tomcat为例, this document 解释使用任一选项配置日志记录的选项。无论哪种情况,您都需要找到或创建一个配置文件,该文件定义每个包和日志记录系统将输出日志信息的每个位置的日志级别(通常是控制台、文件或数据库)。

    在log4j的情况下,这将是log4j.properties文件,如果您按照上面链接中的说明操作,您的文件将开始看起来像:

    log4j.rootLogger=DEBUG, R 
    log4j.appender.R=org.apache.log4j.RollingFileAppender 
    log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
    log4j.appender.R.MaxFileSize=10MB 
    log4j.appender.R.MaxBackupIndex=10 
    log4j.appender.R.layout=org.apache.log4j.PatternLayout 
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
    

    最简单的方法是更改行:

    log4j.rootLogger=DEBUG, R
    

    类似于:

    log4j.rootLogger=WARN, R
    

    但是,如果您仍然希望从自己的类中输出自己的调试级别,请添加一行代码:

    log4j.category.com.mypackage=DEBUG
    

    读一点关于 Log4J Commons-Logging 会帮助你理解这一切。

        2
  •  7
  •   ian_scho    14 年前

    我今天遇到了同样的问题,瑞安。

    在我的 SRC (或您的根目录)目录,我的 log4j.属性 文件现在添加了以下内容

    # https://issues.apache.org/jira/browse/AXIS2-4363
    log4j.category.org.apache.axiom=WARN
    

    本杰明,谢谢你提醒我怎么做。

        3
  •  3
  •   msangel    12 年前

    我的工作:

    log4j.logger.org.hibernate.type=trace
    

    也可以尝试:

    log4j.category.org.hibernate.type=trace
    
        4
  •  2
  •   kaza    7 年前

    我刚刚遇到了这个问题,甚至在阅读了上面的所有内容之后,我都无法弄清到底出了什么问题。我所做的是

    1. 将根记录器级别设置为警告
    2. 将包日志级别设置为调试

    每个日志记录实现都有自己的方式,可以通过属性或代码进行设置(这方面有很多帮助)

    不管以上这些,我都不会在控制台或日志文件中获取日志。我忽略了以下几点…


    enter image description here


    我所做的上述杂耍只是控制日志的生产(在根/包/类等),上面图片中红线的左边。但我并没有改变显示/消耗相同日志的方式,上图中红线右侧。处理程序(消耗)通常默认为INFO,因此您宝贵的调试语句不会通过。消耗/显示是通过设置处理程序(consolehandler/filehandler等)的日志级别来控制的,因此我继续进行,并将所有处理程序的日志级别设置为“最佳”,所有操作都正常。

    这一点在任何地方都没有以精确的方式阐明。

    我希望有人会抓耳挠腮,想一想为什么房产不起作用,会发现这有点帮助。

        5
  •  0
  •   James Armstrong    9 年前

    设置系统属性log4j.debug=true。然后,您可以确定配置运行的位置。