Rsyslog输出到自定义日志文件


13

谁能告诉我我在这里做错了什么?

这是最终的问题:

为什么当我使用logger命令时,无法将其输出到自定义日志文件中/var/log

在我的脚本中:

logger -i -t ANM -p local7.info "This is a local 7 test"

在中,rsyslog.conf我在文件末尾附加了以下内容:

local7.* /var/log/anm.log

另外,该脚本具有该/var/log/anm.log文件的权限

*更新*

所以我忘了重启日志服务。我已尝试重新启动,“ service rsyslog restart”仍然没有变化。测试文字未显示在中,/var/log/anm.log但确实出现在/var/log/syslog

*更新*

/var/log/"yourlogfilehere"需要什么权限?OwnerGrouprwx

我尝试将grp和own设置为root和运行logger命令的用户名。两者都没有改变。

我也尝试过在中的自定义目录中创建日志文件/var/log。即/var/log/anm/anm.log和设置目录的两种权限。

*更新*

rsyslogd正在运行

syslog     598  0.0  0.1  31060  1292 ?        Sl   03:02   0:02 rsyslogd -c5

这是我/etc/rsyslog.conf文件的输出

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

local7.*        /var/log/anm.log

我也尝试将其放入/etc/rsyslog.d/50-default.conf(我正在运行Ubuntu 12.04 LTS)

#  Default rules for rsyslog.
#
#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
#daemon.*                       -/var/log/daemon.log
kern.*                          -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
mail.*                          -/var/log/mail.log
#user.*                         -/var/log/user.log
local7.*                        /var/log/anm.log

*更新*

好吧,我终于明白了。我希望有人为我回答了这个问题。花了几天的时间弄清楚出了什么问题,但是我想超级用户并不多。

正如我最初所理论的,问题在于自定义日志文件的文件权限。我以为我拥有正确的权限,但事实证明,所有者必须是syslogand group adm。我通过与user.log文件比较确定了这一点。修改并再次测试权限后,所有功能都将完美运行!我希望这可以帮助其他人比我更快地找到答案。


1
我在SF上看到了相同的帖子-请不要交叉张贴。
Journeyman Geek

每个人都告诉我调职。我想我应该删除其他人?
Atomiklan

1
对。您也可以标记自己的帖子,以要求主持人将来也将其移动
Journeyman Geek

“请,需要立即帮助”对这个问题也不是很有帮助。我个人也觉得您的问题难以理解。实际问题在哪里?我能看到的唯一真正的问题是“ / var / log / somefile需要什么权限?” 答案应该是“让syslogd处理它”。此外,这是以前的许多更新,因此可能不再有意义。
CVn

您可以将解决方案作为答案发布,以便其他面临相同问题的人也可以看到。
gronostaj

Answers:


6

好吧,我终于明白了。我希望有人为我回答了这个问题。花了几天的时间弄清楚出了什么问题,但是我想超级用户并不多。

正如我最初所理论的,问题在于自定义日志文件的文件权限。我以为我拥有正确的权限,但事实证明,所有者需要为“ syslog”,组为“ adm”。我通过与user.log文件进行比较来确定这一点。修改并再次测试权限后,所有功能都将完美运行!我希望这可以帮助其他人比我更快地找到答案。

这是最终权限

-rw-r--r-- 1 syslog adm 0 Aug  3 05:09 anm.log

“我认为我的权限正确”意味着您自己创建了文件。为什么不简单地让syslog守护程序创建它呢?
2013年

问题是:为什么当我使用logger命令时,无法将其输出到/ var / log中的自定义日志文件?我只是试图让syslog创建文件,但无法正常工作。两种方法都可以。我不介意让我的安装脚本创建文件并设置权限。
Atomiklan 2013年

1
当秒数= $$$时,您会喜欢它
Atomiklan 2013年

嗨@Atomiklan谢谢您的问题解决了我完全相同的问题。但是我想知道为什么rsyslog自动创建的文件位于root / root下而不是正确的syslog / adm下吗?你知道为什么吗
李宇东2013年

谢啦!显然,您的工作使我免除了调试syslog的两天时间:)从@MichaelKjörling和@YudongLi的模糊注释中,我发现守护程序根据配置规则中的路径自行创建了文件。在service restart知道规则之后,在第一个适当的调用时,将logger创建具有正确权限集的文件。
xealits

1

@Atomiklan提到他必须将其自定义文件的所有者/组更改为syslog / adm。我尝试了一下,它奏效了...

但是@MichaelKjörling的评论也似乎是正确的:为什么不让syslog守护程序创建文件?

在我的情况下(我建议使用OP),关键是syslog用户没有对自定义日志目录的写权限。我做了一个chmod o+w,重新启动了rsyslog,然后我的日志文件愉快地出现在了它应该有的位置……以syslog / adm作为用户/组。


1
#$ModLoad imudp
#$UDPServerRun 514

一定是:

$ModLoad imudp
$UDPServerRun 514

运行远程日志记录!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.