欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#使用Log4记录日志

程序员文章站 2023-12-25 16:35:51
...

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的引用

新建个WinForm应用程序,窗体名称为FormMain

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

2、配置Log4Net

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

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

App.config文件配置
<?xml version="1.0" encoding="utf-8" ?>
<!--使用.net自带的configSections,将配置信息分块管理,并提供实体类,便于开发人员友好的去使用它-->
<configuration>
    <configSections>
      <!--配置初始化-->
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
    <log4net>
      <!--定义输出到文件中-->
      RollingFileAppender将日志以回滚文件的形式写进文件中
      <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        <!--日志输出到exe程序这个相对目录下-->
       <file value="log\\"/>
        <!--输出的日志不会覆盖以前的信息-->
       <appendToFile value="true"/>
        <!--文件创建的方式,这里是以Date方式创建-->
       <rollingStyle value="Date"/>
        <!--日志文件名-->
       <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
        <!--是否使用静态文件名-->
       <staticLogFileName value="false"/>
        <!--备份文件的个数-->
       <param name="MaxSizeRollBackups" value="100"/>
        <!--错误日志布局-->
       <layout type="log4net.Layout.PatternLayout">
         <!--每条日志末尾的文字说明-->
         <!--输出格式-->
         <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
         <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
       </layout>
     </appender>
     <root>
       <level value="ERROR"/>
       <!--文件形式记录日志-->
       <appender-ref ref="RollingLogFileAppender"/>
     </root>
   </log4net>
</configuration>

(3)新建一个LogHelper帮助类,为了在多个窗体中都进行调用,类内容如下:

LogHelper.cs内容
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

    public class LogHelper
    {
         /// <summary>
         /// 输出日志到Log4Net
         /// </summary>
         /// <param name="t"></param>
         /// <param name="ex"></param>
         public static void WriteLog(Type t, Exception ex)
         {
             log4net.ILog log = log4net.LogManager.GetLogger(t);
             log.Error("Error", ex);
         }
         /// <summary>
         /// 输出日志到Log4Net
         /// </summary>
         /// <param name="t"></param>
         /// <param name="msg"></param>
         public static void WriteLog(Type t, string msg)
         {
             log4net.ILog log = log4net.LogManager.GetLogger(t);
             log.Error(msg);
         }
    }
}

AssemblyInfo.cs内容
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("FormMain")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("FormMain")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

//将 ComVisible 设置为 false 将使此程序集中的类型
//对 COM 组件不可见。  如果需要从 COM 访问此程序集中的类型,
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("b77ecb8f-076f-4a63-bb2e-dfb7689f9eac")]

// 程序集的版本信息由下列四个值组成: 
//
//      主版本
//      次版本
//      生成号
//      修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
//开关日志记录的操作
//Watch= true是必须的,否则程序就不会对这个进行监听
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

第三步:测试Log4Net

在按钮的事件中添加如下的代码

Form1.cs内容
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FormMain
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //(1)Form1是类名称
            //(2)第二个参数是字符串信息
            LogHelper.WriteLog(typeof(Form1), "测试Log4Net日志是否写入");
        }
    }
}

运行项目点击Button按钮,在项目的根目录下就会看到log文件夹。
C#使用Log4记录日志
C#使用Log4记录日志

上一篇:

下一篇: