Are you sure it's AnsiString?  

Anyway, I did notice that any varchar > 4000 wasn't available. I had
columns with 8000 on them and it couldn't log to them. I also had a text
field and it didn't work. But the following does work for me but I use
String as opposed to AnsiString.

<appender name="SQLAppender" type="log4net.Appender.ADONetAppender">
                <param name="BufferSize" value="50" />
                <param name="ConnectionType"
value="System.Data.SqlClient.SqlConnection, System.Data,
Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
                <param name="ConnectionString" value="data
source=localmachine;initial catalog=ICLIC;persist security
info=True;User ID=sa;Password=cactus" />
                <param name="CommandText" value="INSERT INTO
Qic_tIClicWebLogs (Qic_dtDate, Qic_stThread, Qic_stLogLevel,
Qic_stLogger, Qic_stSession, Qic_stMessage) VALUES  (@LogDate, @Thread,
@LogLevel, @Logger, @Session, @Message)" />
                <param name="Parameter">
                        <param name="ParameterName" value="@LogDate" />
                        <param name="DbType" value="DateTime" />
                        <param name="Layout"
type="log4net.Layout.RawTimeStampLayout" />
                </param>
                <param name="Parameter">
                        <param name="ParameterName" value="@Thread" />
                        <param name="DbType" value="String" />
                        <param name="Size" value="50" />
                        <param name="Layout"
type="log4net.Layout.PatternLayout">
                                <param name="ConversionPattern"
value="%t" />
                        </param>
                </param>
                <param name="Parameter">
                        <param name="ParameterName" value="@LogLevel" />
                        <param name="DbType" value="String" />
                        <param name="Size" value="50" />
                        <param name="Layout"
type="log4net.Layout.PatternLayout">
                                <param name="ConversionPattern"
value="%p" />
                        </param>
                </param>
                <param name="Parameter">
                        <param name="ParameterName" value="@Logger" />
                        <param name="DbType" value="String" />
                        <param name="Size" value="200" />
                        <param name="Layout"
type="log4net.Layout.PatternLayout">
                                <param name="ConversionPattern"
value="%c" />
                        </param>
                </param>
                <param name="Parameter">
                        <param name="ParameterName" value="@Session" />
                        <param name="DbType" value="String" />
                        <param name="Size" value="50" />
                        <param name="Layout"
type="log4net.Layout.PatternLayout">
                                <param name="ConversionPattern"
value="%x" />
                        </param>
                </param>
                <param name="Parameter">
                        <param name="ParameterName" value="@Message" />
                        <param name="DbType" value="String" />
                        <param name="Size" value="4000" />
                        <param name="Layout"
type="log4net.Layout.PatternLayout">
                                <param name="ConversionPattern"
value="%m" />
                        </param>
                </param>
        </appender>

Philippe Lavoie
 
   Cactus Commerce         eBusiness. All Business.
 Tel 819.778.0313 x302 * 888.CACTUS.0 * Fax 819.771.0921
www.cactuscommerce.com [EMAIL PROTECTED]

-----Original Message-----
From: Adam Patacchiola [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, March 23, 2004 6:21 PM
To: log4net-user@logging.apache.org
Subject: ADONetAppender problems

Hello,

I have created an ADONetAppender using the following code:

                public ADONetAppender CreateADONetAuditAppender() {

                        ADONetAppender ado = new ADONetAppender();
                        //how many entries to queue up before writing to
db
                        ado.BufferSize = 1;
                        //debugging level
                        ado.Threshold = log4net.spi.Level.DEBUG;

                        //connection stuff
                        ado.CommandType =
System.Data.CommandType.StoredProcedure;
                        ado.CommandText = "InsertAuditEntry";
                        ado.ConnectionType =
"System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089";                      
                        ado.ConnectionString = //omitted for posting
                        
                        //parameters
                        ADONetAppenderParameter param = new
ADONetAppenderParameter();
                        //file id parameter
                        param.ParameterName = "@FileID";
                        param.DbType = System.Data.DbType.Int32;
                        param.Size = 0;
                        param.Layout = new Layout2RawLayoutAdapter(new
log4net.Layout.PatternLayout("$X{FileID}"));
                        ado.AddParameter(param);        
                        

                        //user id parameter
                        param = new ADONetAppenderParameter();
                        param.ParameterName = "@UserID";
                        param.DbType = System.Data.DbType.Int32;
                        param.Size = 0;
                        param.Layout = new Layout2RawLayoutAdapter(new
log4net.Layout.PatternLayout("$X{UserID}"));
                        ado.AddParameter(param);

                        //description parameter
                        param = new ADONetAppenderParameter();
                        param.ParameterName = "@Description";
                        param.DbType = System.Data.DbType.AnsiString;
                        param.Size = 1000;
                        param.Layout = new Layout2RawLayoutAdapter(new
log4net.Layout.PatternLayout("%m"));
                        ado.AddParameter(param);                

                        ado.ActivateOptions();

                        return ado;

                }

However when my program is run I get the following error:

log4net:ERROR [ADONetAppender] Exception while writing to database
System.FormatException: Input string was not in a correct format.
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at log4net.Appender.ADONetAppender.SendBuffer(IDbTransaction dbTran,
LoggingEvent[] events)
   at log4net.Appender.ADONetAppender.SendBuffer(LoggingEvent[] events)

The Description field of my table is a VarChar with length 1000.

What am I doing wrong?

Thanks,

Adam


Reply via email to