2015-09-15 42 views
0

我的應用程序使用log4cplus進行日誌記錄。PowerShell日誌過濾器功能緩衝輸出

當我在CMD或PowerShell中啓動它時,可以逐行記錄。

我決定在PS中加入小的過濾功能,使輸出變得豐富多彩。

# Simplified version 
function ColoredOutput 
{ 
    process { Write-Host $_ -ForegroundColor Yellow } 
} 

這之後我啓動的應用程序如下:

myapp.exe | ColoredOutput 

的問題是,現在我得到在同一時間登錄塊約幾個消息的消息,而不是一行行。我無法理解什麼觸發了實際的輸出。

在我看來像一些輸出緩衝。有任何想法嗎?

UPD:這個問題似乎與在C++而不是記錄器中使用簡單的std :: cout記錄的一些消息有關。

UPD2:我開始認爲它實際上是觸發輸出的C++。正如你從下面的圖片中看到的那樣,最後一條消息是來自std :: cout,以前的所有消息 - 來自log4cplus。 example output

+0

我無法重現(V4,使用ping -t)。 – mjolinor

+0

你能告訴我們一些輸出的樣子嗎?我不知道該程序正在使用什麼流...也許你需要把所有的標準輸出。 – Matt

+0

@Matt:請參閱原始問題中的UPD2。 – Werolik

回答

2

找到它。看來,確實是log4cplus,這是緩衝。 添加下面的配置幫助:

log4cplus.appender.STDOUT.ImmediateFlush=true 

感謝感興趣,抱歉打擾。