2015-09-07 117 views
1

我试图通过AWS Java SDK与Linux上的Tomcat 8禁用请求级别日志记录。这是一个新的tomcat 8安装,我的测试servlet(它的工作)只是打印到标准输出,默认为/var/log/tomcat8/catalina.out如何使用AWS Java SDK禁用请求级日志记录?

我想通过AWS SDK禁用像- Sending Request...请求级记录,所以我尝试添加在/usr/share/tomcat8/conf/logging.properties下到我的日志记录配置:

log4j.logger.com.amazonaws = WARN 
log4j.logger.org.apache.http.wire = WARN 
log4j.logger.com.amazonaws.request = WARN 

...像docs say here,但它仍在做详细的日志记录。我的Tomcat启动信息显示,正在使用的logging.properties文件:

org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/share/tomcat8/conf/logging.properties 

还有什么我需要做什么?

回答

1

“logging.properties”是Java Util Logging(JUL)的配置文件,witch与Log4J是不同的框架。您可以尝试在类路径的根目录中创建Log4J配置文件“log4j.properties”,并插入上面的代码:“log4j.logger.com.amazonaws = WARN”。

+0

完美,谢谢。 – RTF

+0

有用于配置log4j的文档https://docs.aws.amazon.com/java-sdk/latest/developer-guide/java-dg-logging.html。你也必须设置'log4j.logger.org.apache.http.wire = WARN'。 – shobull

1

马克

也许我应该更清楚了:log4j的,不需要在SDK中控制日志。 SDK使用Apache Commons Logging,正如我已经提到的那样,这是一个行业标准。 Commons Logging只是一个基础日志实施的调度层,因此客户可以插入任何兼容的日志框架并使其工作。我在我的例子中使用了log4j,因为它是最常用的,所以最有可能在这个公共论坛中有所帮助。

如果您的日志记录系统与Commons Logging协同工作,那么您已经知道如何配置它。如果没有,那么可以通过将相应的命令行参数传递给JVM来完全关闭Commons Logging,就像我上面的响应一样。如果由于某种原因,你不能改变Java命令行应用程序,那么你可以使用下面的代码片段中的一个主类,以同样的效果:

static { 
     System.setProperty("org.apache.commons.logging.Log", 
         "org.apache.commons.logging.impl.NoOpLog"); 
    } 

再次,要绝对明确:SDK不需要log4j。不幸的是,因为所有的底层日志实现配置不同,这意味着我们不能告诉你如何配置日志记录,除非我们知道你的应用程序使用哪个实现。出于这个原因,我们经常在我们的例子中使用log4j语法。

有关Apache的百科全书登录如何工作,以及如何配置它的更多信息,请阅读:

http://commons.apache.org/logging/guide.html