log4net配置写入文本和写入数据库(sqlserver-sqlclient,mysql-odbc) 传入自定义业务对象
2008-11-22 13:18
537 查看
在项目中需要记录业务日志(即用户进行了什么操作,操作什么内容,什么时候,操作内容以结构化的方式存储,以方便以后数据挖掘)。
系统已经采用了log4net来记录文本日志(一般用来记录应用程序错误和我们自己认为需要的提示信息,如“正在解析第i条xml数据...”,当前执行的sql,之类的供开发自己看的信息)。我想既然用了它来记录文本,那就再用它来记录业务日志到数据库吧,反正在log4net中加个Appender就可以。
由于业务需要记录的并不是简单的系统时间%date,级别%level,信息%message等字段,而是自定义的业务字段。发现记日志的info,error,debug等方法可以传入object参数:log.info(object message)。于是到网上查找它是不是象我预想的这样,传一个自定义的业务日志对象给info方法,它自动帮我得到该业务对象的字段的值。
找了半天,答案是:没有。
仔细想了下,难道别人都不这样用吗?我为什么要传入自定义业务对象?要记录的业务操作都是info级别的,根据级别优先级别(由高到低为OFF,FATAL, ERROR,WARN,INFO,DEBUG,ALL),开发时,级别要不定义为debug,要不为all,发布后设置为info。如果同时开启文本和AdoNetAppender,那么除了一些业务操作会进入该日志表,其它只给我自己看的info级别的信息,如前所说的当前执行的sql等信息也会试图存入该表,当然这些是直接传入一句提示信息,所以存入数据库中时,所有字段可能都会是空的。
这样的局面也太尴尬了吧。
这样来讲,似乎log4net并不适合记录这种业务日志。除非有两个非不干涉的log4net。各记录各的日志。
虽然看起来已经没有什么必要,但还是自己做出了解决方案。
下面把配置方式及传入自定义业务对象的解决方案附上。
一、log4net针对sqlserver,mysql及文本的配置方式:
(注:如果配置写入数据库,需要将System.Data.dll拷到bin目录下。)
文本和sqlserver-sqlclient连接库:
"));
系统已经采用了log4net来记录文本日志(一般用来记录应用程序错误和我们自己认为需要的提示信息,如“正在解析第i条xml数据...”,当前执行的sql,之类的供开发自己看的信息)。我想既然用了它来记录文本,那就再用它来记录业务日志到数据库吧,反正在log4net中加个Appender就可以。
由于业务需要记录的并不是简单的系统时间%date,级别%level,信息%message等字段,而是自定义的业务字段。发现记日志的info,error,debug等方法可以传入object参数:log.info(object message)。于是到网上查找它是不是象我预想的这样,传一个自定义的业务日志对象给info方法,它自动帮我得到该业务对象的字段的值。
找了半天,答案是:没有。
仔细想了下,难道别人都不这样用吗?我为什么要传入自定义业务对象?要记录的业务操作都是info级别的,根据级别优先级别(由高到低为OFF,FATAL, ERROR,WARN,INFO,DEBUG,ALL),开发时,级别要不定义为debug,要不为all,发布后设置为info。如果同时开启文本和AdoNetAppender,那么除了一些业务操作会进入该日志表,其它只给我自己看的info级别的信息,如前所说的当前执行的sql等信息也会试图存入该表,当然这些是直接传入一句提示信息,所以存入数据库中时,所有字段可能都会是空的。
这样的局面也太尴尬了吧。
这样来讲,似乎log4net并不适合记录这种业务日志。除非有两个非不干涉的log4net。各记录各的日志。
虽然看起来已经没有什么必要,但还是自己做出了解决方案。
下面把配置方式及传入自定义业务对象的解决方案附上。
一、log4net针对sqlserver,mysql及文本的配置方式:
(注:如果配置写入数据库,需要将System.Data.dll拷到bin目录下。)
文本和sqlserver-sqlclient连接库:
"));
相关文章推荐
- log4net配置写入文本和写入数据库(sqlserver-sqlclient,mysql-odbc) 传入自定义业务对象
- log4net配置写入SQL Server数据库(sqlserver-sqlclient) 并传入自定义业务对象
- log4net配置写入SQL Server数据库(sqlserver-sqlclient) 并传入自定义业务对象
- log4net配置写入SQL Server数据库(sqlserver-sqlclient) 并传入自定义业务对象
- 自定义tt文本模板实现MySql指数据库中生成实体类
- 转帖mysql,sqlserver,oracle三种数据库的大对象存取
- 自定义tt文本模板实现MySql指数据库中生成实体类
- Log4Net写入到数据库配置过程中的一些小问题备忘
- mysql,sqlserver,oracle三种数据库的大对象存取 (转)
- 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包
- 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包
- 让log4net保存自定义对象信息到数据库中
- (二)使用log4net写入数据库自定义日志
- Spring配置文件中配置数据库连接(mysql,sqlserver,oracle)
- mysql,sqlserver,oracle三种数据库的大对象存取
- mysql,sqlserver,oracle三种数据库的大对象存取
- 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包 .
- 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包----转
- java多数据库连接MySQL和SqlServer配置,基于SSM架构,文件名spring-mybatis.xml
- 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包