You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-user@logging.apache.org by Frode Breimo <fr...@broadpark.no> on 2005/05/26 12:37:02 UTC

Using parameters with ADONetAppender and FireBird

Hi

I''ve been working for two days now trying to send log information to my 
FireBird database using SQL parameters, but I've been unable to find any 
helpful examples or articles and could really use some help.

For testing purposes I'm just using a very simple table called TESTTABLE 
with a single column called TESTSTRING, of type VarChar. I've tried 
several things but here's what the appender definition in my config file 
look like now:

    <appender name="myODBCAppender" type="log4net.Appender.ADONetAppender" >
        <bufferSize value="1"/>
        <param name="Threshold" value="ERROR" />
        <param name="ConnectionType" 
value="System.Data.Odbc.OdbcConnection, System.Data, version=1.0.3300.0, 
publicKeyToken=b77a5c561934e089, culture=neutral" />
        <param name="ConnectionString" 
value="DRIVER=Firebird/Interbase(r) 
driver;UID=sysdba;PWD=masterkey;DBNAME=127.0.0.1:c:\\mbos\\mtbs1604v.gdb" />
        <param name="CommandText" value="INSERT INTO TESTTABLE 
(TESTSTRING) VALUES (:logText)" />
        <param name="Parameter">
            <param name="ParameterName" value="logText" />
            <param name="DbType" value="String" />
            <param name="Layout" type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="%P{logText}" />
            </param>
        </param>
    </appender>

Using this config I get the following error message when I declare my 
logger:

    log4net:ERROR [ADONetAppender] Could not prepare database command 
[INSERT INTO TESTTABLE    (TESTSTRING) VALUES (:logText)]
    System.Data.Odbc.OdbcException: ERROR [HY000] Dynamic SQL Error
    SQL error code = -206
    Column unknown
    LOGTEXT
    At line 1, column 45.

If I change the CommandText and use (@logText) instead of (:logText) I 
get the following error:

    SQL error code = -104
    Token unknown - line 1, char 44
    @

If I remove the parameter and replace it with a set value everything 
works fine, so for instance
    <param name="CommandText" value="INSERT INTO TESTTABLE (TESTSTRING) 
VALUES ('TestValue')" />
will insert the value "TestValue" into the database, so there's nothing 
wrong with the connection.

This should be possible just using the config file, shouldn't it? I 
don't want to have to create everything programmatically.

I'm totally lost here, and any help would be much appreciated. I'm using 
log4net 1.2.0 Beta 8 and FireBird 1.5, the project is a .Net 1.1 console 
application (for testing purposes, log4net will eventually be used in 
our asp.net solutions)


Thank you,
Frode