使用log4net将日志记入PostgreSql
2005-03-18 23:39
489 查看
首先用下面的语句创建表
CREATE TABLE Log
(
Id SERIAL,
Date timestamp NOT NULL,
Thread varchar(255) NOT NULL,
Level varchar(50) NOT NULL,
Logger varchar(255) NOT NULL,
Message varchar(4000) NOT NULL,
Exception varchar(2000) NULL
);
然后的配置文件与 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("第二条");
那么第一条的信息都保存不到数据库中。
不知道这是什么原因,还需进一步跟踪。
CREATE TABLE Log
(
Id SERIAL,
Date timestamp NOT NULL,
Thread varchar(255) NOT NULL,
Level varchar(50) NOT NULL,
Logger varchar(255) NOT NULL,
Message varchar(4000) NOT NULL,
Exception varchar(2000) NULL
);
然后的配置文件与 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("第二条");
那么第一条的信息都保存不到数据库中。
不知道这是什么原因,还需进一步跟踪。
相关文章推荐
- log4net 使用存储过程实现复杂逻辑将日志记入数据库的实现
- Log4net日志记录组件的使用步骤详解和下载
- C#使用正则表达式读取log4net日志文件
- 在.net网站项目中使用log4net 记录日志到sqlserver 数据库
- 使用log4net 来记录系统日志
- C#使用Log4Net记录日志
- Log4Net使用指南之用log4net记录日志到数据库(含有自定义属性)------附Demo例子源代码
- C#使用Log4Net记录日志
- log4net日志记录,配置使用步骤
- 使用WCF Ria Service和Log4net在服务器端记录异常日志/ExceptionLog
- Log4net系列:如何使用Log4net创建日志及简单扩展
- 转:C#使用Log4Net记录日志
- C#控制台程序使用Log4net日志组件
- C#日志系统 Log4net使用总结
- 在项目中使用log4net记录日志
- 3_C# 实现VMS客户端——使用log4net 写日志
- Log4net使用总结,防止自定义的logger和root重复写入日志
- C#中使用Log4net日志输出到本地文件、Textbox或Listview
- C#使用Log4Net记录日志(想直接转载的,但是不支持转到这上面来,复制来的,作者勿怪,学习用)
- 使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)