在我的代码(catch-block)中处理它之前,EJB容器抛出并记录了一个异常,因此我决定对其进行过滤。所以,我正在尝试创建一个像解释here
的weblogic日志过滤器只要我的过滤器看起来像这样,一切正常:
NOT(MESSAGE LIKE '%java.sql.SQLIntegrityConstraintViolationException%')
但是当我尝试更多地指定它时,例如我想要过滤哪个唯一约束它不会过滤任何东西。
例如,我试过了两个:
NOT(MESSAGE LIKE '%ORA-00001: unique constraint (SOME.UQ_MY_CONSTRAINT violated%')
和
NOT(MESSAGE LIKE '%java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (SOME.UQ_MY_CONSTRAINT) violated%')
即使我试图逃避特殊字符,这些消息也会继续显示在日志中。
答案 0 :(得分:0)
在oracle documentation中有人说
...反斜杠字符(\)可用于转义特殊字符,例如引号(`)或百分号字符(%)......
但是他们没有提供特殊字符的完整列表(或者至少我找不到它)
这里的问题非常简单 - 我没有逃避括号 - (和)。因此,日志过滤器应如下所示:
NOT(MESSAGE LIKE '%java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint \(SOME.UQ_MY_CONSTRAINT\) violated%')