Linux stdout 在哪里写入日志以及分配给它多少内存

标签 linux stdout filebeat

我正在使用 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/

相关文章:

在/proc下创建文件并使用它

linux - 我可以为 Ubuntu 上的应用程序中的菜单项分配自定义键盘快捷键吗?

bash - 在 bash 脚本中测试 stdout 和 stderr 重定向

logstash - Filebeat - 从远程目录读取

elasticsearch - Filebeat 7.9.3更改索引不起作用,并且始终创建默认的Filebeat-7.9.3-2020.11.04-000001

node.js - Windows 域中的 Linux 服务器上使用 NodeJS 进行 SSO

c++ - 如何为 Linux 部署 Qt 应用程序

javascript - 有没有办法从 child_process.execFile 生成的 python 脚本中获取 'live' 输出行,而无需每次都刷新 stdout?

shell - stdout 是否存储在文件系统或内存中的某个位置?

elasticsearch - 使用filebeat、logstash和elasticsearch向kibana发送json格式日志?