16

我想知道是否有与eclipse相同的功能来自动生成和打印NetbeansSystem.out.println(ClassName::MethodName <then my message>)中的功能(将打印名和方法名以在控制台中进行调试)。

例如,在 Eclipse 编辑器中,键入

系统 + Ctrl+Space

将在控制台中自动生成 System.out.println(ClassName::MethodName) 类型的输出。

Netbeans 中是否有这种方法?

到目前为止,我在 Netbeans 中只有两种方法:

南 +Tab

(System.out.println()) 和

南方电视台+Tab

(System.out.println(打印在该行上方使用的变量))自动。

让我换个说法,而不是 myMethod1,我想获取封闭的方法名称。

例如。:

public class X {

  public void myMethod1(int a) {
    System.out.println(X::myMethod1()); // This should be produced when I type the Code-Template abbreviation (example: syst) and press tab (or corresponding key).
  }
}

public class Y {

  public void myMethod2(int b) {
    System.out.println(Y::myMethod2()); // This should be produced when I type the Code-Template abbreviation (example: syst) and press tab (or corresponding key).
  } 
}  

更新:

使用以下代码模板:

syst = System.out.println("${classVar editable="false" currClassName default="getClass()"}");

我可以打印类名,但仍然不知道方法名称。

4

3 回答 3

7

您可以使用它Logger来实现这一点。

Apache log4j是一个基于 Java 的日志记录实用程序。

使用log4j或其他记录器实现将为您提供class信息method和每个商业应用程序使用logger而不是使用System.out.

记录器还能够定义记录消息的不同重要性级别,并能够使用不同的接收器进行输出 - 控制台、文件等。

此外,在使用记录器时,仅启用或禁用某种类型的消息也很容易——例如,您不想在生产中看到每条调试消息。

如果您的应用程序正在使用spring framework,那么您可以使用Log4j 和 AOP来实现它。

Setting the log level

您可以设置 5 个日志级别:

`FATAL` — logs only fatal errors

`ERROR` — logs all errors

`WARN` — logs warnings, and all errors

`INFO` — logs information, warnings, and all errors

`DEBUG` — logs debug information, and all other levels

示例log4j.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
 <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
   <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d{ABSOLUTE} 
      %5p %c{1}:%L - %m%n"/> 
    </layout>
     </appender>
       <root>
      <priority value="debug"></priority>
      <appender-ref ref="stdout"/>
    </root>
</log4j:configuration>

在此配置文件中,您可以选择要存储的内容。

Like%m表示它将存储method name. 与其他人类似,您必须阅读它以了解不同的用法。好的部分是您可以根据需要对其进行定制。

于 2012-10-28T06:26:45.037 回答
1

您应该考虑使用@vikiiii 建议的日志框架。我会更进一步,建议您查看sl4fj,它提供了一种无缝整合日志框架的方式,包括 log4j。虽然这似乎需要更多的工作(并且需要学习更多),但不使用System.out.println().

具体来说,System.out.println()在写入时阻塞所有线程,影响任何重要应用程序的性能,如此处所述

于 2012-10-29T02:44:48.427 回答
1

目前,经过一些测试,我认为无法在 netbeans 中实现相同的功能。也许您可以坚持使用 eclipse,因为它过去似乎对您来说效果很好。

如果您真的想在 NetBeans 中完成这项工作(我仍然更喜欢(并推荐)eclipse),我建议您查看这个插件,并可能对其进行编辑以添加您正在寻找的 SystemTrace 功能。

于 2012-10-23T23:02:01.667 回答