Log4net配置备忘

来源:互联网 发布:东吴证券交易软件下载 编辑:程序博客网 时间:2024/05/02 08:11
<?xml version="1.0" encoding="utf-8"?><configuration>  <!--设置地址重写组件-->  <configSections>    <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />          <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />        </sectionGroup>      </sectionGroup>    </sectionGroup>    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler" />  </configSections>  <!--地址重写规则-->  <rewriter>    <!-- 简单实现: ~/Article/maozhuxi.html -->    <rewrite url="^~/Article/([^\.]+)\.html$" to="~/Default.aspx?n=$1" />    <rewrite url="^~/Article/aaa.aspx$" to="~/List.aspx?n=$1" />    <rewrite url="^~/P-([0-9]+).html$" to="~/Page.aspx?ID=$1" />    <rewrite url="^~/Article/([^\.]+)$" to="~/Article/Display.aspx?ID=$1" />  </rewriter>  <log4net>    <!--定义输出到文件中-->    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">      <!--定义文件存放位置-->      <file value="log4.log" />      <appendToFile value="true" />      <rollingStyle value="Date" />      <datePattern value="yyyyMMdd-HH:mm:ss" />      <layout type="log4net.Layout.PatternLayout">        <!--每条日志末尾的文字说明-->        <footer value="by 周公" />        <!--输出格式-->        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->        <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />      </layout>    </appender>    <!--定义输出到控制台命令行中-->    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />      </layout>    </appender>    <!--定义输出到windows事件中-->    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />      </layout>    </appender>
    <!--定义输出到数据库中,这里举例输出到MS sqlserver数据库中,数据库-->  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">   <bufferSize value="100" />   <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />   <connectionString value="Data Source=WANGBF\SQL2008EX;Initial Catalog=Nhibernate;User ID=sa;Password=sa" />   <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) 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="255" />    <layout type="log4net.Layout.PatternLayout">     <conversionPattern value="%thread" />    </layout>   </parameter>   <parameter>    <parameterName value="@log_level" />    <dbType value="String" />    <size value="50" />    <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="%logger" />    </layout>   </parameter>   <parameter>    <parameterName value="@message" />    <dbType value="String" />    <size value="4000" />    <layout type="log4net.Layout.PatternLayout">     <conversionPattern value="%message" />    </layout>   </parameter>   <parameter>    <parameterName value="@exception" />    <dbType value="String" />    <size value="2000" />    <layout type="log4net.Layout.ExceptionLayout" />   </parameter>  </appender>    
<!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->    <root>      <!--文件形式记录日志-->      <appender-ref ref="LogFileAppender" />      <!--控制台控制显示日志-->      <appender-ref ref="ConsoleAppender" />      <!--Windows事件日志-->      <appender-ref ref="EventLogAppender" />      <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉      <appender-ref ref="AdoNetAppender_Access" />      -->    </root>  </log4net>  <appSettings/>  <connectionStrings/>  <system.web>    <!--             设置 compilation debug="true" 可将调试符号插入            已编译的页面中。但由于这会             影响性能,因此只在开发过程中将此值             设置为 true。        -->    <compilation debug="false">      <assemblies>        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>      </assemblies>    </compilation>    <!--            通过 <authentication> 节可以配置 ASP.NET 用来             识别进入用户的            安全身份验证模式。         -->    <authentication mode="Windows" />    <!--            如果在执行请求的过程中出现未处理的错误,            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,            开发人员通过该节可以配置            要显示的 html 错误页            以代替错误堆栈跟踪。        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">            <error statusCode="403" redirect="NoAccess.htm" />            <error statusCode="404" redirect="FileNotFound.htm" />        </customErrors>        -->    <pages>      <controls>        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>      </controls>    </pages>    <httpHandlers>      <remove verb="*" path="*.asmx"/>      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>    </httpHandlers>    <httpModules>      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" />    </httpModules>  </system.web>  <system.codedom>    <compilers>      <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"                type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">        <providerOption name="CompilerVersion" value="v3.5"/>        <providerOption name="WarnAsError" value="false"/>      </compiler>    </compilers>  </system.codedom>  <!--         在 Internet 信息服务 7.0 下运行 ASP.NET AJAX 需要 system.webServer        节。对早期版本的 IIS 来说则不需要此节。    -->  <system.webServer>    <validation validateIntegratedModeConfiguration="false"/>    <modules>      <remove name="ScriptModule" />      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" preCondition="" />    </modules>    <handlers>      <remove name="WebServiceHandlerFactory-Integrated"/>      <remove name="ScriptHandlerFactory" />      <remove name="ScriptHandlerFactoryAppServices" />      <remove name="ScriptResource" />      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />    </handlers>  </system.webServer>  <runtime>    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">      <dependentAssembly>        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>      </dependentAssembly>      <dependentAssembly>        <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>      </dependentAssembly>    </assemblyBinding>  </runtime></configuration>


 

后台文件

using log4net;[assembly: log4net.Config.XmlConfigurator(Watch = true)]namespace NHibernateTest{    public partial class _Default : System.Web.UI.Page    {        public String path="";        protected void Page_Load(object sender, EventArgs e)        {            //Application.Run(new MainForm());            //创建日志记录组件实例            ILog log = log4net.LogManager.GetLogger("test");            //记录错误日志            log.Error("error", new Exception("发生了一个异常"));            //记录严重错误            log.Fatal("fatal", new Exception("发生了一个致命错误"));            //记录一般信息            log.Info("info");            //记录调试信息            log.Debug("debug");            //记录警告信息            log.Warn("warn");            Console.WriteLine("日志记录完毕。");            Console.Read();            path = "http://" + Request.Url.Host + HttpContext.Current.Request.ApplicationPath;            this.Label1.Text = "中国上海欢迎你!";            this.nav.InnerHtml = "<ul><li>北京</li><li>上海</li><li>天津</li><li>南京</li><li>西安</li></ul>";        }    }}


 

输出到数据库(MS SQLserver)中,表的生成语句:

CREATE TABLE [dbo].[Log] (    [Id] [int] IDENTITY (1, 1) NOT NULL,    [Date] [datetime] NOT NULL,    [Thread] [varchar] (255) NOT NULL,    [Level] [varchar] (50) NOT NULL,    [Logger] [varchar] (255) NOT NULL,    [Message] [varchar] (4000) NOT NULL,    [Exception] [varchar] (2000) NULL)


这里要强调一下,log4net版本要与你项目所应用的框架保持一致,不然,不会记录日志的。我开始就log4net 1.2.10不能成功生成日志,后来换成1.2.11,问题解决,且上面的的测试我个人已经经过测试!

原创粉丝点击