Как получить только вывод system.debug при выполнении кода?

Я написал простую программу и хочу увидеть результат при запуске кода. Когда я запускаю его в среде IDE force.com с помощью команды «Аннонимно выполнить код вершины», я получаю много нежелательных результатов, когда мне нужны только операторы system.debug. Я мог бы использовать блокнот или Excel, но, похоже, должен быть прямой путь (либо собственный, либо инструмент). Любой совет?

Спасибо,

Эль-Нубре

код

public with sharing class Aa_playground {



 public static void listExp(){
    List<Integer> x = new List<Integer>();
    x.add(1212);
    for (Integer i = 0; i < x.size(); i++){
        System.debug(x[i]);
    }

}
} 

вывод

Anonymous execution was successful.

24.0     APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;VALIDATION,INFO;WORKFLOW,INFO
Execute Anonymous: Aa_playground.listExp();
13:40:52.037 (37218000)|EXECUTION_STARTED
13:40:52.037 (37228000)|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex
13:40:52.037 (37634000)|METHOD_ENTRY|[1]|01pQ000000062u5|Aa_playground.Aa_playground()
13:40:52.037 (37726000)|METHOD_EXIT|[1]|Aa_playground
13:40:52.037 (37740000)|METHOD_ENTRY|[1]|01pQ000000062u5|Aa_playground.listExp()
13:40:52.037 (37920000)|USER_DEBUG|[9]|DEBUG|1212
13:40:52.037 (37947000)|METHOD_EXIT|[1]|01pQ000000062u5|Aa_playground.listExp()
13:40:52.594 (37979000)|CUMULATIVE_LIMIT_USAGE
13:40:52.594|LIMIT_USAGE_FOR_NS|(default)|
  Number of SOQL queries: 0 out of 100
  Number of query rows: 0 out of 50000
  Number of SOSL queries: 0 out of 20
  Number of DML statements: 0 out of 150
  Number of DML rows: 0 out of 10000
  Number of script statements: 5 out of 200000
  Maximum heap size: 0 out of 6000000
  Number of callouts: 0 out of 10
  Number of Email Invocations: 0 out of 10
  Number of fields describes: 0 out of 100
  Number of record type describes: 0 out of 100
  Number of child relationships describes: 0 out of 100
  Number of picklist describes: 0 out of 100
  Number of future calls: 0 out of 10

13:40:52.594|CUMULATIVE_LIMIT_USAGE_END

13:40:52.038 (38005000)|CODE_UNIT_FINISHED|execute_anonymous_apex
13:40:52.038 (38011000)|EXECUTION_FINISHED

person PartOfTheOhana    schedule 24.04.2012    source источник
comment
Эта ссылка может быть полезной: fishofprey. ком/2011/02/   -  person Matt K    schedule 25.04.2012
comment
Мэтт ФТВ! Я изменил его макрос notepad ++ - вот регулярное выражение, которое нужно использовать только для операторов USER_DEBUG. Затем используйте Text-F/X, чтобы очистить его. ^(?!.+USER_DEBUG.+$).*$   -  person PartOfTheOhana    schedule 25.04.2012
comment
Кроме того, TextF/X глючит, когда вы его автоматизируете. Вместо этого добавьте второе регулярное выражение, чтобы очистить пустые строки: (?m)^([ \t\s]*|;.*)(\r?\n|$) Поместите это и вышеприведенное в свой макрос и готово!   -  person PartOfTheOhana    schedule 25.04.2012
comment
Вау, объединение всего этого (особенно с этим вторым регулярным выражением) в макросе работает превосходно.   -  person Matt K    schedule 25.04.2012
comment
UGH- есть ошибка. Мне пришло в голову, что такие утверждения являются законными утверждениями отладки: System.debug('после изменения: '+ '\n'+'ты здесь?'); «Вы там» исчезли в результате этих регулярных выражений. Правильное исправление для меня - получить список выходных операторов Salesforce и исключить каждое из них. Таким образом, у вас останутся операторы отладки и сводка в конце.   -  person PartOfTheOhana    schedule 26.04.2012


Ответы (3)


Я подумал, что подытожу часть информации, которую я нашел, в ответе.

  1. Загрузить Notepad++ v6.1+
  2. В Notepad++ откройте (или вставьте) файл журнала отладки.
  3. В меню выберите «Макрос» > «Начать запись».
  4. Нажмите CTRL-H (или сочетание клавиш для поиска и замены).
  5. Скопируйте это регулярное выражение ^(?!.+USER_DEBUG.+$).*$ и вставьте его в текстовое поле «Найти что:».
  6. Убедитесь, что для параметра «Режим поиска» установлено значение «Регулярное выражение», а текстовое поле «Заменить на:» пусто.
  7. Нажмите «Заменить все» и «ОК», когда появится диалоговое окно результатов.
  8. Скопируйте это регулярное выражение (?m)^([ \t\s]*|;.*)(\r?\n|$) и вставьте его в текстовое поле «Найти что:».
  9. Убедитесь, что для параметра «Режим поиска» установлено значение «Регулярное выражение», а текстовое поле «Заменить на:» пусто.
  10. Нажмите «Заменить все» и «ОК». Затем закройте диалоговое окно «Найти и заменить».
  11. В меню выберите «Макрос» > «Остановить запись». Затем выберите «Макрос» > «Сохранить текущий записанный макрос».
  12. Введите имя для вашего нового макроса и, при желании, установите сочетания клавиш. Затем нажмите «ОК».

Чтобы выполнить новый макрос, выберите «Макрос» в меню, затем щелкните имя макроса.

Авторство регулярных выражений принадлежит nivyaj (см. комментарии к вопросу). сообщение в блоге Дэниела Баллинджера был также полезен.

person Matt K    schedule 25.04.2012
comment
Я знаю, что этот дополнительный вопрос в значительной степени зависит от контекста, но, вообще говоря, есть ли какие-либо другие выходные операторы, которые также хотелось бы видеть? Я посмотрю, смогу ли я найти список операторов вывода и сделать набор макросов... - person PartOfTheOhana; 26.04.2012
comment
Как вы упомянули, это зависит от контекста, но вам могут понадобиться строки с EXCEPTION_THROWN, DML_ или CODE_UNIT_. - person Matt K; 26.04.2012

Вероятно, это плохая практика, но в прошлом я устанавливал уровень журнала APEX_CODE на INFO и также устанавливал уровень журнала отладочного сообщения на информацию.

System.debug(Logginglevel.INFO, 'Debug Message with INFO level');
person Daniel Blackhall    schedule 05.07.2012
comment
Судя по документации, это вполне приемлемо : DEBUG и выше по умолчанию. Если пользователь устанавливает уровень журнала для метода System.Debug, вместо этого событие регистрируется на этом уровне. - person Jannie Theunissen; 22.07.2014

Вы можете удалить сообщения LIMIT_USAGE_FOR_NS, установив уровень Apex Profiling на None. Но вы не можете избавиться от сообщений METHOD_ENTRY И METHOD_EXIT и по-прежнему получать сообщения USER_DEBUG, поскольку эти сообщения выше, чем сообщения System.debug() в фильтре. К несчастью.

person barelyknown    schedule 24.04.2012