C 将rsyslogd输出转储到某个文件
我希望将rsyslog(服务)的输出转储到选定位置的某个文件中C 将rsyslogd输出转储到某个文件,c,linux,rsyslog,C,Linux,Rsyslog,我希望将rsyslog(服务)的输出转储到选定位置的某个文件中 位置。 以下是我尝试过的: 1.对/etc/rsyslog.conf进行了更改 ################# #### MODULES #### ################# $ModLoad imfile $ModLoad omprog <----- NEWLY ADDED ------> $ModLoad imuxsock # provides support for local system l
位置。
以下是我尝试过的:
1.对/etc/rsyslog.conf进行了更改
#################
#### MODULES ####
#################
$ModLoad imfile
$ModLoad omprog <----- NEWLY ADDED ------>
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support
#$ModLoad immark # provides --MARK-- message capability
###########################
#### GLOBAL DIRECTIVES ####
###########################
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$ActionOMProgBinary /home/test/dmsg <----- NEWLY ADDED ------>
# Filter duplicated messages
当我使用以下工具时,效果很好:
cat /var/log/syslog | ./dmsg
谢谢。您的代码中至少有一个主要错误:
char* lineptr;
...
while(getline(&lineptr, &size, stdin)>0)
您从不为
*lineptr
中存储的字符串分配内存,但也不会让getline()
为您分配内存。由此产生的缓冲区溢出可能导致在不可避免的崩溃之前出现各种令人兴奋的错误(例如,在我的测试运行中,log\u syslog\u file
获得了权限--x--T
)。首先是@Mark说的。除此之外,确保
你有点像
*.* :omprog:
在rsyslog.conf中。
这会将所有消息重定向到您的程序。我是否应该添加此语句?你能举个例子吗?如果你想让所有的信息都使用**部分。对于语法:
char* lineptr;
...
while(getline(&lineptr, &size, stdin)>0)
*.* :omprog: