Syntax 在elasticsearch-logging yml语法中向appender添加筛选器
我使用的是ElasticSearchV1.3.2 我想打开缓慢搜索执行时间的日志记录,但我想过滤掉针对marvel的搜索 Elasticsearch似乎说,我们可以根据log4j v1.2文档定制日志记录(请参阅ww.Elasticsearch.org/guide/en/Elasticsearch/reference/current/setup configuration.html的底部) 我已经看过log4jv1.2文档(、和),看起来我应该能够向索引搜索文件appender添加一个stringMatchFilter,但是我尝试的每一件事都会显示出来 这就是我期望在logging.yml中工作的内容:Syntax 在elasticsearch-logging yml语法中向appender添加筛选器,syntax,filter,elasticsearch,log4j,Syntax,Filter,elasticsearch,Log4j,我使用的是ElasticSearchV1.3.2 我想打开缓慢搜索执行时间的日志记录,但我想过滤掉针对marvel的搜索 Elasticsearch似乎说,我们可以根据log4j v1.2文档定制日志记录(请参阅ww.Elasticsearch.org/guide/en/Elasticsearch/reference/current/setup configuration.html的底部) 我已经看过log4jv1.2文档(、和),看起来我应该能够向索引搜索文件appender添加一个strin
index_search_slow_log_file:
type: dailyRollingFile
file: ${path.logs}/${cluster.name}_index_search_slowlog.log
datePattern: "'.'yyyy-MM-dd"
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
filter:
type: stringMatchFilter
acceptOnMatch: true
stringToMatch: "marvel"
这就产生了以下例外情况:
log4j:WARN Failed to set property [filter] to value "stringMatchFilter".
log4j:ERROR Could not instantiate class [true].
java.lang.ClassNotFoundException: true
at ..........
我也试过:
index_search_slow_log_file:
...
filter:
type: stringMatch
acceptOnMatch: true
stringToMatch: "marvel"
以及我能想到的所有其他组合,包括删除引号
有人能看出我做错了什么吗
谢谢
Isabel您的语法有点不完整:-),请使用下面的语法,看看它是否适合您。过滤器语法使用标识符,因此下面我的配置中的
1
。另外,请注意,如果要过滤掉“惊奇漫画”中的内容,则需要acceptOnMatch:false
filter:
1:
type: org.apache.log4j.varia.StringMatchFilter
StringToMatch: "marvel"
AcceptOnMatch: false
我刚刚意识到,您记录到索引\u search\u slow\u log\u文件的级别可能特定于索引 因此,我实际上不需要过滤惊奇漫画日志,我可以在elasticsearch.yml中将默认值设置为no logging(即,不更改它),启用日志记录以索引\u search\u slow\u log\u文件,然后通过索引设置API设置索引特定的覆盖 elasticsearch.yml:无变化 logging.yml:
additivity:
index.search.slowlog: true
...
PUT /index_name/_settings
{
"index": {
"search": {
"slowlog": {
"threshold": {
"fetch": {
"trace": "0ms",
"info": "500ms",
"warn": "1s"
}
}
}
}
}
}
索引设置API:
additivity:
index.search.slowlog: true
...
PUT /index_name/_settings
{
"index": {
"search": {
"slowlog": {
"threshold": {
"fetch": {
"trace": "0ms",
"info": "500ms",
"warn": "1s"
}
}
}
}
}
}
要添加到答案,您还可以将匹配的意义反转为AcceptOnMatch:true
,但这需要在后面添加一个显式的DenyAllFilter
。完整示例如下所示:
filter:
1:
type: org.apache.log4j.varia.StringMatchFilter
StringToMatch: "my-important-index"
AcceptOnMatch: true
2:
type: org.apache.log4j.varia.DenyAllFilter
非常感谢。试过了,效果很好。酷,是的,我也尝试过添加标识符,但是使用完整的类名是我错过的。哎呀,哎呀,我一定是在调试过程中把‘假’也换成了‘真’了。