linux - 捕获错误消息并创建日记条目

标签 linux bash syslog

我将以下代码放在我正在使用的许多脚本之上......

#!/bin/bash

# redirect all error messages to the protocol,
# then print the same message to stdout
exec 1> >(logger -i -s -t $0 -p 4) 2>&1

这行代码将使运行我的脚本时发生的错误的协议(protocol)条目。 但是当通过 stdinstdout 进行通信时,此代码无法正常工作。我只想记录错误消息。

老实说,我不知道我是如何设法让这行代码工作的。

尽管如此,我正在寻找一个代码来替换 execlogger 的组合 function 放入 trap "createErrorMessage"ERR但我不知道如何以这种方式捕获/接收错误消息。

我的目标是仅创建所有错误消息的协议(protocol)条目。

要明确一点,我不想在每段代码后使用 $? 并且我不想用 Variable=$()< 捕获每段代码.

这可能吗?

最佳答案

logger 将输出发送到 syslog 时,systemd-catsystemd 执行相同类型的功能。参见示例:

echo "hello" | systemd-cat
journalctl | tail -10

如果您将脚本作为 systemd 服务单元运行,则无需使用 systemd-cat:默认情况下 systemd 将发送其控制的服务的 STDOUT 和 STDERR期刊。

有关该工具的更多信息,请参见 man systemd-cat

关于linux - 捕获错误消息并创建日记条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262255/

相关文章:

linux - 修剪目录和当前目录的文件以与 tar 一起使用

c - 从 C 程序观看 Linux Syslog 上的新条目

linux 在没有系统日志消息的情况下崩溃

python - 与其他日志记录工具相比,使用 syslog 有什么优势?

java - C++保存和导入外部可执行结果而不写入磁盘

linux - 从 *nix 在远程 Windows 机器上执行 exe 或 bat 文件

regex - 如何将 vim 正则表达式替换命令转换为 sed 或 awk?

linux - 替换第一个登录行(linux bash)

python - 如何在Linux、Nativly(Python、C、Java)下提取office嵌入的OLE文件?

linux - 在 Gnuplot 中命名图例条目,同时从数据文件中绘制