Как я могу настроить log4j для не печати исключения stacktrace?

Согласно Аннотированный раздел 11.11 ECMAScript 5.1 :

В случае логического оператора OR (||),

expr1 || expr2 Возвращает expr1, если он может быть преобразован в true; в противном случае возвращает expr2. Таким образом, при использовании с булевыми значениями || возвращает true, если оба операнда истинны; если оба значения false, возвращает false.

blockquote>

В данном примере

var oneOrTheOther = someOtherVar || «Это не дроиды, которые вы ищете ... двигаться вперед»;

Результатом будет значение someOtherVar, если логическое значение (someOtherVar) истинно. (См. Truthiness of выражение ). Если это неверно, результатом будет «это не дроиды, которые вы ищете ... двигаться вперед»;

И в случае логического оператора AND (& amp;),

Возвращает expr1, если его можно преобразовать в false; в противном случае возвращает expr2. Таким образом, при использовании с булевыми значениями & amp; & amp; возвращает true, если оба операнда истинны; в противном случае возвращает false.

blockquote>

В данном примере,

case 1: когда Boolean (someOtherVar) является false: он возвращает значение someOtherVar.

case 2: когда Boolean (someOtherVar) истинно: он возвращает «это не дроиды, которые вы ищете ... двигаться вперед».

19
задан Thilo 8 December 2008 в 03:11
поделиться

6 ответов

Редактирование после чтения еще части источника:

все еще необходимо разделить PatternLayout на подклассы, но метод, который Вы хотите переопределить, является ignoresThrowable (): это должно возвратить false, который будет препятствовать тому, чтобы appender писал Throwable (это предполагает, что расположение поэтому уже сделало).

Никакой способ указать это в конфигурации: PatternLayout имеет hardcoded, "возвращают true".

17
ответ дан 30 November 2019 в 02:56
поделиться

Вы, возможно, должны записать пользовательский макет, чтобы сделать это (который не является этим плохо, чтобы сделать; Вы могли разделить PatternLayout на подклассы).

1
ответ дан 30 November 2019 в 02:56
поделиться

Если можно изменить исходный код, то другая опция доступна для соображения.

В моих приложениях, я всегда и только регистрирую ФАТАЛЬНЫЕ сообщения от своей точки входа приложений (например, "основной ()"), так как я только знаю, что они являются фатальными, если я собираюсь выйти из приложения из-за них.

Поэтому в этом месте (или небольшое количество, если у Вас есть несколько точек входа приложения), инстанцируйте Регистратора Log4j со специальным классом или MDC "системного журнала" или подобный. После фиксации soon-to-be-FATAL ошибки зарегистрируйте его обычным способом (для Ваших других файлов журнала и такого), но также и вызовите фатальное () метод на этом новом Регистраторе "системного журнала" только с точным сообщением, что Вы хотите (такой как только класс исключений и сообщение, но без отслеживания стека). Затем настройте Log4j к прямому только этот класс "системного журнала" или MDC к недавно настроенному Appender, который нацелен на SysLog.

Ta-dum!

0
ответ дан 30 November 2019 в 02:56
поделиться

Слово преобразования "nopex" или "nopexception" в logback-classic (преемник log4j) отключает стек печати следы. Слово преобразования "nopex" задокументировано вместе с остальными словами преобразования . Вам нужно прокрутить немного вниз.

Если вам нужна дополнительная информация по этой теме, обратитесь в список рассылки пользователей, выполнивших вход в систему.

2
ответ дан 30 November 2019 в 02:56
поделиться

Вот фактический код, который я использую:

import org.apache.log4j.PatternLayout;

public class NoStackTracePatterLayout extends PatternLayout {

 @Override
 public boolean ignoresThrowable(){
  return false;
 }
}
10
ответ дан 30 November 2019 в 02:56
поделиться

В 1.2.16 можно использовать EnhancedPatternLayout

5
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: