`
iwebcode
  • 浏览: 1997230 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

利用Log4net记录系统日志信息(支持6种数据库)

 
阅读更多

Log4net的优点:

几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。

经验表明,日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;一旦在程序中加入了Log输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。另外,日志信息可以输出到不同的地方(控制台,文件等)以备以后研究之用。

代码下载(支持6种数据库)

效果预览:

下面举例说明利用Log4net控件 将日志信息保存到数据库

一:下载log4net.dll
将log4net.dll拷贝到bin下面,并添加对它的引用

二:在数据库里面创建表Log
create table LOG
(
LOGDATE VARCHAR2(20),
LOG_LEVEL VARCHAR2(255),
LOGGER VARCHAR2(255),
MESSAGE VARCHAR2(2000),
EXCEPTION VARCHAR2(2000)
)
三:配置Web.config
注意2个地方:
1:在configSections加入相关代码
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

2:log4net里面对数据库连接进行配置

<log4net debug="true">

<!--
定义loger的名称和使用的appender
CREATE TABLE `sys_log` (
`LogDate` datetime DEFAULT NULL,
`Level` varchar(255) DEFAULT NULL,
`Logger` varchar(255) DEFAULT NULL,
`Message` varchar(4000) DEFAULT NULL,
`Exception` varchar(2000) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
-->
<logger name="AA" >
<level value="ALL"/>
<appender-ref ref="ADONetAppender"/>
</logger>

<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
<!--
定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存
-->
<bufferSize value="100"/>
<param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/>


<connectionString value="server=server;database=postbankv6;uid=root;pwd=888888;charset=gb2312;"/>

<commandText value="INSERT INTO sys_log (LogDate,Level,Logger,Message,Exception) VALUES (@log_date, @log_level,@logger, @message, @exception)"/>

<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>

</parameter>
<parameter>
<parameterName value="@log_level"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%C[%M(%L)]"/>
</layout>
</parameter>
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m"/>
</layout>
</parameter>
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.ExceptionLayout"/>
</parameter>

</appender>

</log4net>


四:程序调用
1:创建一个辅助类:SystemLog.cs

public class SystemLog
{
private SystemLog()
{

}

public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("AA"); //选择<logger name="loginfo">的配置

public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("AA"); //选择<logger name="logerror">的配置

public static void SetConfig()
{
log4net.Config.XmlConfigurator.Configure();
}

public static void SetConfig(FileInfo configFile)
{
log4net.Config.XmlConfigurator.Configure(configFile);
}

public static void WriteLog(string info)
{
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}

public static void WriteLog(string info, Exception se)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(info, se);
}
}

}


2: 创建Global.asax,里面设置相关代码
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
SystemLog.SetConfig();
}


3:在页面中调用:

strMsg += FormService.UserID + "修改了车辆信息:车辆ID为为:" + model.ID;
SystemLog.loginfo.Info(strMsg);


注意:
读取WebConfg问题,网上都建议在globe.ascx里面:
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
PDAManage.SystemLog.SetConfig();
}


但我发现当第二次访问该页面的时候,不能成功将日志保存到数据库,以下是我的解决方案:
1:所有页面继承basePage
2:在BasePage里面加上:

protected override void OnLoad(EventArgs e)
{
if (!base.IsPostBack)
{
SystemLog.SetConfig();

}

}

代码下载(支持6种数据库)

效果预览:

分享到:
评论

相关推荐

    Log4net日志功能-记录数据库异常和系统异常

    利用log4net记录日志,将数据库异常和系统异常存储到记事本中。

    SQLserver日志恢复工具 v1.0.zip

    4找到需要恢复的主事务记录后,点主事务记录则会显示详细操作日志记录,单击《浏览删除数据》按钮则显示被删除的数据(最多显示1万行) 5如果确定是要恢复的数据,则单击《保存该事务记录到文件》,将该事务记录保存...

    Oracle数据库学习指南

    19.Delphi 3_0中连接数据库的三种方式 20.远程数据库的访问 21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始...

    数据库系统概论-SQL-CH10-作业解答.doc

    当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库 恢复到故障前的某个一致性状态。 6、数据库转储的意义是什么?试比较各种数据转储方法。 答:数据转储是数据库恢复中采用的基本技术...

    数据库灾难性恢复(数据库技术;灾难性;恢复;数据备份)

    MySQL支持增量备份:需要用--log-bin选项来启动服务器以便启用二进制日志;当想要进行增量备份时(包含上一次完全备份或增量备份之后的所有更改),应使用FLUSH LOGS回滚二进制日志。然后,你需要将从最后的完全或增量...

    Web数据库安全 审计追踪与备份双管齐下

    审计追踪把用户对数据库的所有操作自动记录下来,存放在审计日志中(Audit Log)。记录的内容一般包括:操作类型(如修改、查询、删除),操作终端标识与操作者标识,操作日期和时间,操作所涉及到相关数据(如基本表、...

    数据库系统的一些专用词汇表.txt

    日志文件(LOG File): 存储数据库的事务日志信息,必要时利用日志恢复数据库。每个数据库至少需要一个日志文件。SQL Server日志文件的扩展名为.ldf。 . 开放数据库互连ODBC(Open Database Connection) 这是一个...

    基于javaEE健康管理系统SSH设计软件源码+数据库+word毕业论文文档.zip

    针对糖尿病和高血压两种疾病,利用数学线性回归的方法,模拟计算出教师患病概率。 (6) 后台管理员模块 管理员用户登录功能:通过账号登录系统。 管理员管理教师功能:可以增删改查教师基本信息。 管理员管理...

    信息系统巡检报告.xlsx

    检查系统CPU利用率,检测三次,记录大约平均的利用率,,,,,, 3、通过windows操作系统"任务管理器",检查系统内存利用率,检测三次,记录大约平均的利用率,,,,,, 4、应用系统log日志是否正常生成,已保存天数,占用...

    信息系统巡检报告.xls

    检查系统CPU利用率,检测三次,记录大约平均的利用率,,,,,, 3、通过windows操作系统"任务管理器",检查系统内存利用率,检测三次,记录大约平均的利用率,,,,,, 4、应用系统log日志是否正常生成,已保存天数,占用...

    oracle数据库经典题目

    系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等) 16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。 ...

    mysql数据库my.cnf配置文件

    # MySQL支持4种事务隔离级别,他们分别是: # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. # 如没有指定,MySQL默认采用的是REPEATABLE-READ,ORACLE默认的是READ-COMMITTED log_bin = mysql...

    informix 实用大全

    12.2 日志与非日志数据库 12.3 并发性与锁 12.4 informix如何处理事务 12.5 特殊情形 12.6 结论 12.7 更多信息 12.8 informix与其他参考资料 第13章 存储过程与触发器 13.1 存储过程定义 13.2 ...

    煤矿企业纯软件方式的双机热备系统研究

    该系统利用文件差异备份以及MYSQL增量备份相结合的方式将数据保存到主、备机中,即采用RSYNC文件同步算法对文件进行备份,利用MYSQL数据库的Binary Log机制开启日志记录文件,将在一个时间间隔内发生修改的数据信息导出...

    orcale常用命令

    数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 我们不能手工修改数据字典里的信息。  很多时候,一般的ORACLE用户不知道如何有效地利用它。  dictionary...

    Oracle9i的init.ora参数中文说明

    说明: 指定 Oracle 使用哪种日历系统作为日期格式。例如, 如果 NLS_CALENDAR 设置为 'Japanese Imperial', 那么日期格式为 'E YY-MM-DD'。即: 如果日期是 1997 年 5 月 15 日, 那么 SYSDATE 显示为 'H 09-05-15'。 ...

    Oracle数据库数据丢失恢复的几种方法总结

    根据oracle数据库的特点和提供的工具,主要方法有以下几种方法: 利用逻辑备份使用import工具丢失数据的表 利用物理备份来通过还原数据文件并进行不完全恢复 利用dbms_logmnr包从redo log文件中恢复 利用...

    vc++ 应用源码包_6

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) IOCP 完成端口编程 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例...

Global site tag (gtag.js) - Google Analytics