【问题标题】:Linux stdout where writes the log and how much memory assigned to itLinux stdout 在哪里写入日志以及分配给它的内存量
【发布时间】:2019-11-15 10:51:06
【问题描述】:

我正在使用ConsoleAppender 登录我的Java 应用程序。 ConsoleAppender 写入System.out,在 Linux 的情况下为 stdout

谁能帮我了解stdout 日志的去向以及分配给它的内存量。

我需要知道这一点,因为我所有到 stdout 的日志都没有被 filebeat 挑选到弹性搜索索引中。

【问题讨论】:

    标签: linux stdout filebeat


    【解决方案1】:

    谁能帮我理解标准输出日志的去向

    通常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.txtstdout的内容。

    分配给它的内存是多少。

    您的output.txt 文件会不断增长,直到您的磁盘空间用完为止。您可以使用您的分发日志轮换系统来限制文件的大小。 FreeBSD 使用newlogsys(8)。我确信您选择的 Linux 发行版已经配备了类似的系统。

    【讨论】:

    • stackoverflow.com/users/1414496/joel-bodenmann 在第一种没有发生应用程序日志重定向的情况下,它将进入缓冲区,你能告诉我那个缓冲区的大小是多少。
    • 这取决于实现。您可能会发现这个问题很有帮助:stackoverflow.com/questions/10904067/…
    • 此外,如果您的系统设计依赖于了解这些信息,那么您很可能应该考虑更改您的设计。如我的回答中所述,像stdout 重定向到文件这样简单的事情不仅很容易做到,而且还可以使用底层操作系统和其他相关组件。
    猜你喜欢
    • 2013-11-16
    • 2012-05-21
    • 2016-02-07
    • 2012-06-14
    • 1970-01-01
    • 2021-08-06
    • 2013-07-14
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多