0

此处描述了创建用于创建 slf 记录器的 Netbeans 代码模板:

http://wiki.netbeans.org/SLF4JCodeTemplate

但是为日志语句创建代码模板,例如

logger.debug("Something: {}", var);

比预期的要难,因为模板语言不平衡花括号。这意味着它将在第一个结束大括号处结束捕获。

存在一些示例,例如如何在 Netbeans 代码模板中获取当前类名?但他们没有涉及花括号问题。

我试图以我能想到的各种方式逃避它们,包括:

${LOGGER default="logger" editable=false}.debug("${logMessage}${: '{}'}", ${EXP instanceof="<any>" default="exp"});

${LOGGER default="logger" editable=false}.debug("${logMessage}${: \{\}}", ${EXP instanceof="<any>" default="exp"});

但没有运气。到目前为止,我的谷歌技能也一直让我失望。

4

1 回答 1

0

原来有一个简单的解决方案。我没有在任何关于 netbeans 代码模板的地方找到它,但是在关于 freemarker 的问题下:

如何在 Freemarker 中输出 ${expression} 而不会被解释?

基本上答案是在代码周围使用 r"..." ,如下所示:

${LOGGER default="logger" editable=false}.debug("${logMessage}${:r"{}"}", ${EXP instanceof="<any>" default="exp"});

现在可以将其分配给 sld,因此我可以键入 slt,将其展开为:

logger.debug("logMessage: {}", <last variable>);

选择“logMessage”的位置(所以我可以用有用的东西覆盖它,一个选项卡选择“:{}”,所以如果我想在没有参数的情况下记录,我可以删除它,最后一个选项卡选择最后一个分配的值(以防万一我想更换或删除它)。

于 2016-06-09T19:14:36.497 回答