winform项目中使用log4net

winform项目中使用log4net

  • 1 、安装log4net
  • 2、添加log4net.config
  • 3、 修改AssemblyInfo.cs
  • 4、新增一个LogHelper
  • 5、初始化log4net
  • 6、使用

最近在一个winform项目中用到了log4net记录日志,没有阅读官方的文档,只参考了网上一些博客,使用的时候IsErrorEnable、IsInfoEnable等等都为false,导致log4net不能写日志,google了一圈,找到了解决方法。顺便把整个过程也记录一下。

1 、安装log4net

VS环境,项目 - 管理Nuget程序包,在浏览框中输入 log4net - 回车 - 选择 log4net - 安装。

2、添加log4net.config

在工程目录下添加log4net.config文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <log4net>
    <root>
    </root>
    <logger name="Error">
      <level value="ALL" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="InfoLog">
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name="File" type="" value="Log/Error" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
        <param name="Header" value="-----------BEGIN-----------" />
        <param name="Footer" value="------------END------------" />
      </layout>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name="File" type="" value="Log/Info" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
        <param name="Header" value="-----------BEGIN-----------" />
        <param name="Footer" value="------------END------------" />
      </layout>
    </appender>
  </log4net>
</configuration>

各个参数的作用这里就不写了。设置log4net.config的属性,使VS自动把log4net.config的内容复制到.exe文件所在的目录,如下图所示:
winform项目中使用log4net_第1张图片

3、 修改AssemblyInfo.cs

在工程 - Properties - AssemblyInfo.cs文件中新增如下一行代码:

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

如下图所示:
winform项目中使用log4net_第2张图片

4、新增一个LogHelper

新增一个LogHelper,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ToolUtils
{
    public class LogHelper
    {
        public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("InfoLog");
        public static readonly log4net.ILog logError = log4net.LogManager.GetLogger("Error");
        /// 
        /// 普通日志
        /// 
        /// 日志内容
        public static void Info(string message)
        {
            if (logInfo.IsInfoEnabled)
            {
                logInfo.Info(message);
            }
        }
        /// 
        /// 错误日志
        /// 
        /// 错误日志
        public static void Error(string message)
        {
            if (logError.IsErrorEnabled)
            {
                logError.Error(message);
            }
        }
    }
}

5、初始化log4net

在Program.cs文件中初始化log4net,否则在LogHelper中 的各种IsErrorEnable、IsInfoEnable都为false,导致log4net不写日志,初始化代码如下:

log4net.Config.XmlConfigurator.Configure();

6、使用

在需要写日志的地方调用LogHelper的相关函数写日志,如下:

LogHelper.Info("这是一条普通日志");
LogHelper.Error("这是一条错误日志");

生成的日志如下所示:
winform项目中使用log4net_第3张图片
日志样式如下:

-----------BEGIN-----------
[2020-03-21 14:08:33,952] Error 
这是一条错误日志
-----------BEGIN-----------
[2020-03-21 14:08:33,941] InfoLog 
这是一条普通日志

收工。

你可能感兴趣的:(C#)