winform项目中使用log4net

winform项目中使用log4net


最近在一个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文件所在的目录,如下图所示:
在这里插入图片描述

3、 修改AssemblyInfo.cs

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

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
  • 如下图所示:

在这里插入图片描述

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");
        /// <summary>
        /// 普通日志
        /// </summary>
        /// <param name="message">日志内容</param>
        public static void Info(string message)
        {
            if (logInfo.IsInfoEnabled)
            {
                logInfo.Info(message);
            }
        }
        /// <summary>
        /// 错误日志
        /// </summary>
        /// <param name="message">错误日志</param>
        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("这是一条错误日志");
  •  

生成的日志如下所示:
在这里插入图片描述
日志样式如下:

-----------BEGIN-----------
[2020-03-21 14:08:33,952] Error 
这是一条错误日志
  •  
-----------BEGIN-----------
[2020-03-21 14:08:33,941] InfoLog 
这是一条普通日志
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值