0

问题:

我试图让系统日志出现在 Jenkins 构建日志(控制台)中。我确信必须有一种方法可以通知 Jenkins 上的工作以从更多来源检索日志消息,而不仅仅是执行 shell。

背景:

我的作业配置了一些远程客户端,然后使用某些命令对它们进行操作,这些客户端将它们的 syslog 消息发送到 Jenkins 机器。当我在 Jenkins 机器上查看 syslog 时,我可以手动查看这些日志,但它们不会出现在 Jenkins Job 的控制台输出中。

我在寻找什么:

理想情况下,我需要一个足够强大的解决方案来支持具有多个客户端的多个作业,以便每个客户端日志将仅发送到相关作业的构建日志(控制台)。

但我会接受任何可以指示如何为 Jenkins Job 构建日志(控制台)包含更多源的解决方案。

4

1 回答 1

1

我找到了一种足够简单的方法来写入任何正在运行的作业的构建日志(控制台)。

作业本身会自动将 stdout 和 stderr 重定向到构建日志(控制台),但如果您希望从外部源访问它,则需要使用实际的文件描述符。

在 linux 上,一旦您知道正在运行作业的进程的进程 ID,您就可以简单地写入该进程的标准输出(或标准错误)。

例如,假设 PID 为 555:

echo "this message will appear in the build log (console)" > /proc/555/fd/1

同样/proc/555/fd/2可以用于stderr(但我认为在这种情况下没有区别)

于 2013-11-28T16:22:02.727 回答