Log4net 日志文件的操作

LOG4net

 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。

首先要必须下载一个log4net.dll,这个在网上都可以搜到

接下来,的是如何用Log4net,输出日志文档

首先,把log4net添加到引用,

然后在配置文件中编写app.Config

 <configSections>
    <section name="log4net" type="log4net.Config.Loog4NetConfigurationSectionHandler,log4net"/>    
  </configSections>

  <log4net>
      <!--定义输出到文件中-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <file value="log\\"></file>
      <!--是否在文件中追加日志信息-->
      <appendToFile value="true"></appendToFile>
      <!--文件输出以日期方式滚动-->
      <rollingStyle value="Date"></rollingStyle>
      <!--日志文件名以输出日期命名,可更改其他日期方式-->
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"></datePattern>
      <!--表明输出的日志信息是否一直在同一文件中-->
      <staticLogFileName value="false"></staticLogFileName>
      <!--备份文件的最大文件数目-->
      <param name="MaxSizeRollBackups" value="100"></param>
      <layout type="log4net.Layout.PatternLayout">
          <!--每条日志末尾的文字说明-->
          <!--输出格式-->
          <!--样例 :2016-03-26 13:11:11-->
        <conversionPattern value="记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n出错类: %logger property :[%property{NDC}] - %n错误描述:%message%newline%n"></conversionPattern>
      
      </layout>
    </appender>
    
    <!--Info日志-->
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogInfo\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n日志描述:%message%newline %n"/>
      </layout>
    </appender>

    <!--监控日志-->
    <appender name="MonitorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogMonitor\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n跟踪描述:%message%newline %n"/>
      </layout>
      
    </appender>
    <!--Error日志--><!--这里面有三个属性,分别对应的上面的山歌配置文件,-->
    <logger name="logerror">
      <level value="ERROR" />
      <appender-ref ref="RollingLogFileAppender" />
    </logger>
    <!--Info日志-->
    <logger name="loginfo">
      <level value="INFO" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <!--监控日志-->
    <logger name="logmonitor">
      <level value="Monitor" />
      <appender-ref ref="MonitorAppender" />
    </logger>
  </log4net>


然后在编写后台代码,

这里用的是窗体程序(不影响输出)

新建一个LogHelperl

//必须要在类名中加上这个属性
[assembly:log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4net
{
    public class LogHelper
    {
        //根据不懂得类型将数据写入不同的文件当中
        //这里的三个属性分别对应的是配置文件中写的属性,通过这里去连接
        static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
        static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
        static readonly log4net.ILog logmonitor = log4net.LogManager.GetLogger("logmonitor");
        
        
        public static void WriteLog(Type t, Exception ex)
        {
            //Log4net的5种消息属性
            记录错误日志
            //loginfo.Error("error", new Exception("发生了一个异常"));
            记录严重错误
            //loginfo.Fatal("fatal", new Exception("发生了一个致命错误"));
            记录一般信息
            //loginfo.Info("info");
            记录调试信息
            //loginfo.Debug("debug");
            记录警告信息
            //loginfo.Warn("warn");

            loginfo.Error("Error", ex);
        }



        public static void WriteLog(Type t, string Texts)
        {
            loginfo.Info(Texts);
        }

    }
}


最后是操作结果

            //第一种记录方法
            //(1)Form1是类的名称
            //(2) 第二个参数是字符串信息

            string Msg = @"
            Name:{0}
            开始时间:{1}
            结束时间:{2}
            总 时 间:{3}秒
            Form表单数据:{4}";
            //这里是做的一个字符串的拼接,来完成多自己定义属性的操作
            string msg = string.Format(Msg, "1", "2", "3","4","5");
            LogHelper.WriteLog(typeof(Form1), msg);

            //第二种方法是捕捉异常
            //(1)Form1是类的名称
            //(2) 第二个参数是字符串信息
            try
            {
                string a = "a";
                int b = Convert.ToInt32(a);

            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(typeof(Form1), ex);
            }


最后附上我自己写的代码http://pan.baidu.com/s/1dFMIyOD


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值