我在本地机器和服务器端都使用“yum install syslog-ng”安装了 syslog-ng。我正在使用 syslog-ng 的开源版本。
我需要将日志文件名从客户端传递到服务器端。我在客户端的 18372.4.name 字段中明确设置了 .SDATA.file,因为文件的名称在 $FILE_NAME 宏中可用。但是“.SDATA.file at 18372.4.name”在服务器端是空的。当我使用一些静态文件名时,日志就可以工作了。
以下是我的代码,我不知道我哪里出错了如果您需要更多信息,我可以提供给您,任何人都可以帮助我。
MY CLIENT END SYSLOG-NG CODE:
source s_application_logs {
file(
"/var/log/test.log"
flags(no-parse)
);
};
destination d_access_system {
syslog(
"52.38.34.160"
transport("tcp")
port(6514)
);
};
rewrite r_set_filename {
set(
"$FILE_NAME",
value(".SDATA.file at 18372.4.name")
);
};
rewrite r_rename_filename {
subst(
"/var/log/",
"",
value(".SDATA.file at 18372.4.name")
type("string")
flags("prefix")
);
};
log {
source(s_application_logs);
rewrite(r_set_filename);
rewrite(r_rename_filename);
destination(d_access_system);
};
MY SERVER END SYSLOG-NG CODE:
source s_server_end {
syslog(
port(6514)
max_connections(1000)
keep_hostname(yes)
);
};
destination d_log_files {
file(
"/var/log/test/${.SDATA.file at 18372.4.name}"
create_dirs(yes)
);
};
log {source(s_server_end);destination(d_log_files);};