首页 > 解决方案 > IntelliJ - 用包含相应类名的参数替换空参数记录器

问题描述

我需要替换项​​目中旧的记录器声明语句,就像

private final static Logger logger = LogManager.getLogger();

对于每个相应的封闭类,以类名作为参数,例如。

private final static Logger logger = LogManager.getLogger(EnclosingClass.class);

我查看了实时模板,但它不会替换现有的语句。有什么办法吗?

谢谢

标签: javaintellij-idealogginglog4j

解决方案


你可以Edit | Find | Replace Structurally用来做这个。使用如下模板:

<replaceConfiguration name="Unnamed" text="private final static Logger $logger$ = LogManager.getLogger();&#10;" recursive="false" type="JAVA" pattern_context="member" search_injected="false" reformatAccordingToStyle="false" shortenFQN="false" replacement="private final static Logger $logger$ = LogManager.getLogger($class$);&#10;" case_sensitive="true">
  <constraint name="__context__" within="" contains="" />
  <constraint name="logger" within="" contains="" />
  <variableDefinition name="class" script="&quot;logger.containingClass.qualifiedName + &quot;.class&quot;&quot;" />
</replaceConfiguration>

您可以复制此模板并Import Template from Clipboard在对话框右上角的工具按钮下调用。


推荐阅读