【发布时间】:2014-09-15 05:55:01
【问题描述】:
我正在使用 Logstash 转发器从远程服务器接收 Log4j 生成的日志文件。日志事件的字段包括一个名为“文件”的字段,格式为 /tomcat/logs/app.log、/tomcat/logs/app.log.1 等。当然文件路径 /tomcat/logs 在远程机器上我希望 Logstash 仅使用文件名而不使用远程文件路径在本地文件系统上创建文件。
在本地,我想根据文件名 app.log、app.log.1 等创建一个文件。如何才能做到这一点?
我无法使用 grok,因为它似乎只适用于“消息”字段而不适用于其他字段。
示例日志事件:
{"message":["11 Sep 2014 16:29:04,934 INFO LOG MESSAGE DETAILS HERE"],"@version":"1","@timestamp":"2014-09-15T05:44:43.472 Z","file":["/tomcat/logs/app.log.1"],"host":"aus-002157","offset":"3116","type":"app.log"}
Logstash 配置 - 我用什么来编写过滤器部分?
input {
lumberjack {
port => 48080
ssl_certificate => "/tools/LogStash/logstash-1.4.2/ssl/logstash.crt"
ssl_key => "/tools/LogStash/logstash-1.4.2/ssl/logstash.key"
}
}
filter{
}
output {
file{
#message_format => "%{message}"
flush_interval => 0
path => "/tmp/%{host}.%{type}.%{filename}"
max_size => "4M"
}
}
【问题讨论】: