簡體   English   中英

帶有 jdk14 的 slf4j 正在將 INFO 消息記錄到 stderr

[英]slf4j with jdk14 is logging INFO messages to stderr

我正在嘗試使用 jdk14 來掌握 slf4j。 奇怪的是,一些 INFO 級別的消息出現在 stderr 中。

我正在使用以下命令執行 jar

java -Djava.util.logging.config.file=./src/main/resources/logging.properties -jar ./target/adwordsConnectorV2-account.jar

我確信它們是 INFO 級別,因為當我將屬性java.util.logging.ConsoleHandler.level設置為ALL時,消息會顯示,但是當它設置為SEVERE時,它們不會顯示。

請有人告訴我為什么他們可能會登錄到 stderr 而不是 stdout?

謝謝


com.google.api-ads

ads-lib = 1.30.0
adwords-axis = 1.30.0

org.slf4j

slf4j-api = 1.7.7
slf4j-jdk14 = 1.7.7

這是記錄到 stderr 的內容:

Jul 18, 2014 3:42:11 AM com.google.api.ads.adwords.lib.utils.logging.ReportServiceLogger log
INFO: Request made: POST https://adwords.google.com//api/adwords/reportdownload/v201406


Jul 18, 2014 3:42:11 AM com.google.api.ads.adwords.lib.utils.logging.ReportServiceLogger log
INFO: accept-encoding: [gzip]
authorization: REDACTED
user-agent: [fetch-report (AwApi-Java, Common-Java/1.30.0, Java/1.6.0_31, maven)]
developertoken: REDACTED
clientcustomerid: XXXX


Parameters:
__rdxml: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><reportDefinition xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201406"><ns2:selector><ns2:fields>Date</ns2:fields><ns2:fields>AccountDescriptiveName</ns2:fields><ns2:fields>ExternalCustomerId</ns2:fields><ns2:fields>AccountCurrencyCode</ns2:fields><ns2:fields>Device</ns2:fields><ns2:fields>AverageCpc</ns2:fields><ns2:fields>AverageCpm</ns2:fields><ns2:fields>AveragePosition</ns2:fields><ns2:fields>Impressions</ns2:fields><ns2:fields>Clicks</ns2:fields><ns2:fields>Cost</ns2:fields><ns2:fields>Ctr</ns2:fields><ns2:fields>ConversionsManyPerClick</ns2:fields><ns2:dateRange><ns2:min>20140101</ns2:min><ns2:max>20141231</ns2:max></ns2:dateRange></ns2:selector><ns2:reportName>Account performance report</ns2:reportName><ns2:reportType>ACCOUNT_PERFORMANCE_REPORT</ns2:reportType><ns2:dateRangeType>CUSTOM_DATE</ns2:dateRangeType><ns2:downloadFormat>CSV</ns2:downloadFormat><ns2:includeZeroImpressions>false</ns
 2:includeZeroImpressions></reportDefinition>


Jul 18, 2014 3:42:11 AM com.google.api.ads.adwords.lib.utils.logging.ReportServiceLogger log
INFO: Response received with status code 200 and message: OK

編輯:這是 logging.properties 中的內容:

# from http://stackoverflow.com/questions/5416769/how-to-configure-the-jdk14-loggings-pattern
handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format = [%1$tc] %4$s: %2$s - %5$s %6$s%n

我在 stderr 上看到了消息,因為這是 ConsoleHandler 使用的目的地 - 請參閱 ConsoleHandler javadoc here

以下帖子顯示了如何重定向輸出,但這是一種避免問題如何將 java 日志控制台輸出從 std err 更改為 std out?

我決定按照 google adwords 團隊的建議改用 log4j

添加新依賴項后,我開始遇到同樣的問題(沒有代碼更改,屬性文件沒有更改)。

這個新的依賴項會傳遞到sfl4j中,並在 pom 文件中添加排除項修復了問題,如下所示:

    <dependency>
      <groupId>org.apache.datasketches</groupId>
      <artifactId>datasketches-hive</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-simple</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM