zoukankan      html  css  js  c++  java
  • log4net的配置与使用

    log4net解决的问题是在.Net下提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access,Oracle9i,Oracle8i,DB2,SQLite)中。

    log4net主页:http://logging.apache.org/log4net/

    log4net配置:

    1、下载log4net.dll,在项目中添加该引用。

    2、在项目AssemblyInfo.cs中添加:

    [assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

    3、对App.config文件进行配置,如果没有App.config文件,可以通过在解决方案中,添加新建项→应用程序配置文件,进行添加。

    下面是个人比较喜欢的两种配置,一种以日期的形式记录,每天的日志都写入到一个文件中,按日期可以方便查看日志。

    另一种是以文件大小来记录,如果超过了大小就重新生成一个文件,最多为maxSizeRollBackups个,超过maxSizeRollBackups个则会轮训覆盖。

    level定义记录的日志级别,定义记录哪个级别以上的日志,级别由高往低依次是:None > Fatal > ERROR > WARN > DEBUG > INFO >ALL

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
      </configSections>
      <log4net>
        <root>
          <level value="ALL"/> <!---日志级别-->
          <appender-ref ref="RollingLogFileAppender"/>
        </root>
        <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是指定使用哪种介质-->
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="Log\"/><!-- 输出到什么目录-->
          <appendToFile value="true"/><!-- 是否到附加到文件中-->
          <rollingStyle value="Date"/><!-- 文件创建方式,以日期的方式记录-->
          <datePattern value="yyyy-MM-dd&quot;.txt&quot;"/><!-- 文件格式-->
          <staticLogFileName value="false"/><!--否采用静态文件名,文件名是否唯一-->
          <layout type="log4net.Layout.PatternLayout"> <!---日志内容布局-->
            <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/>
          </layout>
        </appender>
    
        <!---另一种Appender-->
        <appender name="DateFileInfoAppender" type="log4net.Appender.RollingFileAppender">
          <file value="Log\log.txt"/> <!-- 输出到什么文件-->
          <appendToFile value="true"/> <!-- 是否到附加到文件中-->
          <rollingStyle value="Size" />
          <maxSizeRollBackups value="10"/> <!--日志文件的最大个数-->
          <maximumFileSize value="10MB"/>  <!-- 单个日志文件最大的大小-->
          <staticLogFileName value="true"/> <!--否采用静态文件名,文件名是否唯一-->
          <layout type="log4net.Layout.PatternLayout"> <!---日志内容布局-->
            <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/>
          </layout>
        </appender>
      </log4net>
      
    <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
    </configuration>

    log4net的配置官方主页:http://logging.apache.org/log4net/release/config-examples.html

    4、log4net的使用:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using log4net;
    
    namespace ConfigTest
    {
        public static class TestClass
        {
            private static readonly ILog log = LogManager.GetLogger(typeof(TestClass));
    
            public static void TestLog()
            {
                for (int i = 0; i < 1000; ++i)
                {
                    log.Info(string.Format("Log info {0}",i));
                    log.Debug(string.Format("Log debug {0}", i));
                }
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    TestClass.TestLog();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }

    参考:

    http://zhoufoxcn.blog.51cto.com/792419/429988/

  • 相关阅读:
    [机器学习] k-近邻算法(knn)
    [博客] 博客园侧边栏公告设置访问人数及访客国家来源
    Ubuntu搭建hugo博客
    CodeForces
    Javaweb开发入门___1
    JDBC的学习
    Mysql的学习7___权限和数据库设计
    Mysql的学习6____事物,索引,备份,视图,触发器
    Mysql的学习5___Mysql常用函数,聚合函数,sql编程
    Mysql的学习3___数据的管理,主键 外键 以及增改删
  • 原文地址:https://www.cnblogs.com/luxiaoxun/p/3583386.html
Copyright © 2011-2022 走看看