log4net 使用存储过程实现复杂逻辑将日志记入数据库的实现
2016-09-23 14:21
507 查看
log4net是一个非常优秀和完善的第三方开源组件,网上讲log4net的各种配置以及使用的文章很多不必累述,今天记录一下工作中遇到的当将日志插入数据库中的动作不仅仅只是简单的 insert log(message) values (@message))这么简单时,我们可能要用到存储过程,也就是CommandType的类型System.Data.CommandType.StoredProcedure,如何实现?
1、配置文件
2、测试代码很简单:
3、数据库表结构及存储过程:
这里说的简单点,尤其是存储过程,只是讲讲log4net使用存储过程怎么配置和使用。至于复杂的存储过程逻辑在具体应用中自己去实现吧。这里多说一句:如上CommandType的设置一定要注意,其value的值一定是要设置为4,而不是像注释掉的System.Data.CommandType.StoredProcedure,否则会出现类型转化错误而无法记入数据库。
1、配置文件
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <logger name="testLogger"> <level value="DEBUG"/> <appender-ref ref="ADONetAppender" /> </logger> <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> <bufferSize value="1"/> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> <connectionString value="data source=mahuijun\sql2008;initial catalog=test;integrated security=False;persist security info=True;User ID=sa;Password=123456" /> <!--<commandType value="System.Data.CommandType.StoredProcedure" /> --> <commandType value="4" /> <commandText value="updatelog"/> <!--<commandText value="insert into log(message) values(@message)"/> --> <parameter> <parameterName value="@message"/> <dbType value="String"/> <size value="50"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message"/> </layout> </parameter> </appender> </log4net> </configuration>
2、测试代码很简单:
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("..\\..\\cfg\\log4net.config")); ILog logger = LogManager.GetLogger(Assembly.GetCallingAssembly(), "testLogger"); logger.Fatal("log4net");
3、数据库表结构及存储过程:
CREATE TABLE [log]( [message] [nvarchar](50) NULL ) CREATE PROC [updatelog]( @message NVARCHAR(50) ) AS INSERT INTO dbo.log ( message ) VALUES ( @message -- message - nvarchar(50) )
这里说的简单点,尤其是存储过程,只是讲讲log4net使用存储过程怎么配置和使用。至于复杂的存储过程逻辑在具体应用中自己去实现吧。这里多说一句:如上CommandType的设置一定要注意,其value的值一定是要设置为4,而不是像注释掉的System.Data.CommandType.StoredProcedure,否则会出现类型转化错误而无法记入数据库。
相关文章推荐
- 使用存储过程实现进销存系统中的先进先出算法(1)――数据库与存储过程设计
- 使用log4net记录日志到数据库(含有自定义属性)
- 在.net网站项目中使用log4net 记录日志到sqlserver 数据库
- .NET数据库编程求索之路--6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(2)
- 使用log4net记录日志到数据库(含有自定义属性)
- 使用log4net记录日志到数据库(含有自定义属性)
- 装饰者模式---使用装饰者模式实现带日志记录功能的数据库命令执行类
- 使用log4net将日志记入PostgreSql
- 使用存储过程操作数据库(实现增删改查)
- 求解逻辑standby数据库alert日志频繁报ORA-19815而实际操作系统空间没有使用
- 数据库分页处理--使用存储过程实现
- MySQL变量使用及数据库存储过程实现分页
- 使用存储过程实现数据库备份
- 使用log4net 日志输出到数据库MySQL
- 使用SQLServer代理实现定时清除数据库日志
- 使用log4net记录日志到数据库(含有自定义属性)
- 基于.NET的分词软件设计与实现V6.0--使用数据库篇(涉及索引、聚集因子和存储过程)
- 使用Log4net 日志实现思路
- (二)使用log4net写入数据库自定义日志
- 使用Log4Net将系统日志信息记录到记事本和数据库中