Форум программистов, компьютерный форум CyberForum.ru

Java и базы данных

Войти
Регистрация
Восстановить пароль
 
 
antopro
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 47
#1

PostgreSQL При настройке log4j для jdbc вылетает exception - Java БД

08.12.2016, 22:31. Просмотров 481. Ответов 21
Метки нет (Все метки)

Моя цель - настроить логирование с сохранением в базу данных. Использую log4j. Вот сам аппендер, который у меня получился:
XML
1
2
3
4
5
6
7
8
9
10
<JDBC name="databaseAppender" tableName="APPLICATION_LOG">
            <ConnectionFactory class="com.yauhenikuntsevich.training.onlinestore.services.utils.ConnectionToDB"
                method="openConnectionToDB" />
            <Column name="EVENT_ID" literal="APPLICATION_LOG_SEQUENCE.NEXTVAL" />
            <Column name="EVENT_DATE" isEventTimestamp="true" />
            <Column name="LEVEL" pattern="%level" />
            <Column name="LOGGER" pattern="%logger" />
            <Column name="MESSAGE" pattern="%message" />
            <Column name="THROWABLE" pattern="%ex{full}" />
        </JDBC>
При помощи этого класса получаю конекшен, сам по себе он работает, проверял:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.yauhenikuntsevich.training.onlinestore.services.utils;
 
import java.sql.Connection;
import java.sql.DriverManager;
 
public class ConnectionToDB {
    private static final String URL = "jdbc:postgresql://localhost:5432/onlinestore";
    private static final String USER_NAME = "postgres";
    private static final String PASSWORD = "postgres1";
 
    public static Connection openConnectionToDB() {
        try {
            return DriverManager.getConnection(URL, USER_NAME, PASSWORD);
        } catch (Exception e) {
            System.out.println("Сonnection failed");
            e.printStackTrace();
        }
        return null;
    }
}
При этом получается зацикливание и вот такой стектрейс:

2016-12-08 21:20:10,229 ERROR Unable to write to database [jdbcManager{ description=databaseAppender, bufferSize=0, connectionSource=factory{ public static java.sql.Connection com.yauhenikuntsevich.training.onlinestore.services.utils.ConnectionToDB.openConnectionToDB() }, tableName=APPLICATION_LOG, columns=[ { name=EVENT_ID, layout=null, literal=APPLICATION_LOG_SEQUENCE.NEXTVAL, timestamp=false }, { name=EVENT_DATE, layout=null, literal=null, timestamp=true }, { name=LEVEL, layout=%level, literal=null, timestamp=false }, { name=LOGGER, layout=%logger, literal=null, timestamp=false }, { name=MESSAGE, layout=%message, literal=null, timestamp=false }, { name=THROWABLE, layout=%ex{full}, literal=null, timestamp=false } ] }] for appender [databaseAppender]. org.apache.logging.log4j.core.appender.AppenderLoggingException: Failed to insert record for log event in JDBC manager: Метод org.postgresql.jdbc.PgPreparedStatement.setNString(int, String) ещё не реализован

at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.writeInternal(JdbcDatabaseManager.java:125)
at org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.write(AbstractDatabaseManager.java:167)
at org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.append(AbstractDatabaseAppender.java:105)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:99)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112)
at org.apache.logging.slf4j.Log4jLogger.log(Log4jLogger.java:375)
at org.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:620)
at org.eclipse.jetty.util.log.JettyAwareLogger.info(JettyAwareLogger.java:314)
at org.eclipse.jetty.util.log.Slf4jLog.info(Slf4jLog.java:74)
at org.eclipse.jetty.util.log.Log.initialized(Log.java:186)
at org.eclipse.jetty.util.log.Log.getLogger(Log.java:288)
at org.eclipse.jetty.util.log.Log.getLogger(Log.java:278)
at org.eclipse.jetty.util.component.AbstractLifeCycle.<clinit>(AbstractLifeCycle.java:35)
at com.yauhenikuntsevich.training.onlinestore.web.StartJetty.main(StartJetty.java:22)

Caused by: java.sql.SQLFeatureNotSupportedException: Метод org.postgresql.jdbc.PgPreparedStatement.setNString(int, String) ещё не реализован
at org.postgresql.Driver.notImplemented(Driver.java:646)
at org.postgresql.jdbc.PgPreparedStatement.setNString(PgPreparedStatement.java:1518)
at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.writeInternal(JdbcDatabaseManager.java:110)
... 16 more
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KEKCoGEN
Модератор
Эксперт Java
1878 / 1756 / 426
Регистрация: 28.12.2010
Сообщений: 7,111
09.12.2016, 12:44     PostgreSQL При настройке log4j для jdbc вылетает exception #21
Сообщение было отмечено автором темы, экспертом или модератором как ответ
antopro, ясно. Это не отменяет факта что интерфейс реализован неверно.
Проблема ваша в том что postgres действительно не реализует метод setNstring. Скорее всего вам поможет не использовать юникод в ваших колонках, тогда будет вызван обычный метод setString. Попробуйте переделать конфиг логера

XML
1
2
3
4
            <Column name="DATED" isEventTimestamp="true" isUnicode="false" />
            <Column name="LEVEL" pattern="%level" isUnicode="false" />
            <Column name="LOGGER" pattern="%logger" isUnicode="false" />
            <Column name="MESSAGE" pattern="%msg%n" isUnicode="false" />
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2016, 13:01     PostgreSQL При настройке log4j для jdbc вылетает exception
Еще ссылки по теме:

Java БД Подключение драйверов для JDBC динамически
Разработать приложение на Java, взаимодействующие с базой данных при помощи JDBC-драйвера Java БД
Java БД Ошибка при настройке Spring и Hibernate
Java БД JDBC FAQ для начинающих
Кодировка в консоли при работе с jdbc. Windows 10 Java БД

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
antopro
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 47
09.12.2016, 13:01  [ТС]     PostgreSQL При настройке log4j для jdbc вылетает exception #22
KEKCoGEN, спасибо, думал застрелюсь, заработало)
Yandex
Объявления
09.12.2016, 13:01     PostgreSQL При настройке log4j для jdbc вылетает exception
Ответ Создать тему
Опции темы

Текущее время: 05:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru