log4net AdoNetAppender Npgsql выбрасывает 42601: синтаксическая ошибка в или около ":" - PullRequest
0 голосов
/ 23 мая 2019

У меня возникла проблема при попытке записи логов log4net в базу данных Postgres.Проект .NET 4.6.2, PostgreSQL 11, Npgsql 4.0.7

Моя конфигурация:

<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>

При выполнении этого у меня есть внутреннее исключение log4net:

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 ---

Когда я изменяю :thread на какое-то постоянное значение, например

<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)"/>

, все работает хорошо.Я попытался заменить :thread на @thread и получил другое исключение:

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 с использованием %thread также работает хорошо.Есть идеи?

...