Return-Path: Delivered-To: apmail-logging-log4j-dev-archive@www.apache.org Received: (qmail 73145 invoked from network); 1 Dec 2008 10:38:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Dec 2008 10:38:26 -0000 Received: (qmail 19251 invoked by uid 500); 1 Dec 2008 10:38:38 -0000 Delivered-To: apmail-logging-log4j-dev-archive@logging.apache.org Received: (qmail 19231 invoked by uid 500); 1 Dec 2008 10:38:37 -0000 Mailing-List: contact log4j-dev-help@logging.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Log4J Developers List" Reply-To: "Log4J Developers List" Delivered-To: mailing list log4j-dev@logging.apache.org Received: (qmail 19220 invoked by uid 99); 1 Dec 2008 10:38:37 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Dec 2008 02:38:37 -0800 X-ASF-Spam-Status: No, hits=2.4 required=10.0 tests=HTML_MESSAGE,SPF_PASS,WHOIS_MYPRIVREG X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of vaibhavkumar14@gmail.com designates 209.85.200.170 as permitted sender) Received: from [209.85.200.170] (HELO wf-out-1314.google.com) (209.85.200.170) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Dec 2008 10:37:06 +0000 Received: by wf-out-1314.google.com with SMTP id 24so2638483wfg.7 for ; Mon, 01 Dec 2008 02:37:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type:references; bh=lQTuJSIYkQoUyk2HlMoU+M9FCkyyOBAa9a41rzrO2bI=; b=uEqeTR0KhG4K8qdoR4B/M/AdqK9CRU1HhALXyrLo3tJafqB7qUpNHuxx6Mqml9p9Ze QF0HCLgsBxfPU1zkSuN3J3YhxBNPdSaWgy5tqGQz+tPBNnw1wRDAJ97MUsrWqjo2ygG+ 6kFPPTC2OznrB3WDcNSMdJU+kFmE/eFkZ8Iso= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:references; b=GCzA23r3XC/PS04Ah07ir9hcVciQ92klG0Q2lt1Cngabsga54Pd4Trjd0rqyGbyX1Z +D2VvJKRf2IrGm0pJMBB3xEdEMOznvK0BRbEaHvl8XRqpMBg1RO8og0YM4tZNTdYrwcI BBSwsRbPbxxGucUeWOj8/kvkO5AiyZzMWFVVM= Received: by 10.142.43.19 with SMTP id q19mr4460499wfq.187.1228127873409; Mon, 01 Dec 2008 02:37:53 -0800 (PST) Received: by 10.142.155.14 with HTTP; Mon, 1 Dec 2008 02:37:53 -0800 (PST) Message-ID: <349b2c0f0812010237k7a1299eara61894dff5562875@mail.gmail.com> Date: Mon, 1 Dec 2008 16:07:53 +0530 From: "Vaibhav Kumar" To: "Log4J Developers List" Subject: Re: CLOB column datatype for JDBCPlus jdbc appender In-Reply-To: <20682090.post@talk.nabble.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_68737_2688655.1228127873401" References: <349b2c0f0809040236p3b2887b3tbb54f6d32dd9199d@mail.gmail.com> <20682090.post@talk.nabble.com> X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_68737_2688655.1228127873401 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Ece, For CLOB usage, you would have to modify log4j.xml by using the prepared statement approach. Also you would have to use MDC in your logger class. eg. in log4j.xml In logger class code snippet can be: MDC.put(MESSAGE_TIMESTAMP, getMessageDate(date_time)); MDC.put(PROCESS_ID, process_id); MDC.put(PROCESS_NAME, process_name); MDC.put(MESSAGE_ID, message_id); MDC.put(TRANSACTION_ID, transaction_id); MDC.put(INSTANCE_ID, instance_id); MDC.put(SOURCE_SYSTEM, source); MDC.put(TARGET_SYSTEM, target); MDC.put(ERROR_LOG_LEVEL, service_level); MDC.put(ERROR_MESSAGE, message); MDC.put(ROW_MODIFY_DATE, formatter.format(new Date())); MDC.put(ROW_CREATE_DATE, formatter.format(new Date())); subsequently removal also: MDC.remove(PROCESS_ID); MDC.remove(PROCESS_NAME); MDC.remove(MESSAGE_TIMESTAMP); MDC.remove(MESSAGE_ID); MDC.remove(TRANSACTION_ID); MDC.remove(INSTANCE_ID); MDC.remove(SOURCE_SYSTEM); MDC.remove(TARGET_SYSTEM); MDC.remove(ERROR_LOG_LEVEL); MDC.remove(ERROR_MESSAGE); MDC.remove(ROW_MODIFY_DATE); MDC.remove(ROW_CREATE_DATE); Thanks & Regards, Vaibhav On Tue, Nov 25, 2008 at 8:34 PM, Ece Yildirim wrote: > > Hi Vaibhav, > > I am suffering of the same error. Could you find a solution regarding this > problem ? I checked org.apache.log4j.jdbcplus.JDBCLogger class, there seems > to be no explicit implementation for CLOB data type. > > Thank you > Ece > > > > > Vaibhav Kumar wrote: > > > > Hi, > > I am using JDBCPlus (http://www.dankomannhaupt.de/projects/index.html ) > as > > a > > jdbc appender for my application. For a particular requirement, I have to > > make a column datatype from varchar2(4000) to CLOB. But as soon as I do > > this, my application fails to log in database giving stack trace as > > > > log4j:ERROR JDBCAppender::flush_buffer(), : > > java.sql.SQLException: Internal Error: Unable to construct a Datum from > > the > > specified input > > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168) > > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210) > > at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:829) > > at oracle.sql.SQLUtil.makeDatum(SQLUtil.java:645) > > at oracle.sql.SQLUtil.makeOracleDatum(SQLUtil.java:946) > > at > > > oracle.jdbc.driver.UpdatableResultSet.updateObject(UpdatableResultSet.java:1568) > > at > > > oracle.jdbc.driver.OracleResultSet.updateObject(OracleResultSet.java:2787) > > at org.apache.log4j.jdbcplus.JDBCLogger.append(JDBCLogger.java:742) > > at > > > org.apache.log4j.jdbcplus.JDBCAppender.flush_buffer(JDBCAppender.java:887) > > at > org.apache.log4j.jdbcplus.JDBCAppender.append(JDBCAppender.java:867) > > at > > org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) > > at > > > org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) > > at org.apache.log4j.Category.callAppenders(Category.java:203) > > at org.apache.log4j.Category.forcedLog(Category.java:388) > > at org.apache.log4j.Category.log(Category.java:853) > > at edu.unc.its.util.UNCLogger.prepareAndLogMessage(UNCLogger.java:445) > > at edu.unc.its.util.UNCLoggerClient.main(UNCLoggerClient.java:23) > > log4j:ERROR JDBCAppender::flush_buffer(), : > > java.sql.SQLException: Internal Error: Unable to construct a Datum from > > the > > specified input > > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168) > > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210) > > at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:829) > > at oracle.sql.SQLUtil.makeDatum(SQLUtil.java:645) > > at oracle.sql.SQLUtil.makeOracleDatum(SQLUtil.java:946) > > at > > > oracle.jdbc.driver.UpdatableResultSet.updateObject(UpdatableResultSet.java:1568) > > at > > > oracle.jdbc.driver.OracleResultSet.updateObject(OracleResultSet.java:2787) > > at org.apache.log4j.jdbcplus.JDBCLogger.append(JDBCLogger.java:742) > > at > > > org.apache.log4j.jdbcplus.JDBCAppender.flush_buffer(JDBCAppender.java:887) > > at > org.apache.log4j.jdbcplus.JDBCAppender.append(JDBCAppender.java:867) > > at > > org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) > > at > > > org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) > > at org.apache.log4j.Category.callAppenders(Category.java:203) > > at org.apache.log4j.Category.forcedLog(Category.java:388) > > at org.apache.log4j.Category.log(Category.java:853) > > at edu.unc.its.util.UNCLogger.prepareAndLogMessage(UNCLogger.java:445) > > at edu.unc.its.util.UNCLoggerClient.main(UNCLoggerClient.java:23) > > > > > > Any suggestions as to how can I incorporate a CLOB datatype in JDBCPlus > > jdbc > > appender will be most welcome. > > > > Regards, > > Vaibhav > > > > > > -- > View this message in context: > http://www.nabble.com/CLOB-column-datatype-for-JDBCPlus-jdbc-appender-tp19306835p20682090.html > Sent from the Log4j - Dev mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org > For additional commands, e-mail: log4j-dev-help@logging.apache.org > > ------=_Part_68737_2688655.1228127873401 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Ece,
For CLOB usage, you would have to modify log4j.xml by using the prepared statement approach. Also you would have to use MDC in your logger class.
eg. in log4j.xml

<appender name="JDBC" class="org.apache.log4j.jdbcplus.JDBCAppender">

        <param name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
         <param name="dbclass" value="oracle.jdbc.OracleDriver" />
        <param name="username" value="system" />
        <param name="password" value="welcome1" />
        <param name="connector" value="edu.unc.its.util.MyOracleConnectionHandler" />
        <param name="table" value="error_log" />
          <param name="column" value="id~ORACLE_SEQUENCE~error_log_seq" />
         <param name="column" value="process_id~MDC~ProcessId" />
         <param name="column" value="process_name~MDC~ProcessName" />
         <param name="column" value="message_id~MDC~MessageId" />
         <param name="column" value="transaction_id~MDC~TransactionId" />
         <param name="column" value="instance_id~MDC~InstanceId" />
         <param name="column" value="source_system~MDC~SourceSystem" />
         <param name="column" value="target_system~MDC~TargetSystem" />
         <param name="column" value="error_log_level~MDC~ErrorLogLevel" />         
         <param name="column" value="attribute1~MDC~Attribute1" />
         <param name="column" value="attribute2~MDC~Attribute2" />
         <param name="column" value="attribute3~MDC~Attribute3" />
         <param name="column" value="attribute4~MDC~Attribute4" />
         <param name="column" value="attribute5~MDC~Attribute5" />
         <param name="column" value="error_message~MDC~ErrorMessage" />
         <param name="column" value="row_mod_dt~MDC~RowModifyDate" />
         <param name="column" value="row_create_dt~MDC~RowCreateDate" />
         <param name="column" value="message_timestamp~MDC~MessageTimestamp" />      
          <param name="usePreparedStatements" value="true" />
          <param name="usePreparedStatements" value="true" />
         <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="error" />
            <param name="LevelMax" value="fatal" />
        </filter>
    </appender>

In logger class code snippet can be:
        MDC.put(MESSAGE_TIMESTAMP, getMessageDate(date_time));
        MDC.put(PROCESS_ID, process_id);
        MDC.put(PROCESS_NAME, process_name);
        MDC.put(MESSAGE_ID, message_id);
        MDC.put(TRANSACTION_ID, transaction_id);
        MDC.put(INSTANCE_ID, instance_id);
        MDC.put(SOURCE_SYSTEM, source);
        MDC.put(TARGET_SYSTEM, target);
        MDC.put(ERROR_LOG_LEVEL, service_level);
        MDC.put(ERROR_MESSAGE, message);
        MDC.put(ROW_MODIFY_DATE, formatter.format(new Date()));
        MDC.put(ROW_CREATE_DATE, formatter.format(new Date()));

subsequently removal also:

        MDC.remove(PROCESS_ID);
        MDC.remove(PROCESS_NAME);
        MDC.remove(MESSAGE_TIMESTAMP);
        MDC.remove(MESSAGE_ID);
        MDC.remove(TRANSACTION_ID);
        MDC.remove(INSTANCE_ID);
        MDC.remove(SOURCE_SYSTEM);
        MDC.remove(TARGET_SYSTEM);
        MDC.remove(ERROR_LOG_LEVEL);
        MDC.remove(ERROR_MESSAGE);
        MDC.remove(ROW_MODIFY_DATE);
        MDC.remove(ROW_CREATE_DATE);

         
Thanks & Regards,
Vaibhav


On Tue, Nov 25, 2008 at 8:34 PM, Ece Yildirim <eceyld@yahoo.com> wrote:

Hi Vaibhav,

I am suffering of the same error. Could you find a solution regarding this
problem ? I checked org.apache.log4j.jdbcplus.JDBCLogger class, there seems
to be no explicit implementation for CLOB data type.

Thank you
Ece




Vaibhav Kumar wrote:
>
> Hi,
> I am using JDBCPlus (http://www.dankomannhaupt.de/projects/index.html ) as
> a
> jdbc appender for my application. For a particular requirement, I have to
> make a column datatype from varchar2(4000) to CLOB. But as soon as I do
> this, my application fails to log in database giving stack trace as
>
> log4j:ERROR JDBCAppender::flush_buffer(), :
> java.sql.SQLException: Internal Error: Unable to construct a Datum from
> the
> specified input
>    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
>    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
>    at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:829)
>    at oracle.sql.SQLUtil.makeDatum(SQLUtil.java:645)
>    at oracle.sql.SQLUtil.makeOracleDatum(SQLUtil.java:946)
>    at
> oracle.jdbc.driver.UpdatableResultSet.updateObject(UpdatableResultSet.java:1568)
>    at
> oracle.jdbc.driver.OracleResultSet.updateObject(OracleResultSet.java:2787)
>    at org.apache.log4j.jdbcplus.JDBCLogger.append(JDBCLogger.java:742)
>    at
> org.apache.log4j.jdbcplus.JDBCAppender.flush_buffer(JDBCAppender.java:887)
>    at org.apache.log4j.jdbcplus.JDBCAppender.append(JDBCAppender.java:867)
>    at
> org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
>    at
> org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
>    at org.apache.log4j.Category.callAppenders(Category.java:203)
>    at org.apache.log4j.Category.forcedLog(Category.java:388)
>    at org.apache.log4j.Category.log(Category.java:853)
>    at edu.unc.its.util.UNCLogger.prepareAndLogMessage(UNCLogger.java:445)
>    at edu.unc.its.util.UNCLoggerClient.main(UNCLoggerClient.java:23)
> log4j:ERROR JDBCAppender::flush_buffer(), :
> java.sql.SQLException: Internal Error: Unable to construct a Datum from
> the
> specified input
>    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
>    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
>    at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:829)
>    at oracle.sql.SQLUtil.makeDatum(SQLUtil.java:645)
>    at oracle.sql.SQLUtil.makeOracleDatum(SQLUtil.java:946)
>    at
> oracle.jdbc.driver.UpdatableResultSet.updateObject(UpdatableResultSet.java:1568)
>    at
> oracle.jdbc.driver.OracleResultSet.updateObject(OracleResultSet.java:2787)
>    at org.apache.log4j.jdbcplus.JDBCLogger.append(JDBCLogger.java:742)
>    at
> org.apache.log4j.jdbcplus.JDBCAppender.flush_buffer(JDBCAppender.java:887)
>    at org.apache.log4j.jdbcplus.JDBCAppender.append(JDBCAppender.java:867)
>    at
> org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
>    at
> org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
>    at org.apache.log4j.Category.callAppenders(Category.java:203)
>    at org.apache.log4j.Category.forcedLog(Category.java:388)
>    at org.apache.log4j.Category.log(Category.java:853)
>    at edu.unc.its.util.UNCLogger.prepareAndLogMessage(UNCLogger.java:445)
>    at edu.unc.its.util.UNCLoggerClient.main(UNCLoggerClient.java:23)
>
>
> Any suggestions as to how can I incorporate a CLOB datatype in JDBCPlus
> jdbc
> appender will be most welcome.
>
> Regards,
> Vaibhav
>
>

--
View this message in context: http://www.nabble.com/CLOB-column-datatype-for-JDBCPlus-jdbc-appender-tp19306835p20682090.html
Sent from the Log4j - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


------=_Part_68737_2688655.1228127873401--