可以请某人向我解释,为什么logstash一直在忽略" codec => plain =>格式"设置,我想设置?
我正在使用的Cfg文件:
input {
gelf {
host => "[some ip]"
port => 12201
}
}
output {
elasticsearch {
host => "[some ip]"
bind_port => "9301"
}
file {
codec => plain {
format => "%{[time]} | %{[severity]} : /%{[thread]}/ %{[loggername]} (%{[sourcemethodname]}) - %{[message]}"
}
path => "/Users/[some user]/logs/%{host}/%{facility}-%{+YYYY-MM-dd}.log"
}
}
我以为我使用了错误的格式,尝试了不同的组合,如"%{time}"对于字段甚至尝试使用常量文本,如:
codec => plain {format => "Simple line"}
但似乎没有任何效果。它输出到elasticsearch罚款,创建文件夹/文件,但输出为JSON。
如果有人知道它发生了什么,请帮忙。 感谢。
答案 0 :(得分:7)
不推荐使用参数message_format
,将在Logstash的未来版本中删除。而不是使用message_format
尝试这样的事情:
file {
codec => line {
format => "%{[time]} | %{[severity]} : /%{[thread]}/ %{[loggername]} (%{[sourcemethodname]}) - %{[message]}"
}
path => "/Users/[some user]/logs/%{host}/%{facility}-%{+YYYY-MM-dd}.log"
}
}
PS:您使用编解码器plain
的示例,请尝试使用line
。
答案 1 :(得分:6)
file
有一个message_format
参数,您可以使用该参数:
file {
message_format => "%{[time]} | %{[severity]} : /%{[thread]}/ %{[loggername]} (%{[sourcemethodname]}) - %{[message]}"
path => "/Users/[some user]/logs/%{host}/%{facility}-%{+YYYY-MM-dd}.log"
}