我使用" yum install syslog-ng"安装了syslog-ng;在本地机器和服务器端。 我使用的是syslog-ng的开源版本。
我需要将日志文件名从客户端传递到服务器端。我明确地将.SDATA.file设置为我的18372.4.name字段 客户端,因为该文件的名称在$ FILE_NAME宏中可用。但" .SDATA.file位于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);};
答案 0 :(得分:1)
问题是$ FILE_NAME宏目前仅在商业版的syslog-ng中可用。有关可能的解决方法,请参阅此博文:Forwarding filenames with syslog-ng