?
参考网上资料完成:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO;
namespace DAL { ? public? class LogHelper ??? { ??????? //Log4net支持多种级别的日志。优先级从高到低依次排列如下:FATAL > ERROR > WARN > INFO > DEBUG ????? //日志发送到文件显示 ???????? public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("logerror"); ????? //日志发送到文件显示 ????? public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("loginfo"); ????? //日志发送到系统日志显示 ????? public static readonly log4net.ILog logevent = log4net.LogManager.GetLogger("logevent");
????? //日志发送到SQLSERVER数据库 ????? public static readonly log4net.ILog logSqlServer = log4net.LogManager.GetLogger("logSqlServer"); ????? ????? public static void SetConfig() ????? { ???????? log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config")); ????? } ????? public static void SetConfig(FileInfo configFile) ????? { ????????? log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config")); ????? }
????? public static void WriteSqlServer(string info,Exception ex) ????? { ????????? if(logSqlServer.IsInfoEnabled) ????????? { ????????????? logSqlServer.Info(info,ex); ????????? }
????????? if (logSqlServer.IsErrorEnabled) ????????? { ????????????? logSqlServer.Error(info,ex); ????????? }
????????? if(logSqlServer.IsFatalEnabled) ????????? { ????????????? logSqlServer.Fatal(info,ex); ????????? }
????????? if(logSqlServer.IsWarnEnabled) ????????? { ????????????? logSqlServer.Warn(info,ex); ????????? }
????????? if(logSqlServer.IsDebugEnabled) ????????? { ????????????? logSqlServer.Debug(info,ex); ????????? } ????? }
}
global.asax配置:
<%@ Application Language="C#" %>
<script runat="server">
??? void Application_Start(object sender,EventArgs e) ??? { ??????? //在应用程序启动时运行的代码 ??????? DAL.LogHelper.SetConfig(); ??? } ??? ??? void Application_End(object sender,EventArgs e) ??? { ??????? //在应用程序关闭时运行的代码
??? } ??????? ??? void Application_Error(object sender,EventArgs e) ??? { ??????? //在出现未处理的错误时运行的代码 ??????? Exception objExp = HttpContext.Current.Server.GetLastError();
??? }
??? void Session_Start(object sender,EventArgs e) ??? { ??????? //在新会话启动时运行的代码
??? }
??? void Session_End(object sender,EventArgs e) ??? { ??????? //在会话结束时运行的代码。 ??????? // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 ??????? // InProc 时,才会引发 Session_End 事件。如果会话模式 ??????? //设置为 StateServer 或 SQLServer,则不会引发该事件。
??? } ?????? </script>
log4net.config信息
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections> ??? <section name="log4net"? type="log4net.Config.Log4NetConfigurationSectionHandler" /> ??? </configSections> ? ? <log4net> ??? <logger name="logerror"> ????? <level value="ERROR" /> ????? <appender-ref ref="ErrorAppender" /> ??? </logger> ??? <logger name="loginfo"> ????? <level value="INFO" /> ????? <appender-ref ref="InfoAppender" /> ??? </logger> ??? <logger name="logevent"> ????? <level value="INFO" /> ????? <appender-ref ref="EventLogAppender" /> ??? </logger> ??? <logger name="logSqlServer"> ????? <level name="INFO"></level> ????? <appender-ref ref="AdoNetAppender_SQL"></appender-ref> ??? </logger> ??? <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> ????? <param name="File" value="d:Error" /> ????? <param name="AppendToFile" value="true" /> ????? <param name="MaxSizeRollBackups" value="100" /> ????? <param name="MaxFileSize" value="10240" /> ????? <param name="StaticLogFileName" value="false" /> ????? <param name="DatePattern" value="yyyyMMdd".txt"" /> ????? <param name="RollingStyle" value="Date" /> ????? <layout type="log4net.Layout.PatternLayout"> ??????? <param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p ?? <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" /> ??????? <param name="Header" value="************BEGIN************" /> ??????? <param name="Footer" value="************END************" /> ????? </layout> ??? </appender> ??? <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> ????? <param name="File" value="d:Info" /> ????? <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".txt"" /> ????? <param name="RollingStyle" value="Date" /> ????? <layout type="log4net.Layout.PatternLayout"> ??????? <param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p ?? <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" /> ??????? <param name="Header" value="************BEGIN************" /> ??????? <param name="Footer" value="************END************" /> ????? </layout> ??? </appender> ??? <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> ????? <layout type="log4net.Layout.PatternLayout"> ??????? <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> ????? </layout> ??? </appender> ??? <appender name="AdoNetAppender_SQL" type="log4net.Appender.ADONetAppender"> ????? <bufferSize value="10000" /> ????? <connectionType value="System.Data.SqlClient.SqlConnection,System.Data,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" /> ????? <connectionString value="DATABASE=MyDB;SERVER=.;UID=sa;PWD=1;Connect Timeout=15;" /> ????? <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date,@thread,@log_level,@logger,@message,@exception)" /> ????? <parameter> ??????? <parameterName value="@log_date" /> ??????? <dbType value="DateTime" /> ??????? <layout type="log4net.Layout.RawTimeStampLayout" /> ????? </parameter> ????? <parameter> ??????? <parameterName value="@thread" /> ??????? <dbType value="String" /> ??????? <size value="100" /> ??????? <layout type="log4net.Layout.PatternLayout"> ????????? <conversionPattern value="%t" /> ??????? </layout> ????? </parameter> ????? <parameter> ??????? <parameterName value="@log_level" /> ??????? <dbType value="String" /> ??????? <size value="200" /> ??????? <layout type="log4net.Layout.PatternLayout"> ????????? <conversionPattern value="%p" /> ??????? </layout> ????? </parameter> ????? <parameter> ??????? <parameterName value="@logger" /> ??????? <dbType value="String" /> ??????? <size value="500" /> ??????? <layout type="log4net.Layout.PatternLayout"> ????????? <conversionPattern value="%logger" /> ??????? </layout> ????? </parameter> ????? <parameter> ??????? <parameterName value="@message" /> ??????? <dbType value="String" /> ??????? <size value="3000" /> ??????? <layout type="log4net.Layout.PatternLayout"> ????????? <conversionPattern value="%m" /> ??????? </layout> ????? </parameter> ????? <parameter> ??????? <parameterName value="@exception" /> ??????? <dbType value="String" /> ??????? <size value="4000" /> ??????? <layout type="log4net.Layout.ExceptionLayout" /> ????? </parameter> ??? </appender> ? </log4net>?? </configuration>
DAL里的AssemblyInfo.cs里加一句
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config",Watch = true)]?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|