bash - Bash to slack 错误日志报告
问题描述
我目前有一个脚本跟踪我们的错误日志并将日志发送到我们的松弛通道。我怎样才能让它发送整个错误而不是逐行发送。这就是我目前所拥有的,一个错误以数百个单行帖子的形式发送。
#!/bin/bash
tail -f "$1" | while read LINE; do
(echo "$LINE") && curl -X POST --silent --data-urlencode \
"payload={\"text\": \"\`\`\`$1 $(echo $LINE | sed "s/\"/'/g")\`\`\`\"}" "$2";
done
有没有办法让 bash 做到这一点?
这是它在松弛时的样子:
```/var/log/php_error_log Stack trace:```
```/var/log/php_error_log #0 /opt/library/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect('tcp://mail...')```
```/var/log/php_error_log #1 /opt/library/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()```
```/var/log/php_error_log #2 /opt/library/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()```
```/var/log/php_error_log #3 /opt/library/Zend/Mail.php(1197): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))```
```/var/log/php_error_log #4 /opt//cronjobs/automate_ro.php(472): Zend_Mail->send(Object(Zend_Mail_Transport_Smtp))```
```/var/log/php_error_log #5 {main}```
这就是它的格式
```/var/log/php_error_log Stack trace:
/var/log/php_error_log #0 /opt/library/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect('tcp://mail.grat...')
/var/log/php_error_log #1 /opt/library/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()
/var/log/php_error_log #2 /opt/library/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()
/var/log/php_error_log #3 /opt/library/Zend/Mail.php(1197): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
/var/log/php_error_log #4 /opt//cronjobs/automate_ro.php(472): Zend_Mail->send(Object(Zend_Mail_Transport_Smtp))
/var/log/php_error_log #5 {main}```
解决方案
用于jq
创建有效负载,而不是尝试自己逃避事物。
post_log () {
log=$1
url=$2
json=$( jq --argjson t "$log" '{text: "```\($t)```"}' )
curl -X POST --silent --data-urlencode "payload=$json" "$url"
}
tail -f "$1" | while read LINE; do
echo "$LINE"
post_log "$LINE" "$2"
done
推荐阅读
- linux - Makefile 不适用于交叉编译
- python - 比较具有几乎相同值的 2 个差异数据帧,并使用 pandas 用新数据更新旧数据
- quickbooks-online - Quickbooks Online Api - 有没有办法获取发票的所有可用自定义字段的列表?
- algorithm - 计算公平掷骰子的概率(在非指数时间内)
- javascript - componentDidUpdate() working mostly, but not rendering new data
- javascript - 移动带有整个页面的菜单
- php - Google re-captcha 不能在现有的 php 表单中工作
- powershell - 根据参数终止 PowerShell 函数的最佳方法
- python - 按钮和文字闪烁
- python - How can I mock object with nested attributes in Python?