2012-05-10 4 views

ответ

4

Throwable.printStackTrace() печатает трассировку стека до стандартной ошибки, а метод log4j будет печатать ее, где вы предпочитаете. Вы можете указать, когда и как распечатать трассировку стека через log4j configuration file.

Второй подход является лучшим, потому что вы всегда можете решить записать ошибку в стандартную ошибку, а также распечатать ее в скользящем файле одновременно. У вас есть недостаток в том, что вам нужна зависимость log4j в вашем проекте, но есть также решения для использования log4j без объявления этой зависимости и предоставления ее только во время выполнения.

Редактировать: общее использование - записывать журналы в ваш код с помощью log4j api и настраивать log4j, где вы развертываете приложение. Другой способ - написать их с помощью java.util.logging, чтобы избежать какой-либо прямой зависимости, и вы можете использовать мосты slf4j для захвата любого журнала из вашего и стороннего кода и доставки его на регистрацию api, которую вы предпочитаете (то есть log4j)

1

Если вы входите, а затем использовать метод Log4J. Вы будете иметь ручку где и если вы хотите журнал, чтобы показать/прочитать в файле/консоли/... Вы можете выбрать уровень отладки, чтобы показать/скрыть информацию certains

Throwable.printStackTrace будет отправлять трассировку стека только в стандартный поток ошибок.

Кроме того, с помощью Log4J вы можете легко «упростить» сообщение и позволить пользователю/разработчику знать, что происходит.

Редактировать: Вы можете захотеть взглянуть на SLF4J, что позволит вам очень легко изменить бэкэнд регистрации (LOG4J в вашем случае).

2

Обычно вы не сделали бы этого, так как он выводит ошибку на стандартный вывод ошибки. Если вы не сохраняете это сообщение (файл или db), оно исчезнет, ​​как только вы закроете консоль.

Печатает эту брошюру и ее обратную трассу в стандартный поток ошибок.

Вместо этого вы хотите зарегистрировать файл через Logger.error(String, Throwable), и вы можете найти файл журнала при отладке производственной проблемы. Кроме того, используя log4j, вы можете настроить уровень журнала для отображения в журнале на основе другой среды, например, в процессе производства, вы можете регистрировать только уровни информации, уровни предупреждений и ошибок, а во время разработки вы также регистрируете отчеты об ошибках ,

Запишите объект сообщения с уровнем ERROR, включая трассировку стека Throwable t, переданный как параметр.

Наиболее распространенное использование осуществляется через регистратор, если только в производстве вы ничего не регистрируете.

1

Единственные ситуации, в которых вы бы использовать Throwable.printStackTrace() в предпочтении к полеганию являются:

  • , когда вы не можете использовать вход (по некоторым причинам),
  • когда вы всегда то, что пользователь для просмотра stacktrace (по какой-либо причине) или
  • , когда вы отлаживаете и нуждаетесь в быстрой и грязной трассировке стека.

В каких отличиях и в чем распространено использование?

В принципе, разница находится на более высоком уровне. Это разница между использованием структуры ведения журнала для ведения журнала или использованием операторов System.err.println для ведения журнала.

Первый имеет ряд преимуществ, которые вы найдете в документации и javadocs различных фреймворков регистрации. Основными являются:

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

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

Смежные вопросы