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文件夹。