0

我的应用程序使用 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。 示例输出

4

1 回答 1

2

找到了。正如它出现的那样,它确实是正在缓冲的 log4cplus。将以下内容添加到配置有助于:

log4cplus.appender.STDOUT.ImmediateFlush=true

感谢有兴趣的,打扰了。

于 2015-09-15T14:00:30.627 回答