• Log4Net使用方法


    项目里都会用到日志记录..特别是在本地跑的欢畅..一上服务器就嗝屁的时候..日志会帮你大忙..

    Log4net算是一种应用的最广泛的日志记录方式了..下面来简略的说下他的用法..

    先下载log4net.dll   [下载]  并引用

    然后在配置文件里写入一些配置的节值..

    下边是我的..

      <log4net>    
        <appender name="LogsFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="logs/running.txt"/>
          <appendToFile value="true"/>
          <encoding value="UTF-8"/>
          <rollingStyle value="Date"/>
          <datePattern value=".yyyyMMdd"/>
          <maxSizeRollBackups value="10" />
          <maximumFileSize value="5MB" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
          </layout>
        </appender>
        
        <root>
          <level value="ALL"/>
          <appender-ref ref="LogsFileAppender"/>
        </root>
      </log4net>

    因为一般日志都是记录到文件了..所以上边的配置还是最多的..

    如果你想加入到数据库..那就要按照下边的写法..

    <log4net>
        <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
          <bufferSize value="1"/>
          <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
          <connectionString value="data source=192.168.100.100;initial catalog=DBName;integrated security=false;persist security info=True;User ID=sa;Password=123"/>
          <commandText value="INSERT INTO Log (Date, Thread, Level, Logger, Message, Exception, LogApp) VALUES (@Date, @Thread, @Level, @Logger, @Message, @Exception,'Web')"/>
          <parameter>
            <parameterName value="@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="@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>
          <level value="ALL"/>
          <appender-ref ref="AdoNetAppender"/>
    </root>
    </log4net>

    这里边需要先把表建立起来..插入数据库的T-SQL语句也已经在里边配置过了..相信大家可以根据这个语句来建表了..所以具体的建表语句就不写了..

    需要说下的是..在上文配置中的最后一个节点..<root>  这里边的节点 level..我配置的是All..就是说所有级别都是写在这里边的..没有区分的特别清楚..大家有兴趣了可以深入研究一下..

    然后在程序开始初期..配置这么一句话..来初始化Log4net

     log4net.Config.XmlConfigurator.Configure();

    Web程序配置到 Global.asax中..

        // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
        // visit http://go.microsoft.com/?LinkId=9394801
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                log4net.Config.XmlConfigurator.Configure();
                ModelBinders.Binders[typeof(DataTable)] = new DataTableModelBinder();
    
                AreaRegistration.RegisterAllAreas();
    
                WebApiConfig.Register(GlobalConfiguration.Configuration);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
            }
        }

    WinFrom或者WindowService程序中配置到Program.cs中..

        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            static void Main()
            {
                log4net.Config.XmlConfigurator.Configure();
    
                ServiceBase[] ServicesToRun = new ServiceBase[] 
                { 
                    new Hello() 
                };
                ServiceBase.Run(ServicesToRun);
            }
        }

    在你页面中 要用的时候..需要定义Log对象了..

            log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            public Service1()
            {
                InitializeComponent();
            }
    
            protected override void OnStart(string[] args)
            {
                log.Info("服务成功启动了!!");
            }
    
            protected override void OnStop()
            {
                log.Info("服务被关闭了!!");
            }
        }

    上边是我的用法..大家也可以直接使用

    log4net.ILog log = log4net.LogManager.GetLogger("LogsFileAppender");

    括号中的值是你在配置文件中配置的那个 appender name..

    剩下的就是使用了..Log4net的日志级别分为五类..

    从最严重到最轻依次为:

    Fatal  毁灭

    Error  异常

    Warn  警告

    Debug  调试

    Info  普通信息

    可以直接使用上边命名对象 Log  的同名方法来记录日志..

    另外再说一点是配置文件中的文件书写方式..

    其中layout节点的配置说明:
            %m(message):输出的日志消息;
            %n(newline):换行;
            %d(datetime):输出当前语句运行的时刻;
            %r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
            %t(threadid):当前语句所在的线程ID ;
            %p(priority): 日志的当前日志级别;
            %c(class):当前日志对象的名称;
            %L:输出语句所在的行号;
            %F:输出语句所在的文件名; 
            %-10:表示最小长度为10,如果不够,则用空格填充;

    Over....

  • 相关阅读:
    2004选拔赛 最小值
    [JSOI2008]最大数maxnumber
    HDOJ 2896 病毒侵袭
    POJ 2243 Knight Moves
    HDOJ Is It A Tree?
    MST 小希的迷宫
    PKU 3278 Catch That Cow
    POJ 2488 A Knight's Journey
    [SCOI2006]整数划分
    COJ 1259: 跳跳
  • 原文地址:https://www.cnblogs.com/iiwen/p/4415415.html
Copyright © 2020-2023  润新知