C#使用Log4net记录日志

Log4记录日志
第一步:下载Log4Net
下载地址:http://logging.apache.org/log4net/download_log4net.cgi

把下载的 log4net-1.2.11-bin-newkey解压后, 双击bin文件夹,双击net文件夹,选择针对.NET FramerWork的不同版本找到相应版本的log4net.dll;

第二步:应用Log4Net
1、在项目中添加Log4Net.DLL的引用

把Log4Net.Dll复制到项目的根目录下,然后添加Log4Net的引用

2、配置Log4Net

(1)新建一个应用程序配置文件app.config;

(2)app.config的配置文件内容如下

App.config文件配置
 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <!--类库-->
  <log4net>
    <!--类:名字叫ErrorLog    证明这个类要用来记录错误信息-->
    <logger name="ErrorLog">
      <!--设置这个类的等级是最低-->
      <level value="ALL"/>
      <!--设置这个引用-->
      <appender-ref ref="AppenderError"/>
    </logger>
    <!--类:名字叫InforLog    证明这个类要用来记录普通信息-->
    <logger name="InforLog">
      <level  value="ALL"/>
      <appender-ref ref="AppenderInfor"/>
    </logger>
    <!--提供记录错误信息的类中对错误信息的记录方式,记录方式是将信息日志写进一个文件中-->
    <appender name="AppenderError" type="log4net.Appender.RollingFileAppender">
      <!--设置文件存储的位置-->
      <file value="log\\Error\\"/>
      <!--是否追加到文件-->
      <appendToFile value="true"/>
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <rollingStyle value="Date"/>
      <!--按日期产生文件夹和文件名[在日期方式与混合方式下使用]-->
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
      <!--是否只写到一个文件中-->
      <staticLogFileName value="false"/>
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <param name="MaxSizeRollBackups" value="100"/>
      <!--记录日志信息的格式-->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n异常时间:%d %n异常级别:%-5p%n异常内容:%m%n" />
      </layout>
    </appender>
    <!--提供记录普通日志,记录方式是将信息日志写进一个文件中-->
    <appender name="AppenderInfor" type="log4net.Appender.RollingFileAppender">
      <!--设置文件存储的位置-->
      <file value="log\\Infor\\"/>
      <!--是否追加到文件-->
      <appendToFile value="true"/>
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <rollingStyle value="Date"/>
      <!--按日期产生文件夹和文件名[在日期方式与混合方式下使用]-->
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
      <!--是否只写到一个文件中-->
      <staticLogFileName value="false"/>
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <param name="MaxSizeRollBackups" value="100"/>
      <!--记录日志信息的格式-->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="日志时间:%d %n日志级别:%-5p  %n日志内容:%m%n%n" />
      </layout>
    </appender>
  </log4net>
</configuration>

(3)在AssemblyInfo.cs文件中添加log4net.dll的参数。(监视默认的配置文件,App.exe.config)
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
关联配置文件:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
ConfigFile: 配置文件的名字,文件路径相对于应用程序目录
Watch: 如果将Watch属性设置为true,就会监视配置文件。当配置文件发生变化的时候,就会重新加载。
添加辅助类的目的:
1、方便各个类库及项目直接调用,不用每个项目里都添加log4net的引用。
2、为了支持根据自己配置的日志输出格式和输出方式 输出日志(configPath 用来传入日志配置路径)。

第三步:添加一个帮助类LoggHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net.Core;
using log4net;

namespace 计算器日志
{
    /// <summary>
    /// 记录日志的类
    /// </summary>
    public static class LoggHelper
    {
        public static ILog logError = LogManager.GetLogger("ErrorLog");

        public static ILog logInfor = LogManager.GetLogger("InforLog");
        
        /// <summary>
        /// 记录错误日志
        /// </summary>
        public static void WriteLog(string infor, Exception ex)
        {
            if (logError.IsErrorEnabled)
            {
                logError.Error(infor, ex);
            }
        }
        /// <summary>
        /// 记录普通日志
        /// </summary>
        public static void WriteLog(string infor)
        {
            if (logInfor.IsInfoEnabled)
            {
                logInfor.Info(infor);
            }
        }
    }
}
!

第四步:测试Log4Net

运行项目后,在项目的根目录下就会看到log文件夹,看到这个文件就说明log4net.dll的应用已经成功了。
文件夹的命名是根据你在app.config里面设置的file节点自动生成的,可以根据自己的需要自己设置存放的路径和格式等

å¨è¿éæå¥å¾çæè¿°

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 计算器日志
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                int num1 = int.Parse(textBox1.Text);
                int num2 = int.Parse(textBox2.Text);
                textBox3.Text = (num1 + num2).ToString();
                LoggHelper.WriteLog("正确日志记录:" + num1 + "+" + num2 + "=" + textBox3.Text);
            }
            catch (Exception ex)
            {
                LoggHelper.WriteLog("错误日志记录", ex);
            }
        }

        private void textBox1_MouseClick(object sender, MouseEventArgs e)
        {
            textBox1.Text = "";
            textBox2.Clear();
            textBox3.Clear();
        }
    }
}!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值