簡體   English   中英

記錄器 java 沒有通過 System.out

[英]logger java is not going through System.out

我有一個使用 java api 的記錄器,在單元測試中,我將標准的輸出設置為我的輸出,並檢查是否正在打印消息(日志、異常等...)我的代碼是

    ByteArrayOutputStream mockedOutput = new ByteArrayOutputStream();
    System.setOut(new PrintStream(mockedOutput));
    System.setErr(new PrintStream(mockedOutput));

但是日志沒有在輸出中被捕獲,如果我檢查控制台(eclipse,或通過 maven 運行),日志在那里意味着沒有通過我的輸出。 如果替換 system.out.print 的日志,那么它就可以工作,我也可以看到異常等等,只有使用 java API 記錄的內容不會在 mockedOutput 中捕獲。

有沒有人有想法?,我的線索不多了。

包含更多代碼和 logging.properties 文件,因為輸出取決於您的記錄器和處理程序的創建時間。

如果您依賴 ConsoleHandler 寫入流,則必須延遲記錄器的創建。 這是因為ConsoleHandler 將捕獲 System.err 的快照

在沒有看到您的代碼的情況下,您需要確保:

  1. 您延遲了 ConsoleHandler 的創建,直到您重新映射 System.err。
  2. 如果您依賴根記錄器,則延遲構建您重新映射 System.err 的根記錄器實用程序。 這是通過在重新映射 System.err 之后調用Logger.getLogger("")完成的。
  3. 不要讓您的記錄器意外收集垃圾

暫無
暫無

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

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