我正在尝试设置我的rsyslog,将/ opt / appname / logs下的应用程序生成的日志发送到远程系统日志服务器。 我已经configurationrsyslog来发送操作系统级别的日志,但想看看它是否也可以发送应用程序的日志。 我不确定IncludeConfig指令是否工作,因为它查找另一个* .conf文件。
rsyslog支持从文件读取。 这是用imfile模块完成的。 您需要以下configuration:
module(load="imfile" PollingInterval="10") #needs to be done just once # needs to be done for each file you want to watch input(type="imfile" File="/path/to/file1" Tag="tag1" StateFile="statefile1" Severity="error" Facility="local7")
在rsyslog文档站点有更多的信息
您始终可以使用旧的语法:
例如。 /etc/rsyslog.d/11-your-file.conf
$ModLoad imfile $InputFileName /app/your-file.log $InputFileTag your-tag $InputFileStateFile your-tag $InputFileSeverity info $InputFileFacility local7 $InputRunFileMonitor $InputFilePersistStateInterval 1000 local7.* @@remote-rsyslog-server:port
如果你挂钩一个启动脚本,你可以使用可以合并
tail -n 0 -F /opt/appname/logs/file | logger ...
logging器的参数将是优先级,您可以指定远程系统日志服务器或只使用本地设置,并有rsyslog为您做转发。
这种设置的一个原因是,你必须确保你的应用程序启动时拖尾日志,否则你会错过之间的logging。
一个更好的解决scheme,但提供更多的工作,将是使用像logstash的东西。
根据您的应用程序日志configurationinput,对于文件,您可以使用sincedb从上次停止的位置继续input,并且您有一个模块输出到系统日志。
取决于你想要什么,这可能是太多的工作。