【发布时间】:2015-04-29 21:09:04
【问题描述】:
我希望将 rsyslog(service) 的输出转储到所选文件中的某个文件
位置。
以下是我尝试过的:
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
dmsg : 是一个从标准输入读取行并将其写入的 C 程序
文件(/home/test/log_syslog_file)
我希望将输出转储到 /home/test/log_syslog_file
但什么也没有发生。
dmsg 代码 (dmsg.c) ::
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
int main(){
char* lineptr;
size_t size = 0;
int fd = open("log_syslog_file", O_CREAT| O_WRONLY);
while(getline(&lineptr, &size, stdin)>0){
if(write(fd, lineptr, strlen(lineptr))<0){
fprintf(stderr, "write failure");
break;
}
}
free(lineptr);
close(fd);
return 0;
}
我使用的是 Ubuntu 14.04
-------- 编辑 ---------
启动 rsyslog 服务后,
我给出以下命令:
rsyslogd -c5 -d -n
当我使用以下它工作正常:
cat /var/log/syslog | ./dmsg
谢谢。
【问题讨论】: