应用1:将syslog产生的日志,根据进程名分离输出到不同的文件
首先,在option中增加一行设置
options {
......
# enable or disable directory creation for destination files
create_dirs(yes);
};
源:
source s_src { unix-dgram("/dev/log"); internal();
file("/proc/kmsg" program_override("kernel"));
};
过滤规则:
filter f_yy_process{program("_d$");};
目标:
template yy_fmt {template("$DATE $PRIORITY $MSG/n"); template_escape(no); };
destination d_logger{ file("/data/yy/log/$PROGRAM/$PROGRAM.log" template(yy_fmt));};
日志路径:
log { source(s_src); filter(f_yy_process); destination(d_logger); flags(final); };
应用2: 将来自tcp 127.0.0.1:1000的输入,重定向到 127.0.0.1:2000输出;
源:
source s_nettest { tcp(ip(127.0.0.1) port(1000)); };
目标:
destination d_nettest { tcp("127.0.0.1" port(2000)); };
日志路径:
log { source(s_nettest); destination(d_nettest); };
3: 应用程序API调用
#include <syslog.h>
#include <stdarg.h>
void log(int level, const char *fmt, ...)
{
va_list va;
va_start(va, fmt);
vsyslog(level, fmt, va);
va_end(va);
}
int main()
{
log(LOG_INFO, "%s", "hello.test");
syslog(LOG_INFO, "hello.test", 11);
return 0;
}