Сообщений: 9
Тем: 5
Зарегистрирован: May 2011
Репутация:
0
Здравствуйте подскажите как выводить stackTrace исключения в файл.
В данный момент в Windows лог файл создаю так:
Код: java -Xmx32m -cp mysql-connector-java-5.1.18-bin.jar; ServerSide >> stdout.log
в коде ошибка выводится так
Код: catch (SQLException ex) {
System.out.println(ex.toString());
ex.printStackTrace();
}
System.out.println(ex.toString()); попадает в stdout.log
а ex.printStackTrace(); пишется в консоль а в лог файл не попадает, подскажите пожалуйста как можно вывести стек трейс в файл.
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
ну так напишите простеньку писалку лога в файл
Сообщений: 1,912
Тем: 56
Зарегистрирован: Jan 2009
Репутация:
12,921
StringWriter st = new StringWriter();
ex.printStackTrace(st);
st.toString() - строка с трейсом
Сообщений: 2,455
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
Используйте дополнительные библиотеки от Apache-сообщества, там все делается буквально в одну-две строчки. Если же их по какой-либо причине невозможно использовать, то записать куда-либо трассировку стека, можно через принт стрим или же принт врайтер. Причем врайтер мы можем обернуть в стринг врайтер, а дальше делать уже, что хотим
А вообще хорошо читать время от времени javadoc стандартной библиотеки.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Сообщений: 2,303
Тем: 24
Зарегистрирован: Sep 2010
Репутация:
5,617
для log4j например:
Конфиг аппендера:
Код: <appender name="ERROR_APPENDER" class="l2god.log.appenders.TruncateToZipFileAppender">
<param name="file" value="log/java/errors.log"/>
<param name="append" value="false"/>
<param name="backupDir" value="log/backup"/>
<!-- Windows systems doesn't support : char in file names -->
<param name="backupDateFormat" value="yyyy-MM-dd HH-mm-ss"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p %d{yyyy-MM-dd HH:mm:ss}] %c:%L - %m%n"/>
</layout>
<filter class="l2god.log.filters.ThrowablePresentFilter"/>
</appender>
и собсно сам фильтр
Код: public class ThrowableAsMessageLogger extends Logger
{
/**
* Creates new instance of this logger
*
* @param name logger's name
*/
protected ThrowableAsMessageLogger(String name)
{
super(name);
}
/**
* This method checks if message is instance of throwbale and throwable is null. If it is so it will move message to
* throwable and set Locationalized message of throwable as message of the log record
*
* @param fqcn fully qualified class name, it would be used to get the line of call
* @param level level of log record
* @param message message of log record
* @param t throwable, if any present
*/
@Override
protected void forcedLog(String fqcn, Priority level, Object message, Throwable t)
{
if (message instanceof Throwable && t == null)
{
t = (Throwable) message;
message = t.getLocalizedMessage();
}
super.forcedLog(fqcn, level, message, t);
}
}
Сообщений: 123
Тем: 2
Зарегистрирован: Sep 2008
Репутация:
1,861
А вот так не пробывали?
Код: java -Xmx32m -cp mysql-connector-java-5.1.18-bin.jar; ServerSide >> stdout.log 2>&1
Сообщений: 104
Тем: 13
Зарегистрирован: May 2011
Репутация:
-16
ASevenfold Написал:Используйте дополнительные библиотеки от Apache-сообщества, там все делается буквально в одну-две строчки. Да чувак, ну ты и сказанул, сразу ясно с апачем ты не работал.
Сообщений: 509
Тем: 7
Зарегистрирован: Apr 2008
Репутация:
1,660
Хлорка Написал:Да чувак, ну ты и сказанул, сразу ясно с апачем ты не работал.
по сравнению с JUL (jdk 1.4 java.util.logging) commons-logging просто шедевр.
P.S. Пользуюсь slf4j + logback / log4j :]
Сообщений: 2,455
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
Хлорка Написал:Да чувак, ну ты и сказанул, сразу ясно с апачем ты не работал.
2Хлорка
Я ничего не буду писать, я просто оставлю это тут:
Хотя нет, я все же скажу:
Apache commons
Код: ExceptionUtils.getStackTrace(e);
Clear java
Код: StringWriter sw = new StringWriter();
t.printStackTrace(sw);
sw.toString();
Aquanox Написал:по сравнению с JUL (jdk 1.4 java.util.logging) commons-logging просто шедевр.
P.S. Пользуюсь slf4j + logback / log4j :] Я говорил в данном случае, про commons-lang библиотеку
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Сообщений: 509
Тем: 7
Зарегистрирован: Apr 2008
Репутация:
1,660
ASevenfold Написал:Я говорил в данном случае, про commons-lang библиотеку Забыл за нее, редко пользуюсь.
Раз stacktrace для вывода используется то лучше всетаки использовать логгер.
|