我有一个运行着几个守护程序(作为systemd单元)的系统,该守护程序将日志信息输出到Arch Linux中的日志。我想将其中一些单位文件的日志输出定向到我指定其位置的单独的文本文件中,实质上是为单位子集创建一个日志文件。我该怎么做呢?
我有一个运行着几个守护程序(作为systemd单元)的系统,该守护程序将日志信息输出到Arch Linux中的日志。我想将其中一些单位文件的日志输出定向到我指定其位置的单独的文本文件中,实质上是为单位子集创建一个日志文件。我该怎么做呢?
Answers:
似乎这是不可能的,并且上游不希望这样做(将stdout / stderr重定向到单个文件),请参见例如http://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html-阅读全文以了解更多上下文信息这是如何工作的。
您可以做的是登录到syslog,然后以这种方式写入单个文件。或反之,如果该单元调用某个可以自己编写日志的程序,则可以使用该程序将日志记录到文件中。
您可能还想看看systemd服务的View stdout / stderr
您当前可以使用当前设置执行的操作是
journalctl -u yourunitname > yourlogfile_for_yourunitname
,将单位“ yourunitname”的整个日志输出定向到一个文件中。
在后一部分,您还应该查看来自上述邮件列表线程的Lennart提示:
在最新的systemd版本中,类似这样的东西
systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.service
应该创建一个非常简单的输出,其中仅包含实际消息,而没有其他内容。您甚至可以传递“ -f”并使之生效。”
编辑:
实际上,对于较新的systemd版本,该命令仅是journalctl,据我所知,上述长命令与之相同journalctl -u yourunitname
,您也可以-f
在那里“跟随”输出(如tailf或tail -f)。