在Kubernetes中运行Haskell应用程序时没有stdout / stderror输出

问题描述 投票:0回答:1

我遇到一个非常奇怪的问题,当通过Kubernetes运行时,我似乎没有从Haskell应用程序中获得任何stdout / stderr输出。

我正在使用非常基本的putStrLn写入标准输出。

如果我在Kubernetes环境中手动输入容器并通过shell运行应用程序-我会看到预期的输出。

可能是此问题的原因/

haskell kubernetes output-buffering
1个回答
1
投票
通过将缓冲设置为LineBuffering来固定:

import System.IO ... hSetBuffering stdout LineBuffering hSetBuffering stderr LineBuffering

http://hackage.haskell.org/package/base-4.12.0.0/docs/System-IO.html#t:BufferMode

打开句柄时的默认缓冲模式是与实现有关的,可能取决于文件系统对象附在该手柄上。对于大多数实施,物理文件通常将被块缓冲,而终端通常将被行缓冲的。

感谢fp懈怠的Jesse Kempf,向我指出了这一点!
© www.soinside.com 2019 - 2024. All rights reserved.