我正在使用 ConsoleAppender
登录我的 Java 应用程序。
ConsoleAppender
写入 System.out
,在 Linux 中为 stdout
。
有人可以帮助我了解 stdout
日志的去向以及分配给它的内存有多少。
我需要知道这一点,因为 filebeat 没有选择我到 stdout
的所有日志来放入 Elasticsearch 索引。
最佳答案
Can someone help me understanding where does stdout logs go
通常,stdout
只是进入 shell 的缓冲区,该缓冲区通常不会缓冲/记录到任何文件中。我说通常是因为我确信有一些特殊的系统和Linux发行版可以以不同的方式处理事情。
对于其余部分,我假设您使用“通用 Linux 桌面或服务器发行版”。
但是,您可以重定向 stdout
到文件。
我假设您启动的应用程序与此类似:
java -jar myapp.jar
您的应用程序输出到 stdout
,它允许您在终端中查看输出。
在 Linux(我想说的是大多数 Unix 系统)上,您可以简单地将 stdout
(以及可选的 stderr
)重定向到如下文件:
java -jar myapp.jar > output.txt
然后应在您的系统上创建一个名为 output.txt
的文件。
如果您仍然需要“实时用户反馈”,您可以简单地执行类似的操作
tail -f output.txt
将output.txt
的内容连续打印到stdout
。
how much is the memory assigned to it.
您的 output.txt
文件将会不断增长,直到磁盘空间用完为止。您可以使用发行版日志轮换系统来限制文件的大小。 FreeBSD 使用 newlogsys(8) 。我确信您选择的 Linux 发行版已经配备了类似的系统。
关于Linux stdout 在哪里写入日志以及分配给它多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58875451/