如何使用 AWS Java SDK 禁用请求级日志记录?
How to disable request-level logging with the AWS Java SDK?
我正在尝试通过 AWS Java SDK 在 Linux 上使用 Tomcat 8 禁用请求级日志记录。这是 tomcat 8 的全新安装,我的测试 servlet(有效)只是打印到标准输出,默认情况下会转到 /var/log/tomcat8/catalina.out
。
我想通过 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
我还需要做什么吗?
"logging.properties" 是 Java Util Logging (JUL) 的配置文件, 是与 Log4J 不同的框架。您可以尝试在类路径 的根目录 中创建一个 Log4J 配置文件“log4j.properties”并插入上面的代码:"log4j.logger.com.amazonaws = WARN".
马克
也许我应该更清楚:不需要 log4j 来控制 SDK 中的日志记录。 SDK 使用 Apache Commons Logging,正如我已经提到的,这是一个行业标准。 Commons Logging 只是底层日志实现的调度层,因此客户可以插入任何兼容的日志框架并让它工作。我在示例中使用了 log4j,因为它是最常用的一种,因此最有可能在此 public 论坛中提供帮助。
如果您的日志系统使用 Commons Logging,那么您已经知道如何配置它了。如果没有,则可以通过将适当的命令行参数传递给 JVM 来完全关闭 Commons Logging,就像我上面的回复一样。如果出于某种原因您无法更改应用程序的 java 命令行,那么您可以在 Main class 中使用以下代码片段以达到相同的效果:
static {
System.setProperty("org.apache.commons.logging.Log",
"org.apache.commons.logging.impl.NoOpLog");
}
再次明确说明:SDK 不需要 log4j。不幸的是,由于所有底层日志实现的配置都不同,这意味着我们无法确切地告诉您如何配置日志记录,除非我们知道您的应用程序使用哪种实现。因此,我们经常在示例中使用 log4j 语法。
有关 Apache Commons Logging 的工作原理和配置方法的更多信息,请阅读:
我遇到了同样的问题,上面的 none 实际上有帮助。
创建一个 logback.xml 并使用以下配置将其放在类路径中修复它:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<logger name="org.apache" level="ERROR" />
<logger name="httpclient" level="ERROR" />
</configuration>
希望对大家有所帮助。
如果您使用的是 Logback,而不是 Log4J 或 Java14 日志记录,请将以下内容放入 logback.xml:
<configuration>
...
<logger name="org.apache.http.wire" level="WARN"/>
<logger name="com.amazonaws" level="WARN"/>
...
指定外部 logback.xml 并使用 Spring 引导
-Dlogging.config="C:\logbacs\logback.xml"
或者如果你不是
-Dlogback.configurationFile=file:///C:/logbacs/logback.xml
Logback configuration via jvm argument
我正在尝试通过 AWS Java SDK 在 Linux 上使用 Tomcat 8 禁用请求级日志记录。这是 tomcat 8 的全新安装,我的测试 servlet(有效)只是打印到标准输出,默认情况下会转到 /var/log/tomcat8/catalina.out
。
我想通过 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
我还需要做什么吗?
"logging.properties" 是 Java Util Logging (JUL) 的配置文件, 是与 Log4J 不同的框架。您可以尝试在类路径 的根目录 中创建一个 Log4J 配置文件“log4j.properties”并插入上面的代码:"log4j.logger.com.amazonaws = WARN".
马克
也许我应该更清楚:不需要 log4j 来控制 SDK 中的日志记录。 SDK 使用 Apache Commons Logging,正如我已经提到的,这是一个行业标准。 Commons Logging 只是底层日志实现的调度层,因此客户可以插入任何兼容的日志框架并让它工作。我在示例中使用了 log4j,因为它是最常用的一种,因此最有可能在此 public 论坛中提供帮助。
如果您的日志系统使用 Commons Logging,那么您已经知道如何配置它了。如果没有,则可以通过将适当的命令行参数传递给 JVM 来完全关闭 Commons Logging,就像我上面的回复一样。如果出于某种原因您无法更改应用程序的 java 命令行,那么您可以在 Main class 中使用以下代码片段以达到相同的效果:
static {
System.setProperty("org.apache.commons.logging.Log",
"org.apache.commons.logging.impl.NoOpLog");
}
再次明确说明:SDK 不需要 log4j。不幸的是,由于所有底层日志实现的配置都不同,这意味着我们无法确切地告诉您如何配置日志记录,除非我们知道您的应用程序使用哪种实现。因此,我们经常在示例中使用 log4j 语法。
有关 Apache Commons Logging 的工作原理和配置方法的更多信息,请阅读:
我遇到了同样的问题,上面的 none 实际上有帮助。
创建一个 logback.xml 并使用以下配置将其放在类路径中修复它:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<logger name="org.apache" level="ERROR" />
<logger name="httpclient" level="ERROR" />
</configuration>
希望对大家有所帮助。
如果您使用的是 Logback,而不是 Log4J 或 Java14 日志记录,请将以下内容放入 logback.xml:
<configuration>
...
<logger name="org.apache.http.wire" level="WARN"/>
<logger name="com.amazonaws" level="WARN"/>
...
指定外部 logback.xml 并使用 Spring 引导
-Dlogging.config="C:\logbacs\logback.xml"
或者如果你不是
-Dlogback.configurationFile=file:///C:/logbacs/logback.xml
Logback configuration via jvm argument