• web项目中的 log4net的配置


    最近用log4net,网上查了很多资料,照着网上的配置大多都不管用,可能我还是有什么地方配置的不对。看出来的朋友平指出。下面是我自己亲测的,可以用!

    1.web项目中的web.config 配置log4net

    <?xml version="1.0" encoding="utf-8"?>
    
    <!--
      有关如何配置 ASP.NET 应用程序的详细消息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    
    <configuration>
      <configSections>
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
      </configSections>
        <system.web>
            <compilation debug="true" targetFramework="4.0" />
        </system.web>
    
      <log4net>
        <!--定义输出到文件中-->
        <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          <!--定义文件存放位置:相对路径-->
          <!--<file value="./log/log.txt" />-->
          <!--定义文件存放位置:绝对路径-->
          <!--<file value="e:/log/log.text" />-->
          <!--定义文件存放位置:相对路径但是文件名称日期-->
          <file type="log4net.Util.PatternString" value="./log/%date{yyyy-MM-dd}.log" />
          
          <appendToFile value="true" />
          <!--得到-->
          <!--按照文件的大小进行变换日志文件-->
          <!--<param name="RollingStyle" value="Size" />-->
          <!--按照日期进行变换日志文件 下面两种配置都可以,作用是一样的-->
          <!--<param name="RollingStyle" value="Date" />-->
          <rollingStyle value="Date" />
          <datePattern value="yyyyMMdd-HH:mm:ss" />
      
    
          <!--关掉固定文件名-->
          <!--<staticLogFileName value="false" />-->
          
          <layout type="log4net.Layout.PatternLayout">
            <!--每条日志末尾的文字说明 这个地方有时候管用-->
            <footer value="一条完整日志" />
            <!--输出格式-->
            <!--样例:2008-03-26 13:42:32,111 [10] INFO  loglog.WebForm1 [(null)] 文件:E:	extlog4NetloglogloglogWebForm1.aspx.cs 行号:41 - info-->
            <conversionPattern value="%newline记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 文件:%F-- 行号:%L 错误描述:%message%newline" />
          </layout>
        </appender>
        <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
        <root>
          <!--文件形式记录日志-->
          <appender-ref ref="LogFileAppender" />
       
          <!--Windows事件日志-->
          <!--<appender-ref ref="EventLogAppender" />-->
          <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
          <appender-ref ref="AdoNetAppender_Access" />
          -->
        </root>
    
      </log4net>
    
    </configuration>

     关于使用log4net中可能会使用到的一些参数
    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
    %n(new line):换行
    %d(datetime):输出当前语句运行的时刻
    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
    %t(thread id):当前语句所在的线程ID
    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
    %c(class):当前日志对象的名称,例如:
    %f(file):输出语句所在的文件名。
    %l(line):输出语句所在的行号。
    %数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充

    <!--每条日志末尾的文字说明 这个地方有时候管用-->
            <footer value="一条完整日志" />

    有时候会有,有时候没有。??

    2.配置完以后在Global文件中加点东西

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.SessionState;
    //方式1:这个可以用
    //[assembly: log4net.Config.DOMConfigurator(ConfigFile = "Web.config", Watch = true)] 
    namespace loglog
    {
        public class Global : System.Web.HttpApplication
        {
    
            protected void Application_Start(object sender, EventArgs e)
            {
                //方式2:网上有这样写的,我式了能用。有知道的请告诉我怎么用。
                //log4net.Config.XmlConfigurator.Configure();
                //方式3:这个可以用
                log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath("web.config"))); 
            }
    
            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)
            {
    
            }
    
            protected void Session_End(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_End(object sender, EventArgs e)
            {
    
            }
        }
    }


    上面的三种方式,第二种不管用,我看网上其他人有这样写的,不知道我这为什么不能用!!

    3. 在想加日志的的地方加下面的代码

                //创建日志记录组件实例
                ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
                //记录错误日志
                log.Error("error", new Exception("发生了一个异常"));
                //记录严重错误
                log.Fatal("fatal", new Exception("发生了一个致命错误"));
                //记录一般信息
                log.Info("info");
                //记录调试信息
                log.Debug("debug");
                //记录警告信息
                log.Warn("warn");
                //Console.WriteLine("日志记录完毕。");
                //Console.Read();
                System.Diagnostics.Debug.WriteLine("线程id:" + Thread.CurrentThread.ToString());

    这样值日就记录在下来了。

  • 相关阅读:
    上传下载图片到SQl
    掉所有的逗号
    jquery 是否有某属性的选择方法
    世界杯小组赛所有得分情况
    Jquery 操作表的某行内第几个控件
    jquery get()
    漏掉一个加号
    Datalist 的 itemdatabound 事件,行的内容的改变
    测试页脚
    tfs 获取最新后,老是编译不成功
  • 原文地址:https://www.cnblogs.com/linzhao126/p/4271718.html
Copyright © 2020-2023  润新知