使用log4net将日志记入PostgreSql

首先用下面的语句创建表

CREATE TABLE Log
(        
    Id SERIAL,        
    Date 
timestamp NOT NULL,        
    Thread 
varchar(255NOT NULL,        
    
Level varchar(50NOT NULL,        
    Logger 
varchar(255NOT NULL,        
    Message 
varchar(4000NOT NULL,        
    Exception 
varchar(2000NULL
);

然后的配置文件与 MS SQLServer 的大致一样,区别就在于,Postgresql 的连接字符串,以及参数表示。

数据库连接类型:
Npgsql.NpgsqlConnection, Npgsql, Version=0.7.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7
我使用的是 PostgreSql 的 .NET 驱动 beta 5

连接字符串:
Server=localhost;Port=5432;User Id=PostgreUser;Password=password;Database=logdb;
参数表示:
PostgreSql的SQL语句中的参数使用 : 做前缀。
Parameter中的参数名称不需要 : 。
例如:
INSERT INTO Log (Date,Thread,Level,Logger,Message,Exception) VALUES (:log_date, :thread, :log_level, :logger, :message, :exception)

<param name="Parameter">
    <param name="ParameterName" value="log_date" />
    <param name="DbType" value="DateTime" />
    <param name="Layout" type="log4net.Layout.RawTimeStampLayout" />
</param>

剩下的操作就去其他的一致了。

不过,目前依然还有一个问题:就是第一次启动日志功能时,第一条日志都无法保存到数据库中,例如:
ILog log = LogManager.Exists("...");
log.Info("第一条");
log.Info("第二条");

那么第一条的信息都保存不到数据库中。

不知道这是什么原因,还需进一步跟踪。
原文地址:https://www.cnblogs.com/iaxes/p/121480.html