2017-01-13 2 views
-2

Я создал нижеследующее соединение JDBC, и теперь он работает нормально с приведенным ниже кодом, и я использую log4j, в случае отказа JDBC-соединения я хотел зарегистрировать его в файле журнала, а не показывать на консолиОбработка исключений Jdbc

public class projectDaoJdbcImpl implements projectDao { 
static Logger logger = Logger.getLogger(projectDaoJdbcImpl.class); 


@Override 
public boolean updateproject(updateentity projectObj) throws Exception { 
    FileInputStream fis = new FileInputStream("C:\\Users\\kdhandap\\database.properties"); 
    Properties props = new Properties(); 
    props.load(fis); 
    String JDBC_DRIVER = props.getProperty("Driver"); 
    String USER = props.getProperty("Username"); 
    String PASS = props.getProperty("Password"); 
    String url = "jdbc:mysql://" + projectObj.getServerName() + ":3306/tablename"; 
    boolean result = false; 
    Connection conn = null; 
    PreparedStatement stmt = null; 
    String sql = "UPDATE table SET columnname='" + projectObj.getFlagStatus() 
      + "' WHERE projectID IN (" + projectObj.projectId() + ")"; 

    try { 
     Class.forName(JDBC_DRIVER); 
     conn = DriverManager.getConnection(url, USER, PASS); 
     stmt = conn.prepareStatement(sql); 
     if (stmt.executeUpdate() != 0) { 
      result = true; 
     } 

    } 

    catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SQLException se) { 
     se.printStackTrace(); 
    } 
    finally{ 
     stmt.close(); 
     conn.close(); 
    } 
    return result; 

} 

Попытка иметь статус logger.warn и захватить в лог-файл и не знаете, куда обращаться с этим

+0

Обработка в SQL Exception должна делать это ..также, если вы хотите обрабатывать другие исключения, попробуйте удалить «throws Exception» из объявления метода –

+0

Я не уверен, что понимаю проблему. У вас есть регистратор. Вам нужно вызвать метод warn() вместо использования e.printStackTrace(). Какова конкретная проблема? –

+0

Я хотел захватить вывод e.printStackTrace(). в моем файле журнала – Keerthisairam

ответ

1

Вы можете сделать это, как внутри уловом:

logger.warn("YourMessage",e); 

Что будет записывать и печатать stracktrace внутри вашего файла журнала.

От JavaDoc:

Регистрирует CharSequence на уровне WARN включая стек след Throwable т, переданного в качестве параметра.

То же самое можно сделать для других уровней, исходя из ваших требований.

+0

он работает, но я хочу скрыть его в консоли во время выполнения, просто хотел отобразить мое сообщение – Keerthisairam

+0

. Постарайтесь: http://stackoverflow.com/questions/6095992/disable-log4j-console-logging-and- enable-file-logging –

+0

Эта ссылка относится к протоколированию с использованием файла свойств, и я сделал с использованием XML – Keerthisairam

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