使用log4Net可以将系统听日志保存到DB、日志文件、邮箱中等,本文介绍这三种三方式。
生产关系log4Net的配置文件结构中下;
Log4Net把日志保存到数据库和发Email的例子
通过Log4Net把日志保存到数据库和发送Email通知的例子,本例子运行在SQL SERVER上
上述配置好后,即可封闭成组件。首先要在将要封闭成的组件中引用log4Net.dll文件
组件代码如下:
注意:要在这个封闭的项目下的AssemblyInfo.cs文件中加下:
生产关系log4Net的配置文件结构中下;
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="HR.Class.Log" type="HR.Class.Log.Config.HR.Class.LogConfigurationSectionHandler,HR.Class.Log" /> </configSections> <HR.Class.Log> <!--HRAdoNet:将日志写入数据库表--> <appender name="HRAdoNet" type="HR.Class.Log.Appender.ADONetAppender"> <param name="BufferSize" value="50" /><!-- 当日志达到50条时进行一次写库操作--> <!--写入数据库的分段大小--> <param name="ConnectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <param name="ConnectionString" value="Server=localhost;Database=AuditSystem;User ID=sa;Password=system;Trusted_Connection=False" /> <param name="CommandType" value="StoredProcedure" /> <param name="CommandText" value="sp_HR_Log" /> <!--spLog_Create:存储过程名称--> <param name="Parameter"> <param name="ParameterName" value="@log_date" /> <param name="DbType" value="DateTime" /> <param name="Layout" type="HR.Class.Log.Layout.RawTimeStampLayout" /> </param> <param name="Parameter"> <param name="ParameterName" value="@thread" /> <param name="DbType" value="String" /> <param name="Size" value="255" /> <param name="Layout" type="HR.Class.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%t" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@log_level" /> <param name="DbType" value="String" /> <param name="Size" value="50" /> <param name="Layout" type="HR.Class.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%p" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@logger" /> <param name="DbType" value="String" /> <param name="Size" value="255" /> <param name="Layout" type="HR.Class.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%c" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@message" /> <param name="DbType" value="String" /> <param name="Size" value="4000" /> <param name="Layout" type="HR.Class.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%m" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@exception" /> <param name="DbType" value="String" /> <param name="Size" value="2000" /> <param name="Layout" type="HR.Class.Log.Layout.ExceptionLayout" /> </param> </appender> <!--HRSMTPAppender:将日志发送邮件--> <appender name="HRSMTPAppender" type="HR.Class.Log.Appender.SMTPAppender"> <authentication value="Basic" /> <To value="xzbwww@126.com"/> <From value="it_fighter@163.com" /> <Subject value="财务数据审计分析系统:日志" /> <SmtpHost value="smtp.163.com" /> <Username value="it_fighter@163.com" /> <Password value="sgj13002945392" /> <param name="BufferSize" value="10" /> <param name="Lossy" value="true" /> <evaluator type="HR.Class.Log.Core.LevelEvaluator"> <param name="Threshold" value="Fatal" /> </evaluator> <layout type="HR.Class.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" /> </layout> </appender> <!--LocalFileAppender:将日志写入本地文件--> <appender name="LocalFileAppender" type="HR.Class.Log.Appender.RollingFileAppender"> <param name="File" value="System\SystemLog.Log" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="10" /> <param name="MaximumFileSize" value="5MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="HR.Class.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="HRAdoNet" /> <appender-ref ref="HRSMTPAppender" /> <appender-ref ref="LocalFileAppender" /> </root> </HR.Class.Log> </configuration>
Log4Net把日志保存到数据库和发Email的例子
通过Log4Net把日志保存到数据库和发送Email通知的例子,本例子运行在SQL SERVER上
1. 建立数据库的表和存储过程 CREATE TABLE [dbo].[LogTest] ( [LogID] [int] IDENTITY (1, 1) NOT NULL , [LogDate] [datetime] NOT NULL , [LogThread] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL , [LogLevel] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Logger] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL , [LogMessage] [varchar] (4000) COLLATE Chinese_PRC_CI_AS NULL , [LogException] [varchar] (2000) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO CREATE PROCEDURE dbo.spLog_Create @log_date datetime, @thread varchar(255), @log_level varchar(50), @logger varchar(255), @message varchar(4000), @exception varchar(2000) as INSERT INTO LogTest ( LogDate, LogThread, LogLevel, Logger, LogMessage, LogException ) VALUES ( @log_date, @thread, @log_level, @logger, @message, @exception ) GO 2. Log4Net的配置 在Web.Config或App.Config文件的内容 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="Xipu.Com.Log" type="Xipu.Com.Log.Config.Xipu.Com.LogConfigurationSectionHandler,Xipu.Com.Log" /> </configSections> <Xipu.Com.Log> <appender name="MyADO" type="Xipu.Com.Log.Appender.ADONetAppender"> <param name="BufferSize" value="100" /> <param name="ConnectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <param name="ConnectionString" value="Server=localhost;Database=Test;User ID=sa;Password=sa;Trusted_Connection=False" /> <param name="CommandType" value="StoredProcedure" /> <param name="CommandText" value="spLog_Create" /> <param name="Parameter"> <param name="ParameterName" value="@log_date" /> <param name="DbType" value="DateTime" /> <param name="Layout" type="Xipu.Com.Log.Layout.RawTimeStampLayout" /> </param> <param name="Parameter"> <param name="ParameterName" value="@thread" /> <param name="DbType" value="String" /> <param name="Size" value="255" /> <param name="Layout" type="Xipu.Com.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%t" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@log_level" /> <param name="DbType" value="String" /> <param name="Size" value="50" /> <param name="Layout" type="Xipu.Com.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%p" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@logger" /> <param name="DbType" value="String" /> <param name="Size" value="255" /> <param name="Layout" type="Xipu.Com.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%c" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@message" /> <param name="DbType" value="String" /> <param name="Size" value="4000" /> <param name="Layout" type="Xipu.Com.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%m" /> </param> </param> <param name="Parameter"> <param name="ParameterName" value="@exception" /> <param name="DbType" value="String" /> <param name="Size" value="2000" /> <param name="Layout" type="Xipu.Com.Log.Layout.ExceptionLayout" /> </param> </appender> <appender name="SMTPAppender" type="Xipu.Com.Log.Appender.SMTPAppender"> <BufferSize value="1" /> <param name="To" value="dengzebo@163.com"/> <param name="From" value="dengzebo@cdce.cn" /> <Subject value="Xipu.Com.Log Error Message" /> <SMTPHost value="mail.cdce.cn" /> <Username value="dengzebo" /> <Password value="ILOVEYOU" /> <param name="LocationInfo" value="false" /> <param name="BufferSize" value="5" /> <!--说明: "BufferSize"设置日志缓存,存储到512后一起一个Email发送,如不设此项,每记一个日志,发一条Email--> <!-- <param name="Lossy" value="true" /> <evaluator type="Xipu.Com.Log.spi.LevelEvaluator"> <param name="Threshold" value="WARN" /> </evaluator> --> <layout type="Xipu.Com.Log.Layout.PatternLayout"> <param name="ConversionPattern" value="%n%d [%t] %-5p %c [%x] - %m%n%n%n" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="MyADO" /> <appender-ref ref="SMTPAppender" /> </root> </Xipu.Com.Log> </configuration> 3. 在AssemblyInfo.cs文件中加入以下行: [assembly: Xipu.Com.Log.Config.XmlConfigurator(ConfigFile = "App.config", ConfigFileExtension = "config", Watch = true)] 4. 编写测试代码: Xipu.Com.Log.ILog log = Xipu.Com.Log.LogManager.GetLogger("MyLoggerTest"); try { log.Info("这是hansong的LOG INFO测试!"); log.Debug("这是hansong的LOG DEBUG测试!"); throw new Exception("这是hansong的LOG ERROR测试!"); } catch (Exception er) { log.Error("错误日志", er); }5.其它文档资料
上述配置好后,即可封闭成组件。首先要在将要封闭成的组件中引用log4Net.dll文件
组件代码如下:
注意:要在这个封闭的项目下的AssemblyInfo.cs文件中加下:
[assembly:HR.Class.Log.Config.XmlConfigurator(ConfigFile="App.config",ConfigFileExtension="config",Watch=true)]
namespace HR.Class.Log.WriteLog { /// <summary> /// 当出现错误时,必须指定日志的类型,一般应用于系统出现错误后, /// 如在Catch中用它,无论错误是普通的还是致命的 /// </summary> public enum ErrorLogType { /// <summary> /// 致命的错误 /// </summary> FatalLog, /// <summary> /// 错误的错误 /// </summary> ErrorLog } /// <summary> /// 当需要提示时,必须指定日志的类型,一般应用于当系统提示用户怎样操作, /// 哪怕是警告类操作,都应该用此类型 /// </summary> public enum NoramlLogType { /// <summary> /// 普通操作日志 /// </summary> InfoLog, /// <summary> /// 警告日志 /// </summary> WarnLog, /// <summary> /// 调试日志 /// </summary> DebugLog } public static class WriteLog { public static void Write(string ModuleClassName, string FunctionName, string ErrorString, Exception Ex, HR.Class.Log.WriteLog.ErrorLogType LogType) { try { HR.Class.Log.ILog log = HR.Class.Log.LogManager.GetLogger("[" + ModuleClassName + "].[" + FunctionName + "]"); if (LogType == HR.Class.Log.WriteLog.ErrorLogType.ErrorLog) { log.Error(ErrorString, Ex); } else if (LogType == HR.Class.Log.WriteLog.ErrorLogType.FatalLog) { log.Fatal(ErrorString, Ex); } } catch(Exception ET) { HR.Class.Log.ILog log = HR.Class.Log.LogManager.GetLogger("[HR.Class.Log.WriteLog].[Write]:ErrorLogType"); log.Error("写入日志时出错" + "[" + ModuleClassName + "].[" + FunctionName + "]", ET); } } public static void Write(string ModuleClassName, string FunctionName, string Infostring, HR.Class.Log.WriteLog.NoramlLogType LogType) { try { HR.Class.Log.ILog log = HR.Class.Log.LogManager.GetLogger("[" + ModuleClassName + "].[" + FunctionName + "]"); if (LogType == HR.Class.Log.WriteLog.NoramlLogType.InfoLog) { log.Info(Infostring); } else if (LogType == HR.Class.Log.WriteLog.NoramlLogType.WarnLog) { log.Warn(Infostring); } else if (LogType == HR.Class.Log.WriteLog.NoramlLogType.DebugLog) { log.Debug(Infostring); } } catch (Exception ex) { HR.Class.Log.ILog log = HR.Class.Log.LogManager.GetLogger("[HR.Class.Log.WriteLog].[Write]:ErrorLogType"); log.Error("写入日志时出错" + "[" + ModuleClassName + "].[" + FunctionName + "]", ex); } } } }
发表评论
-
C# 实现将文件夹分卷压缩
2015-04-17 17:01 1243http://bbs.csdn.net/topics/3907 ... -
C#发送邮件
2015-04-17 15:58 696public class SendEmailHelper ... -
C# xml文件读取
2015-02-11 16:08 648看附件................ -
什么时候该用委托,为什么要用委托,委托有什么好处....
2015-01-29 16:56 819http://www.cnblogs.com/superpce ... -
C#中动态加载和卸载DLL
2015-01-26 14:02 1426在C++中加载和卸载DLL是一件很容易的事,LoadLibra ... -
转:c#常用的18种设计模式
2015-01-21 08:16 779http://blog.jobbole.com/78130/ -
C#委托的介绍(delegate、Action、Func、predicate)
2015-01-09 17:26 1133http://www.cnblogs.com/akwwl/p/ ... -
接口和抽象类有什么区别 .
2014-12-22 16:35 617接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么 ... -
C#一个简单写日志文件的类
2014-12-11 09:57 1113/// <summary> /// L ... -
Linq初级班 Linq to DataSet体验(单表、多表联合查询JOIN语法)
2014-12-10 14:34 356http://www.cnblogs.com/huangcon ... -
C#泛型详解
2014-11-29 11:31 483我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处 ... -
线程同步与异步的区别
2014-11-26 09:12 884异步处理就是按照不同步的程序处理问题。异步处理与同步处理是对立 ... -
应用C#和SQLCLR编写SQL Server用户定义函数 .
2013-10-09 17:07 486http://blog.csdn.net/zhzuo/arti ... -
DataGridView历史记录的前进与后退操作
2013-06-23 11:13 1108此功能介绍:DataGridView频繁查询数据时,可以将每次 ... -
c# 对INI配置文件的读取操作
2013-06-17 10:51 678此种方法只对如下格式的INI文件起作用 server=loca ... -
对DataGridView控件的扩展开发
2013-06-15 21:47 2381首先在项目中引用 ... -
对集合控件(ListBox,ComboBox,TreeView,RichTextBox,DataGridView)的查找、替换操作控件
2013-06-15 09:39 1550一、程序入口: using System; using ... -
C#对文件、文件夹操作公用组件
2013-06-11 09:46 968namespace HR.Class.IO { / ... -
TreeView控件操作开发篇之(五)
2013-06-09 00:09 828#region 加载文件夹及文件到树 ... -
TreeView控件操作开发篇之(五)
2013-06-08 23:14 2#region "查找遍历树节点" ...
相关推荐
log4net简介** log4net是Apache软件基金会的开源项目,基于Java平台的log4j移植而来,专门针对.NET Framework设计。它的设计目标是提供一个灵活且可扩展的日志记录框架,支持多种输出方式(如文件、控制台、数据库...
log4net简介** log4net是Apache软件基金会的项目,它为.NET平台提供了丰富的日志记录功能。log4net允许程序员定义日志输出的级别(如DEBUG、INFO、WARN、ERROR等),并可自定义日志的输出目的地,包括控制台、文件...
log4net简介** Log4net是一个开源的日志组件,支持多种日志输出方式,如控制台、文件、数据库等。它具有灵活的配置机制,可以根据不同环境和需求轻松调整日志级别、格式和输出目标。此外,log4net与.NET的集成使得...
log4net简介 log4net是基于.NET的 logging API,它允许开发者定义多种日志输出级别(如DEBUG、INFO、WARN、ERROR、FATAL),并且可以将日志输出到不同的目标,如控制台、文件、数据库等。log4net的核心概念包括...
**一、log4net简介** log4net是一款广泛使用的、高度可配置的日志框架,它为.NET开发者提供了一套灵活的日志记录解决方案。log4net支持多种输出目标,包括控制台、文件、事件查看器以及数据库等。它的优势在于其...
**一、log4net简介** log4net提供了一个可配置的、高性能的日志记录框架,支持多种日志输出方式,如控制台、文件、数据库、网络等。其核心理念是“设计模式”,使得日志记录可以根据项目的需要进行灵活配置,而不...
log4net简介 Log4net是Apache软件基金会的开源项目,它是.NET平台上的一个强大的日志记录工具,提供灵活的日志配置,支持多种输出方式,如控制台、文件、数据库等。它具有性能高、可扩展性强、易于配置和使用等...
#### 一、log4net简介 log4net是一个开放源代码的日志框架,用于.NET平台的应用程序。它基于Apache Logging Services的log4j项目,并进行了扩展和优化,使其更适应.NET环境。log4net提供了一种灵活的日志记录机制,...
**一、log4net简介** log4net是Apache软件基金会的顶级项目之一,它是一个开源的日志记录框架,广泛应用于.NET平台。该库提供了一个高度可配置的日志记录系统,适用于多种编程语言,包括C#、VB.NET等。它的名称原为...
**一、log4Net简介** log4Net是Apache软件基金会的Jakarta项目下的一个开源日志框架,适用于.NET Framework。它提供了强大的日志记录功能,支持多种输出方式,如控制台、文件、数据库等,且具有可配置性,能够帮助...
Log4Net简介** Log4Net是Apache软件基金会的开源项目,它提供了一种灵活且可扩展的日志记录机制,具有高性能、可配置性、易于集成等特点。Log4Net支持多种输出方式,如控制台、文件、数据库、SMTP邮件等,可以满足...
#### 一、log4net简介 log4net是一款基于.NET平台的日志记录工具,它能够帮助开发者轻松地将日志信息写入磁盘文件以及发送电子邮件等。log4net是Apache Logging Services的一个组成部分,其设计灵感来源于log4j,...
#### 一、Log4Net简介 Log4Net是Apache开源组织为.NET环境提供的一款日志记录工具,它基于Java的日志框架log4j开发而来,继承了log4j的强大功能与灵活性。Log4Net能够帮助开发者在.NET应用程序中方便地进行日志记录...
log4net简介 log4net是基于Java的log4j移植到.NET平台的,提供了灵活的日志记录配置,支持多种日志输出方式,如控制台、文件、数据库等。它的设计理念是简单易用,但功能强大,可以满足不同层次的调试和日志需求。...
**log4net简介** log4net是Apache软件基金会的一个开源项目,它是一个强大的日志记录框架,广泛应用于.NET Framework的各个版本中。log4net提供了一种灵活且可配置的日志记录解决方案,允许开发者在应用程序中轻松...
1. **log4net 简介** log4net 是基于 log4j(Java 平台的日志框架)设计的,它提供了丰富的日志记录级别(如 DEBUG、INFO、WARN、ERROR、FATAL),以及灵活的日志输出方式,包括控制台、文件、数据库、SMTP 邮件等...
log4net简介 `log4net`是Apache软件基金会的Jakarta项目的一部分,灵感来源于Java的log4j。它是.NET平台上一个强大的日志工具,支持多种日志目标,如控制台、文件、数据库等,并且具有丰富的日志级别,如DEBUG、...
**log4net简介** log4net是Apache软件基金会的一个开源项目,它是一个强大的日志记录框架,广泛应用于.NET平台上的应用程序。它提供了灵活的日志记录配置,允许开发者将日志信息输出到各种目的地,如控制台、文件、...
**Log4net简介** Log4net是Apache软件基金会的开源项目,它是一个强大的日志记录框架,广泛应用于.NET平台,提供了灵活的日志记录方案。它支持多种日志目标(如控制台、文件、数据库等)和不同的日志级别(如DEBUG...
**log4net简介** log4net是Apache组织提供的一款开源的日志记录框架,适用于.NET平台。它为应用程序提供了灵活的日志记录功能,可以方便地控制日志信息的输出级别、格式以及目标,使得开发者能够方便地进行调试和...