Log4Net日志组件使用
概要:LogNet是一套开源的程序日志记录系统,经过配置后可以自动抓取程序中的错误、异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作
新建一个类库:Logger,封装一个LogHelper.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace myOracle.Logger { using log4net; public class LogHelper { static LogHelper() { //在第一次使用此类的时候加载配置文件 SetConfig(); } public static readonly log4net.ILog logError = log4net.LogManager.GetLogger("logerror"); public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("logInfo"); /// <summary> /// 默认配置。按配置文件 /// </summary> public static void SetConfig() { log4net.Config.XmlConfigurator.Configure(); } /// <summary> /// 写信息。 /// </summary> /// <param name="info"></param> public static void WriteInfoLog(string info) { if (logInfo.IsInfoEnabled) { logInfo.Info(info); } } /// <summary> /// 写异常。 /// </summary> /// <param name="info"></param> public static void WriteErrorLog(string errLog) { if (logError.IsErrorEnabled) { logError.Error(errLog); } } /// <summary> /// 写警告。 /// </summary> /// <param name="info"></param> public static void WriteWarnLog(string warnLog) { if (logError.IsWarnEnabled) { logError.Warn(warnLog); } } /// <summary> /// 写日志。出错时会写入 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void WriteErrorLog(string info, Exception se) { if (logError.IsErrorEnabled) { logError.Error(info, se); } } } }
在我们的UI层中的webconfig配置文件中进行配置:
<?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <!--错误日志配置--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!--设置文本日志将来是写到网站更目录下的Log\\LogError\\文件夹中,如果没有自动创建--> <param name="File" value="Log\\LogError\\"/> <!--以追加的方式将后面日志写入到日志文件中--> <param name="AppendToFile" value="true"/> <!--表示日志文件到达上限值时备份--> <param name="MaxSizeRollBackups" value="1000"/> <!--表示一个日志文件最大只能写入10M的数据--> <param name="MaxFileSize" value="10240"/> <!--false:表示日志文件按照一定的规则来生成文件名称,true:表示日志文件名称永远都不会改变--> <param name="StaticLogFileName" value="false"/> <!--表示日志文件的文件名称以yyyyMMdd--> <param name="DatePattern" value="yyyyMMdd"/> <param name="RollingStyle" value="Date"/> <layout type="log4net.Layout.PatternLayout"> <!--表示日志文件中的内容输出格式--> <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n "/> </layout> </appender> <!--信息日志配置--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogInfo\\"/> <!--文件路径--> <param name="AppendToFile" value="true"/> <param name="MaxFileSize" value="10240"/> <param name="MaxSizeRollBackups" value="100"/> <param name="StaticLogFileName" value="false"/> <param name="DatePattern" value="yyyyMMdd"/> <param name="RollingStyle" value="Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n"/> </layout> </appender> <!--控制台--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/> </layout> </appender> <logger name="logerror"> <level value="ERROR"/> <appender-ref ref="ErrorAppender"/> </logger> <logger name="logInfo"> <!--ALL:写错误,警告,信息三种类型的日志,--> <level value="INFO"/> <appender-ref ref="InfoAppender"/> </logger> </log4net> <connectionStrings> <add name="connString" connectionString="Data Source=127.0.0.1/orcl;Persist Security Info=True;User ID=SCOTT;Password=677714"/> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> </system.web> </configuration>
在我们的全局配置文件中进行一个简单的测试:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState; namespace myOracle.UI { using myOracle.Logger; public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { //若不想把lognet配置文件写在web.config中,也可以另外手动指定。 //XmlConfigurator.Configure(new FileInfo(HttpContext.Current.Server.MapPath("~/App_Data/log4net.config"))); LogHelper.WriteInfoLog("测试信息日志"); } protected void Session_Start(object sender, EventArgs e) { } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { Exception objExp = HttpContext.Current.Server.GetLastError(); LogHelper.WriteErrorLog("\r\n客户机IP:" + Request.UserHostAddress + "\r\n错误地址:" + Request.Url + "\r\n异常信息:" + Server.GetLastError().Message, objExp); } protected void Session_End(object sender, EventArgs e) { } protected void Application_End(object sender, EventArgs e) { } } }
在我们网站的根目录下会自动生成Log文件下的以日期的名称的日志文本文件:
本文仅用于学习!
END!
时间: 2024-10-13 07:31:05