C# winfrom 添加Log4Net日志库
简介:log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
当项目发布之后遇到一些问题,无法定位无法调试解决起来困难很大。下面我在项目中的服务程序使用Log4Net的日志记录功能:
1.在包管理工具中安装log4net
2、创建LogHelper类以及log4net.config配置文件。
using log4net;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
 
namespace WindowsFormsApp1111111111111
{
    public class LogHelp
    {
        private static readonly ILog logInfo = LogManager.GetLogger("Log");
        private static readonly ILog logErr = LogManager.GetLogger("Err");
        /// <summary>
        /// 记录正常的消息
        /// </summary>
        /// <param name="msg">消息内容</param>
        public static void info(string msg)
        {
            logInfo.Info(msg);
        }
        /// <summary>
        /// 记录异常信息
        /// </summary>
        /// <param name="msg">异常信息内容</param>
        public static void error(string msg)
        {
            StackTrace stackTrace = new StackTrace();
            StackFrame stackFrame = stackTrace.GetFrame(1);
            MethodBase methodBase = stackFrame.GetMethod();
            logErr.Error("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg);
        }
    }
}
3. 在App.config中添加log4net配置信息 ,(log4net节点是configuration子节点)
    <configSections>必须是<configuration>的第一个子节点<log4net可以是最后一个节点>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup> 
  
  <log4net>
    <logger name="Log">
      <level value="INFO" />//正常日志
      <appender-ref ref="RollingLog" />
    </logger>
    <logger name="Err">
      <level value="ERROR" />异常日志
      <appender-ref ref="RollingErr" />
    </logger>
    <appender name="RollingLog" type="log4net.Appender.RollingFileAppender">
      <file value="WindowsServiceLog\" />//存放正常日志文件夹
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd'.txt'" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="记录时间:%d 线程ID:[%thread]- 操作信息:%m%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>
    </appender>
    <appender name="RollingErr" type="log4net.Appender.RollingFileAppender">
      <file value="Err\" />存放异常日志文件夹
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd'.txt'" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="记录时间:%d 线程ID:[%thread]- 错误描述:%m%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      </filter>
    </appender>
  </log4net>
</configuration>
4. 在项目Properties->AssemblyInfo.cs文件中 添加 [assembly: log4net.Config.XmlConfigurator()]
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
 
5.调用
 private void button28_Click(object sender, EventArgs e)
        {
            try
            {
                int[] aa = { 23, 54, 23 };
                for (int i = 0; i < aa.Length; i++)
                {
                    Console.WriteLine(aa[i]/0);
                }
                LogHelp.info("正常");
                
            }
            catch (Exception ex)
            {
                LogHelp.error(ex.Message);
            } 
        }
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号