我想用logstash解析日志文件目录。 当日志格式如下:
server-20140604.log
server-20140603.log
server-20140602.log
没有问题,我正在使用这样的球:
input {
file {
path=>["D:/*.log"]
}
}
但我的日志格式如下:
server.log
server.log.1
server.log.2
client.log
client.log.1
client.log.2
所以我想知道如何告诉logstash在文件夹中解析名称中以“server”表达式开头的所有文件。我真的需要这样做,因为我在文件夹中有其他文件(即客户端日志),我不想解析但也无法从文件夹中删除。
答案 0 :(得分:1)
使用此配置,我只能解析所有以前缀server
开头的日志文件。
input {
file {
path => ["D:/server*"]
}
}
output {
stdout {
codec => rubydebug
}
}
我认为您遇到的可能问题是start_position
配置。这意味着logstash开始在哪里读取日志。请参阅here。请记住,此选项仅修改文件为新文件且之前未见过的first contact
情况。如果之前已经看过某个文件,则此选项无效。
当您停止logstash时,logstash会在您的主目录中保存.sincedb *。下次启动时,logstash将根据.sindb *开始读取文件。如果您不向server.log
输入新日志,则logstash将永远不会解析旧日志。
您可以尝试执行的操作是在启动logstash之前删除所有.sincedb并将start_posistion
添加到您的配置中。在您的评论中,您说如果覆盖server.log
logstash可以从头开始解析文件,那是因为logstash将其检测为新文件而.sincedb *不保存有关此文件的任何信息。 logstash会解析它!您可以尝试找出.sincedb并尝试删除它。