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?
User contributions licensed under CC BY-SA 3.0