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....

原文地址:https://www.cnblogs.com/iiwen/p/4415415.html