Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Java вывод stackTrace в логах
#1
Здравствуйте подскажите как выводить 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(); пишется в консоль а в лог файл не попадает, подскажите пожалуйста как можно вывести стек трейс в файл.
Ответ
#2
ну так напишите простеньку писалку лога в файл
Ответ
#3
StringWriter st = new StringWriter();

ex.printStackTrace(st);

st.toString() - строка с трейсом
consulo.io - Consulo - multi-language IDE
Ответ
#4
Используйте дополнительные библиотеки от Apache-сообщества, там все делается буквально в одну-две строчки. Если же их по какой-либо причине невозможно использовать, то записать куда-либо трассировку стека, можно через принт стрим или же принт врайтер. Причем врайтер мы можем обернуть в стринг врайтер, а дальше делать уже, что хотим Wink

А вообще хорошо читать время от времени javadoc стандартной библиотеки.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#5
для 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);
    }
}
Ответ
#6
А вот так не пробывали? Smile
Код:
java -Xmx32m -cp mysql-connector-java-5.1.18-bin.jar; ServerSide >> stdout.log 2>&1
Ответ
#7
ASevenfold Написал:Используйте дополнительные библиотеки от Apache-сообщества, там все делается буквально в одну-две строчки.
Да чувак, ну ты и сказанул, сразу ясно с апачем ты не работал.
Ответ
#8
Хлорка Написал:Да чувак, ну ты и сказанул, сразу ясно с апачем ты не работал.

по сравнению с JUL (jdk 1.4 java.util.logging) commons-logging просто шедевр.

P.S. Пользуюсь slf4j + logback / log4j :]
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#9
Хлорка Написал:Да чувак, ну ты и сказанул, сразу ясно с апачем ты не работал.
2Хлорка

Aquanox Написал:по сравнению с JUL (jdk 1.4 java.util.logging) commons-logging просто шедевр.

P.S. Пользуюсь slf4j + logback / log4j :]
Я говорил в данном случае, про commons-lang библиотеку Smile
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#10
ASevenfold Написал:Я говорил в данном случае, про commons-lang библиотеку Smile
Забыл за нее, редко пользуюсь.

Раз stacktrace для вывода используется то лучше всетаки использовать логгер.
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Сервер майнкрафт 1.17 не видит Java 16 Erikvd2244 0 590 05-18-2023, 05:59 PM
Последний пост: Erikvd2244
  Требуется Java разработчик в RVR мод л2 slimak 0 2,402 03-19-2018, 11:08 PM
Последний пост: slimak
  Java Unicode Boris2105 1 2,795 08-10-2017, 02:09 AM
Последний пост: klubheads
  Java junior Tails 18 7,174 07-17-2017, 03:52 PM
Последний пост: n3k0nation
  Установить старую java ZIP 2 3,396 09-27-2016, 10:39 AM
Последний пост: Aquanox
  Учебники и книги по Java 2 CHIPSET 47 55,211 09-06-2016, 10:14 PM
Последний пост: sawayik
  Java == API == Libraries Kenrix 1 2,216 05-11-2014, 05:28 PM
Последний пост: n3k0nation
  Java 8 JavaMan 33 9,444 04-08-2014, 01:06 PM
Последний пост: SouthBridge
  Опрос от Оракла: Особенности Java EE 8 JavaMan 0 1,522 01-11-2014, 04:13 AM
Последний пост: JavaMan
  Java NB Задачи на последовательность NDWT 0 2,199 12-26-2013, 04:47 PM
Последний пост: NDWT

Перейти к форуму:


Пользователи, просматривающие эту тему: 4 Гость(ей)