1. syslog-ng 是支持模板的,可以自由定义格式,比如
destination d_access {
file(“/opt/itc/syslog-ng/logs/$PROGRAM/$YEAR$MONTH$DAY/access_log”
create_dirs(yes)
dir_owner(“nobody”)
dir_group(“nobody”)
dir_perm(0755)
owner(“nobody”)
group(“nobody”)
perm(0644)
template(“${HOUR}:${MIN}:${SEC} ${HOST} ${PROGRAM} ${MSG}\n”)
);
};

2. 这个例子又刚好会触发一个小窍门,一般加了template的会发现数据丢了第一项,这是因为:
syslog-ng 会把第一列 当做是 $PROGRAM ,之后的那些内容才是 MSG

3. 那么,我想加PROGRAM 让syslog-ng 识别,在收集日志的机器分散出来怎么办? 在source里边定义就好
source s_app {
file(“/opt/itc/nginx/logs/app_access.log”
program_override(“app.4os.org”)
flags(no-parse)
);
};

这个例子里边,就会在原始日志里边自动添加一列 app.4os.org 作为PROGRAM到日志里边去

4. 总结下,实际上,没有template的默认日志格式是怎样的?
${ISODATE} ${HOST} ${PROGRAM} ${MSG}\n

其中日期函数跟定义有关,默认为iso