bash - 从 Bash 脚本写入自定义日志文件

标签 bash shell logging

在 Linux 中,我知道如何在我创建的一个简单的 shell 脚本中向 /var/log/messages 文件写入一条简单的消息:

#!/bin/bash
logger "have fun!"

我想停止将消息扔到默认的 /var/log/messages 文件中,并创建我自己的文件。

我试过这个:

#!/bin/bash
logger "have more fun" > /var/log/mycustomlog

它仍然记录到 /var/log/messages。它确实创建了 /var/log/mycustomlog,但它是空的。

有人看到我遗漏了什么吗?

最佳答案

logger 记录到系统日志设施。如果您希望消息转到特定文件,您必须相应地修改系统日志配置。您可以添加这样一行:

local7.*   -/var/log/mycustomlog

并重新启动系统日志。然后你可以这样记录:

logger -p local7.info "information message"
logger -p local7.err "error message"

消息将以正确的日志级别出现在所需的日志文件中。

无需更改系统日志配置,您可以像这样使用 logger:

logger -s "foo bar" >> /var/log/mycustomlog

这将指示 logger 也将消息打印到 STDERR(除了将其记录到 syslog 之外),因此您可以将 STDERR 重定向到文件。然而,这完全没有意义,因为消息已经通过系统日志记录了(默认优先级 user.notice)。

关于bash - 从 Bash 脚本写入自定义日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045946/

相关文章:

linux - 如何使用 gnu cp 命令将文件复制到多个目录

ios - [iOS] : Run project on sitmulator failed

node.js - 如何在控制台中禁用 Node mongodb-native 驱动程序连接日志记录

macos - 无法在 Mac OS X 上的 Bash 中设置/更新 IFS 变量

bash - 在 bash 中混淆存储的密码

linux - 在CENTOS6.8中使用shell移动文件夹但保留前面的结构

java - spring boot远程shell自定义命令

linux - 如何在从文件读取的配置单元查询中传递变量作为表名

logging - 在 DryIoc 容器中注册 ILoggerFactory

linux - 循环遍历多个文件夹以执行命令,然后写入另一个目录中的文件