簡體   English   中英

如何以同步方式為不同的Interleaved線程進行Java日志記錄?

[英]How to do Java Logging for different Interleaved threads in synchronous way?

我想用例子直接解釋我的問題。 如果還需要其他信息,請添加評論。

我有一個小應用程序(SpringBoot + Java),它使用ThreadPool來執行幾個任務。 所以假設我的池中有2個線程。 現在,log4j用於記錄。 它將所有線程的日志寫入單個文件,並且所有2個線程的日志數據都是交錯的。

所以每個線程都像 -

[Thread-1][08:15:00] entered into application
[Thread-1][08:15:00] entered method A
[Thread-1][08:15:05] exit method A
[Thread-1][08:15:10] entered method B
[Thread-1][08:15:15] exit method B
[Thread-1][08:15:30] exit from application

[Thread-2][08:15:01] entered into application
[Thread-2][08:15:01] entered method A
[Thread-2][08:15:04] exit method A
[Thread-2][08:15:11] entered method B
[Thread-2][08:15:12] exit method B
[Thread-2][08:15:22] exit from application

但是我的日志文件在時間戳的基礎上有這些條目 -

[Thread-1][08:15:00] entered into application
[Thread-1][08:15:00] entered method A
[Thread-2][08:15:01] entered into application
[Thread-2][08:15:01] entered method A
[Thread-2][08:15:04] exit method A
[Thread-1][08:15:05] exit method A
[Thread-1][08:15:10] entered method B
[Thread-2][08:15:11] entered method B
[Thread-2][08:15:12] exit method B
[Thread-2][08:15:14] exit from application
[Thread-1][08:15:15] exit method B
[Thread-1][08:15:30] exit from application

我希望我的日志文件打印線程執行,而不是時間戳明智。 我希望我的日志文件在其他線程啟動之前完全打印每個線程。 我怎么能實現這一點。

我已經搜索並發現下面的文章是最接近的,但我不想要不同的日志文件 - 如何在不同的日志文件中記錄多個線程?

我需要將所有日志數據輸出到按線程名稱分組的單個日志文件中,並按線程開始時間排序。

我想在控制台appender中分離日志是行不通的我建議為每個Thread定義單獨的FileAppenders就像它在這里描述的那樣

暫無
暫無

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

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