log4net AdoNetAppender Npgsql throws 42601: syntax error at or near ":"

0

I got a problem trying to write my log4net logs to Postgres Database. .NET 4.6.2 project, PostgreSQL 11, Npgsql 4.0.7

My config:

<log4net debug="true">
<appender name="AdoNetAppender_Postgres" type="log4net.Appender.AdoNetAppender">
      <connectionType value="Npgsql.NpgsqlConnection, Npgsql" />
     <connectionStringName value="MyRepoConnectionString" />
     <commandText value="INSERT INTO public.tbl_smg_log (datetime,thread,log_level,logger,message,cretariafields,exception,computerip,processid,appid,projectid) 
VALUES ('2019/05/22 16:59:04.767',:thread,'INFO','DOP.Infra.Classes.Log.TWLogger','Category=Debug,Priority=10','CriteriaFields','','169.254.90.84',22000,1,null)"/>
      <bufferSize value="1" />
      <lossy value="false" />
      <parameter>
        <parameterName value="thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread" />
        </layout>
      </parameter>
</appender>

Executing this I have an internal log4net exception:

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database
Npgsql.PostgresException (0x80004005): 42601: syntax error at or near ":"
   at Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<<ReadMessage>g__ReadMessageLong|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---

When I change :thread to some constant value, like

<commandText value="INSERT INTO public.tbl_smg_log (datetime,thread,log_level,logger,message,cretariafields,exception,computerip,processid,appid,projectid) 
VALUES ('2019/05/22 16:59:04.767','somevalue','INFO','DOP.Infra.Classes.Log.TWLogger','Category=Debug,Priority=10','CriteriaFields','','169.254.90.84',22000,1,null)"/>

everything works good. I've tried to replace :thread with @thread and got other exception:

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database
Npgsql.PostgresException (0x80004005): 42703: column "thread" does not exist
   at Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<<ReadMessage>g__ReadMessageLong|0>d.MoveNext()

RollingFileAppender using %thread is also works good. Any ideas?

c#
postgresql
log4net
log4net-configuration
log4net-appender
asked on Stack Overflow May 23, 2019 by Conder • edited May 23, 2019 by Conder

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0