【问题标题】:How to send the syslog output to stdout? [duplicate]如何将系统日志输出发送到标准输出? [复制]
【发布时间】:2014-04-10 17:47:15
【问题描述】:

我在 myprograme 中使用 syslog 来生成日志消息。

有没有办法将我的程序的 syslog 输出发送到标准输出?

我不想使用tail命令查看我的程序日志,我想直接在控制台上查看

【问题讨论】:

  • 这是配置syslog 守护进程的问题。但是,您无法真正预测“标准输出”在任何给定上下文中的含义,因此在文件上运行 tail 可能是最简单的。例如,如果您有 root 登录到 /dev/ttyS0 并且您自己登录到 /dev/pts/17/dev/pts/42,它应该写入所有三个,还是只写入一个子集?如果其中一个是screen 会话或其他东西怎么办?关键的互动对话?有很多并发症。

标签: c linux bash shell syslog


【解决方案1】:

您需要编辑您的/etc/syslog.conf 文件。

根据您发送到 syslogd 的具体工具,您需要添加如下一行:

<facility>.debug    /dev/console

请务必查看man 5 syslog.conf 了解所有详细信息。

【讨论】:

  • 我需要在 docker 容器 (php:7.4-fpm) 中运行 cron,这似乎只记录到 rsyslog (/dev/log) 之外的任何内容。对我有用的是*.* /dev/stdout/dev/console 不存在,指定/dev/tty 没有区别)。
【解决方案2】:

要连续将文件输出克隆到控制台/shell,请在该控制台/shell 中使用以下命令:

tail -f <logfile> &

-f 使 tail 继续打印写入文件的任何内容

&amp; 将进程置于后台,以便您可以在窗口中执行其他操作。如果您希望控制台在您按下 ctrl+c 之前阻止,请省略 &amp;

【讨论】:

  • 嗨 Klas,如果我正在使用 Eclipse 调试应用程序,我可以使用您建议的方法将输出定向到标准输出,还是需要以其他方式进行?谢谢。
  • 如果您的应用程序将日志记录到文件中,您可以随时使用我建议的方法。只需确保日志函数刷新输出缓冲区,因为文件 I/O 通常是块缓冲的(而不是像控制台 I/O 那样的行缓冲)。
猜你喜欢
  • 2010-10-14
  • 2016-11-14
  • 1970-01-01
  • 2020-07-10
  • 2022-01-21
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
相关资源
最近更新 更多