cof*_*tor 37 bash shell logging
在Linux中,我知道如何/var/log/messages在我创建的简单shell脚本中向文件写一条简单的消息:
#!/bin/bash
logger "have fun!"
Run Code Online (Sandbox Code Playgroud)
我想停止将消息抛入默认/var/log/messages文件,并创建自己的.
我试过这个:
#!/bin/bash
logger "have more fun" > /var/log/mycustomlog
Run Code Online (Sandbox Code Playgroud)
它仍然记录到/var/log/messages.它创造了/var/log/mycustomlog它,但它是空的.
有人看到我错过了吗?
Ans*_*ers 35
logger记录到syslog工具.如果要将消息转到特定文件,则必须相应地修改syslog配置.你可以添加这样一行:
local7.* -/var/log/mycustomlog
Run Code Online (Sandbox Code Playgroud)
并重新启动syslog.然后你可以像这样记录:
logger -p local7.info "information message"
logger -p local7.err "error message"
Run Code Online (Sandbox Code Playgroud)
并且消息将显示在具有正确日志级别的所需日志文件中.
无需更改syslog配置,您可以logger像这样使用:
logger -s "foo bar" 2>> /var/log/mycustomlog
Run Code Online (Sandbox Code Playgroud)
这将指示logger将消息打印到STDERR(除了将其记录到syslog之外),因此您可以将STDERR重定向到文件.但是,它完全没有意义,因为消息已经通过syslog记录(具有默认优先级user.notice).
cof*_*tor 31
@chepner提出了一个logger专门用于记录消息的好点.
我需要提一下@Thomas Haratyk只是询问我为什么不简单地使用echo.
当时,我不知道回声,因为我正在学习shell-scripting,但他是对的.
我现在的简单解决方案就是:
#!/bin/bash
echo "This logs to where I want, but using echo" > /var/log/mycustomlog
Run Code Online (Sandbox Code Playgroud)
上面的示例将覆盖>之后的文件
所以,我可以用这个附加到该文件:
#!/bin/bash
echo "I will just append to my custom log file" >> /var/log/customlog
Run Code Online (Sandbox Code Playgroud)
多谢你们!
/var/log/,但我确信还有其他好的想法.由于我没有创建守护进程,/var/log/可能不是我的自定义日志文件的最佳位置.(只是说)