首先用下面的语句创建表

使用log4net将日志记入PostgreSqlCREATE TABLE Log
使用log4net将日志记入PostgreSql(        
使用log4net将日志记入PostgreSql    Id SERIAL,        
使用log4net将日志记入PostgreSql    Date 
timestamp NOT NULL,        
使用log4net将日志记入PostgreSql    Thread 
varchar(255NOT NULL,        
使用log4net将日志记入PostgreSql    
Level varchar(50NOT NULL,        
使用log4net将日志记入PostgreSql    Logger 
varchar(255NOT NULL,        
使用log4net将日志记入PostgreSql    Message 
varchar(4000NOT NULL,        
使用log4net将日志记入PostgreSql    Exception 
varchar(2000NULL
使用log4net将日志记入PostgreSql);

然后的配置文件与 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("第二条");

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

不知道这是什么原因,还需进一步跟踪。

相关文章: