Согласно Аннотированный раздел 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) истинно: он возвращает «это не дроиды, которые вы ищете ... двигаться вперед».
Редактирование после чтения еще части источника:
все еще необходимо разделить PatternLayout на подклассы, но метод, который Вы хотите переопределить, является ignoresThrowable (): это должно возвратить false, который будет препятствовать тому, чтобы appender писал Throwable (это предполагает, что расположение поэтому уже сделало).
Никакой способ указать это в конфигурации: PatternLayout имеет hardcoded, "возвращают true".
Вы, возможно, должны записать пользовательский макет, чтобы сделать это (который не является этим плохо, чтобы сделать; Вы могли разделить PatternLayout на подклассы).
Если можно изменить исходный код, то другая опция доступна для соображения.
В моих приложениях, я всегда и только регистрирую ФАТАЛЬНЫЕ сообщения от своей точки входа приложений (например, "основной ()"), так как я только знаю, что они являются фатальными, если я собираюсь выйти из приложения из-за них.
Поэтому в этом месте (или небольшое количество, если у Вас есть несколько точек входа приложения), инстанцируйте Регистратора Log4j со специальным классом или MDC "системного журнала" или подобный. После фиксации soon-to-be-FATAL ошибки зарегистрируйте его обычным способом (для Ваших других файлов журнала и такого), но также и вызовите фатальное () метод на этом новом Регистраторе "системного журнала" только с точным сообщением, что Вы хотите (такой как только класс исключений и сообщение, но без отслеживания стека). Затем настройте Log4j к прямому только этот класс "системного журнала" или MDC к недавно настроенному Appender, который нацелен на SysLog.
Ta-dum!
Слово преобразования "nopex" или "nopexception" в logback-classic (преемник log4j) отключает стек печати следы. Слово преобразования "nopex" задокументировано вместе с остальными словами преобразования . Вам нужно прокрутить немного вниз.
Если вам нужна дополнительная информация по этой теме, обратитесь в список рассылки пользователей, выполнивших вход в систему.
Вот фактический код, который я использую:
import org.apache.log4j.PatternLayout;
public class NoStackTracePatterLayout extends PatternLayout {
@Override
public boolean ignoresThrowable(){
return false;
}
}