Я установил syslog-ng с помощью «yum install 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);};