日志收集器采用路径来收集日志文件。如何省略path4目录中的“撤消”文件 从下面的路径收集日志,但忽略来自path4的撤消文件
<logs>
<log path="/path1/path2/path3/^[undo]*"/>
</logs>
/path1/path2/path3/path4/undo1.txt
/path1/path2/path3/path4/undo2.txt
答案 0 :(得分:0)
假设这个日志采集器采用perl正则表达式或类似的标记,那么它将是:
<logs>
<log path="/path1/path2/path3/(?!undo)[^/]*"/>
</logs>
(根据日志收集器是否需要正则表达式来匹配整个文件名,最后可能不需要[^/]*
)
不幸的是,名称“日志收集器”有点泛,所以我实际上并不知道你的意思是什么软件,所以我不知道它实际上是否确实采用了perl正则表达式;参考您使用的实际软件会很有帮助。
好的,这是正则表达式应该匹配的东西,使用这个perl测试程序:
my $re = qr{/path1/path2/path3/(?!undo)[^/]*};
for (<>) {
chomp;
if ($_ =~ $re) {
print "$_ matches\n"
} else {
print "$_ DOES NOT MATCH\n"
}
}
这告诉我们:
/path1/path2/path3/foo.txt matches
/path1/path2/path3/bar.log matches
/path1/path2/path3/undo_5.txt DOES NOT MATCH
/path1/path2/path3/ matches
这就是为什么我真的想要一个指向该软件的指针。因为您说修改后的正则表达式不起作用,“撤消”文件仍然被拉入,这告诉我日志软件与正则表达式的完整文件名不匹配,而只是路径(目录)名称。我们可以从上面的证据中看出,正则表达式与名称以“undo”开头的文件不匹配。
由于您希望目录中的某些文件匹配而某些文件不匹配,您应该希望您的软件具有类似于单独file=
属性的内容,该属性接受文件名的正则表达式。