我的应用程序使用 log4cplus 进行日志记录。
当我在 CMD 或 PowerShell 中启动它时,可以逐行记录日志。
我决定在 PS 中添加小过滤功能,以使输出丰富多彩。
# Simplified version
function ColoredOutput
{
process { Write-Host $_ -ForegroundColor Yellow }
}
在此之后,我启动应用程序如下:
myapp.exe | ColoredOutput
问题是现在我一次收到大约几条消息的块日志消息,而不是逐行。我无法理解是什么触发了实际输出。
在我看来,输出的一些缓冲。有任何想法吗?
UPD:问题似乎与使用 C++ 中的简单 std::cout 而不是记录器记录的一些消息有关。
UPD2:我开始认为触发输出的实际上是 C++。从下图中可以看出,最后一条消息来自 std::cout,之前的所有消息都来自 log4cplus。