1

这是一个 slf4j 记录器,我一直在尝试使用 2 个消息参数记录错误。

catch(ExecutionException executionException) {

LOGGER.error("TimeoutException caught , Error: " + SSG_TIMEOUT.getErrorText() 
       + ". Message: " +executionException.getMessage());    
}  

SSG_TIMEOUT.getErrorText()结果为字符串"TimeOut error encountered"

我用过的东西

  1. 手动清理代码

    return entry.replace("\t", "\\t").replace("\b", "\\b").replace("\n", 
        "\\n").replace("\r", "\\r").replace("\f", "\\f").replace("\u0000", 
        "\\0").replace("\\a", "\\a").replace("\\v", "\\v").replace("\\e", 
        "\\e").replaceAll("\\p{Cntrl}", "").replace("'", "\\'").replace("\"", 
        "\\\"").replace("\\", "\\\\");
    
  2. StringEscapeUtils.escapeJson(String errorMessage)

  3. 附加字符串的字符串生成器 +escapeJson(StringBuilder.toString())

我仍然在我的 veracode 报告中看到了这个问题。

有什么建议么?

4

1 回答 1

2

首先前两种消毒方法是正确的,只是 Veracode 不支持。

在使用一种方法之前,应该访问https://help.veracode.com/r/review_cleansers中的 关于支持的清洁功能

因此,对于上述问题StringUtils.normalizeSpace()起作用了。也可以使用“StringUtils.escapeJava”,但似乎已弃用

索尔恩:

    catch(ExecutionException executionException) {

    LOGGER.error("TimeoutException caught , Error: " + 
    StringUtils.normalizeSpace(SSG_TIMEOUT.getErrorText() 
    }  
于 2020-12-08T06:11:36.817 回答