通过简单的 bash 脚本将标准输出管道到日志



我想从某些程序记录标准输出来登录。 我发现了一些简单的实用程序(例如 https://github.com/meatballhat/loggly-pipe 和 https://github.com/segmentio/loggly-cat),但它们似乎矫枉过正。

我可以侥幸做一些这么简单的事情吗:

log.sh

#!/bin/bash
while read line
do
    echo "$line"
    curl -H "content-type:text/plain" -d "$line" https://logs-01.loggly.com/inputs/<my-token>/tag/tag1,tag2/ >/dev/null 2>&1
done < /dev/stdin

然后我运行我的程序并将其通过管道传输到我的日志日志记录脚本:

./my_script.sh | ./log.sh

这似乎工作正常,但我想知道出于某种原因,其他解决方案的所有复杂性是否都是必要的?

这里会出什么问题吗?

谢谢!

想想你的脚本是做什么的。 它每行输入运行一次curl

想想这意味着什么。

如果您记录 10K 行,则会生成 10K 个进程。 这将启动 10K TCP 连接。 这是对计算资源的巨大浪费。

此外,你

根本不处理错误(事实上,你通过将curl的stderr发送到/dev/null来主动隐藏它们!)。 这意味着脚本不仅效率低下,而且不可靠。

我建议使用 set -eu 启动所有 Bash 脚本以在未处理的错误时退出,但这只是一个步骤,而不是对上述问题的完全修复。

相关内容

  • 没有找到相关文章

最新更新