• Log4net 根据日志类型输出日志


    第一步:引入Log4net.dll 文件的引用

    第二步:添加LogHelper类,代码如下

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using log4net;
    
    namespace DemoLog4net
    {
        /// <summary>
        /// 日志等级
        /// </summary>
        public enum LogLevel
        {
            Error,
            Debug,
            Warning,
            Info
        }
       /// <summary>
       /// 日志类型
       /// </summary>
        public enum LogType
        {
            AppLog,
            ErrorLog,
            DebugLog,
            OtherLog
        }
        /// <summary>
        /// 单例模式初始化
        /// </summary>
        public class Singleton
        {
            private ILog Log;
            private static Singleton instance;
            private Singleton() { }
            public static Singleton getInstance()
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
            /// <summary>
            /// 获取日志初始化器
            /// </summary>
            /// <param name="logType"></param>
            /// <returns></returns>
            public ILog Init(LogType logType)
            {
                string s = logType.ToString();
                Log = LogManager.GetLogger(s);
                return Log;
            }
        }
        /// <summary>
        /// 日志操作类
        /// </summary>
        public class LogHelper
        {
            /// <summary>
            /// 输出Erro日志
            /// </summary>
            /// <param name="logType"></param>
            /// <param name="message"></param>
            public static void Error(LogType logType, string message)
            {
                WriteLog(logType, LogLevel.Error, message);
            }
            /// <summary>
            /// 输出Warning日志
            /// </summary>
            /// <param name="logType"></param>
            /// <param name="message"></param>
            public static void Warning(LogType logType, string message)
            {
                //记录日志
                WriteLog(logType, LogLevel.Warning, message);
            }
            /// <summary>
            /// 输出Info日志
            /// </summary>
            /// <param name="logType"></param>
            /// <param name="message"></param>
            public static void Info(LogType logType, string message)
            {
                //记录日志
                WriteLog(logType, LogLevel.Info, message);
            }
            public static void Debug(LogType logType, string message)
            {
                //记录日志
                WriteLog(logType, LogLevel.Debug, message);
            }
            /// <summary>
            /// 写日志
            /// </summary>
            /// <param name="logType"></param>
            /// <param name="logLevel"></param>
            /// <param name="message"></param>
            private static void WriteLog(LogType logType, LogLevel logLevel, string message)
            {
                ILog Log = Singleton.getInstance().Init(logType);
                switch (logLevel)
                {
                    case LogLevel.Debug:
                        Log.Debug(message);
                        break;
                    case LogLevel.Error:
                        Log.Error(message);
                        break;
                    case LogLevel.Info:
                        Log.Info(message);
                        break;
                    case LogLevel.Warning:
                        Log.Warn(message);
                        break;
                }
    
            }
        }
    }

    第三步:添加配置文件Log4net.config文件 ,记得将此文件的【复制到输出目录 】设置复制

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
      </configSections>
      <appSettings>
      </appSettings>
      <log4net>
        <!--一般信息日志-->
        <appender name="AppLog" type="log4net.Appender.RollingFileAppender">
          <file value="Log/AppLog/" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <datePattern value="yyyyMMdd&quot;.log&quot;" />
          <layout type="log4net.Layout.PatternLayout">
            <!--输出格式-->
            <conversionPattern value="%date %-5level %message%newline" />
          </layout>
          <filter type="log4net.Filter.LoggerMatchFilter">
            <loggerToMatch value="AppLog" />
          </filter>
          <filter type="log4net.Filter.DenyAllFilter" />
        </appender>
        <!--严重错误日志-->
        <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
          <file value="Log/ErrorLog/" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <datePattern value="yyyyMMdd&quot;.log&quot;" />
          <layout type="log4net.Layout.PatternLayout">
            <!--输出格式-->
            <conversionPattern value="%date %-5level %message%newline" />
          </layout>
          <filter type="log4net.Filter.LoggerMatchFilter">
            <loggerToMatch value="ErrorLog" />
          </filter>
          <filter type="log4net.Filter.DenyAllFilter" />
        </appender>
        <!--调试日志-->
        <appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
          <file value="Log/DebugLog/" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <datePattern value="yyyyMMdd&quot;.log&quot;" />
          <layout type="log4net.Layout.PatternLayout">
            <!--输出格式-->
            <conversionPattern value="%date %-5level %message%newline" />
          </layout>
          <filter type="log4net.Filter.LoggerMatchFilter">
            <loggerToMatch value="DebugLog" />
          </filter>
          <filter type="log4net.Filter.DenyAllFilter" />
        </appender>
    
        <!--其他信息日志-->
        <appender name="OtherLog" type="log4net.Appender.RollingFileAppender">
          <file value="Log/OtherLog/" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <datePattern value="yyyyMMdd&quot;.log&quot;" />
          <layout type="log4net.Layout.PatternLayout">
            <!--输出格式-->
            <conversionPattern value="%date %-5level %message%newline" />
          </layout>
          <filter type="log4net.Filter.LoggerMatchFilter">
            <loggerToMatch value="OtherLog" />
          </filter>
          <filter type="log4net.Filter.DenyAllFilter" />
        </appender>
        <root>
          <level value="ALL"/>
          <appender-ref ref="AppLog"/>
          <appender-ref ref="ErrorLog"/>
          <appender-ref ref="DebugLog"/>
          <appender-ref ref="OtherLog"/>
        </root>
      </log4net>
    </configuration>

    第五步:在AssemblyInfo.cs文件中添加

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

  • 相关阅读:
    系统重启
    Linux驱动程序开发
    Linux 下实现控制屏幕显示信息和光标的状态
    Linux C 语言 获取系统时间信息
    linux 获取系统屏幕分辨率
    Linux下得到显示屏参数的方法
    Linux如何关闭防火墙和查看防火墙的具体情况
    查看Linux下网卡状态或 是否连接(转)
    ArcGIS Engine中正确释放打开资源
    在ArcEngine下实现图层属性过滤的两种方法
  • 原文地址:https://www.cnblogs.com/dearbeans/p/7040207.html
Copyright © 2020-2023  润新知