Как реализовать "System.out.println(ClassName:: MethodName <then my message>)" Eclipse в Netbeans?
Я хотел бы знать, есть ли такая же функция, как в eclipse, для автоматического создания и печати функции System.out.println(ClassName::MethodName <then my message>)
(которая будет печатать имя класса и имя метода для отладки в консоли) в Netbeans.
Например, в редакторе Eclipse, Typing
syst + Ctrl + Space
будет автоматически генерировать вывод типа System.out.println(ClassName:: MethodName) в консоли.
Этот метод доступен в Netbeans?
На данный момент у меня есть только два метода в Netbeans:
sout + Tab
(System.out.println()) и
soutv + Tab
(System.out.println(печатает переменную, используемую чуть выше строки)) автоматически.
Позвольте мне перефразировать вместо myMethod1, я хочу получить имя вложенного метода.
Eg.
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 по умолчанию =" GetClass() "}" );
Я могу напечатать имя класса, но до сих пор не знаю, как назвать имя метода.
Ответы
Ответ 1
Вы можете использовать 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>
В этом файле конфигурации вы можете выбрать то, что хотите сохранить.
Подобно %m
означает, что он сохранит method name
.
Аналогично другим, вы должны прочитать его для различного использования.
Хорошая часть - вы можете настроить ее в соответствии с вашими потребностями.
Ответ 2
В настоящее время, после некоторого тестирования, я не вижу возможности достичь такой же функциональности в netbeans. Возможно, вы могли бы просто придерживаться затмения, поскольку, похоже, вы хорошо работали в прошлом для вас.
Если вы действительно хотели сделать это в NetBeans (я по-прежнему предпочитаю (и рекомендую) затмение), я бы рекомендовал взглянуть на этот плагин и, возможно, отредактируйте его, чтобы добавить функциональность SystemTrace, которую вы ищете.
Ответ 3
Вам следует рассмотреть возможность использования фреймворка регистрации, предложенного @vikiiii. Я хотел бы пойти дальше и предложить вам посмотреть sl4fj, который обеспечивает бесшовный способ включения фреймворков протоколирования, включая log4j. Хотя это может показаться большим количеством работы (и более того, чтобы учиться), есть очень хорошие причины для производительности при использовании System.out.println()
.
В частности, System.out.println()
блокирует все потоки во время записи, влияя на производительность любого значимого приложения, как описано здесь