需求:
收集现有Toc production日志到log server;
Toc production日志定义facility为LOCAL0;
收集到的日志每小时切割一次;
日志头为TC:的日志,存放路径为:/data-nfs/syslog/TC-production/log.year-month-day-hour,保留原有日志换行格式,并且去掉日志首字符“TC:”,保存其余部分的日志消息;
日志头为TCBeta:的日志,存放路径为:/data-nfs/syslog/TC-beta/log.year-month-day-hour,保留原有日志换行格式,并且去掉日志首字符“TCBeta:”,保存其余部分的日志消息;
修改配置文件
#vi /etc/rsyslog.conf $EscapeControlCharactersOnReceive off #关闭rsyslog默认转译ASCII<32的所有怪异字符,包括换行符等 $template tc_pro_log,"/data-nfs/syslog/TC-production/log.%$year%-%$month%-%$day%-%$hour%" #定义TC:日志存放路径 $template tc_beta_log,"/data-nfs/syslog/TC-beta/log.%$year%-%$month%-%$day%-%$hour%" #定义TCBeta:日志存放路径 $template tocFormat,"%msg%\n" #定义toc日志format :rawmsg,contains,"TC:" -?tc_pro_log;tocFormat #接受TC:日志,并应用tocFormat格式 :rawmsg,contains,"TCBeta:" -?tc_beta_log;tocFormat #接受TCBeta:日志,并应用tocFormat格式
重启rsyslog服务
#/etc/init.d/rsyslog restart
收集到的日志出现“#12”错误提示,日志打到本地就不会有这种现象,如下:
Mar 28 20:11:59 telemachos root: ERROR 'EXCEPTION'#012Traceback (most recent call last):#012 File "./test.py", line 22, in <module>#012 foo()#012 File "./test.py", line 13, in foo#012 bar()#012 File "./test.py", line 16, in bar#012 bla()#012 File "./test.py", line 19, in bla#012 raise Exception("EXCEPTION!")#012Exception: EXCEPTION!
原因:默认情况下,rsyslog会转译所有怪异字符(ASCII<32),包括换行符和标签等
解决办法:
在rsyslog.conf配置文件中,添加:
$EscapeControlCharactersOnReceive off
参考:http://stackoverflow.com/questions/5463992/multiline-log-records-in-syslog