Я разрабатываю веб-приложение с Java и Jboss.Как добавить заголовок заголовка во всех исключениях журнала регистрации
Я использую регистратор java java.util.logging
для регистрации сообщений.
Мне интересно, что все выходные сообщения, которые делают приложение, имеют пользовательский заголовок заголовка. Например:
[21.2.2017 13:25:28][CERT:1642 ENS:5][ERROR]: java.lang.ArithmeticException:/by zero
Если заголовок пользовательского заголовка является: [21.2.2017 13:25:28][CERT:1642 ENS:5][ERROR]
Я был в состоянии сделать это, создавая обычай (продлить java.util.logging.Formatter
).
Logger logger = null;
StreamHandler handler = null;
MyCustomFormatter format = null;
logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME + "." + custom_name);
format = new MyCustomFormatter();
handler = new StreamHandler(System.out, format);
logger.addHandler(handler);
Я могу показать заголовок в тех случаях, когда я вызываю регистратор явно. Например:
в коде:
logger.info(msg);
улова исключением:
logger.severe(e.printStackTrace());
Я хотел бы добавить этот заголовок во всех сообщениях, а также в ошибках или исключения сообщений что я не контролирую с помощью try/catch.
Как я могу это сделать?
EDIT 1
Мой заказ регистратор имеет родительский регистратор, и этот родитель регистратор имеет корневой регистратор.
Logger.getLogger("")
|------> Logger.getLogger("global")
|------> Logger.getLogger(Logger.GLOBAL_LOGGER_NAME + "." + custom_name)
Я сделал тест. Я создал пользовательский PrintStream
и OutputStream
, чтобы избежать, что ошибки не отображаются на консоли и файл журнала, установив его на System.err
:
CustomNullPrintStream pse = new CustomNullPrintStream(new CustomNullOutputStream());
System.setErr(pse);
- CustomNullPrintStream расширяет PrintStream
- CustomNullPrintStream расширяет OutputStream
Который я переопределил все методы без кода содержимого.
Тогда, если я провоцирую исключение вроде этого:
try {
throw new Exception("ERROR TEST");
} catch (Exception e1) {
e1.printStackTrace();
}
Исключение не отображается на консоли и файл журнала. Но если я провоцирую исключение, как это без Try/улова:
int iii = 1/0;
iii = iii+1;
Исключения видно и продолжает показывать на консоли и файл журнал. Почему? В двух случаях есть исключения/ошибки.
Какую версию JBoss AS, JBoss EAP или WildFly вы используете? –
Привет @ JamesR.Perkins, я использую WildFly 8 (8.2.1.Final) и Java (jdk 1.8.0_121) с Eclipse IDE. – stivex
Откуда появляется сообщение '[CERT: 1642 ENS: 5]'? Формат даты довольно прост с шаблоном-форматированием. Другая часть тоже может быть. –