2.1 自定义日志系统-log4net

说明

  1. Prism中如果把日志级别设定为DEBUG,会显示框架加载信息
  2. Prism默认是没有日志系统的

步骤

  1. 下载log4net包
Install-Package log4net;
  1. 在app.config中配置日志系统需要的信息
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--使用log\\代表存储在log文件夹下-->
      <file value="log\\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <!--这里必须添加'.txt'代表创建日志后缀-->
      <datePattern value="yyyyMMdd'.txt'"/>
      <staticLogFileName value="false" />
      <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="日期:%date%n线程ID:[%thread]%n日志等级:%-5level%n内容:%message%newline%newline" />
      </layout>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
    </startup>
</configuration>
  1. 在AssemblyInfo.cs中设定使用app.config的配置信息
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
  1. 在项目中使用log4net,
using Prism.Logging;
using log4net;

namespace AutoSeller
{
    public class LogggerAdapter : ILoggerFacade
    {
        private static readonly ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        public void Log(string message, Category category, Priority priority)
        {
            switch (category)
            {
                case Category.Debug:
                    _log.DebugFormat(message, category.ToString(), (int)priority);
                    break;
                case Category.Exception:
                    _log.ErrorFormat(message, category.ToString(), (int)priority);
                    break;
                case Category.Info:
                    _log.InfoFormat(message, category.ToString(), (int)priority);
                    break;
                case Category.Warn:
                    _log.WarnFormat(message, category.ToString(), (int)priority);
                    break;
                default:
                    break;
            }
        }
    }
}
  1. 在bootstrapper中重写CreateLogger方法,创建日志系统。
using Prism.Logging;
namespace AutoSeller
{
    public partial class SecondaryCacheBootstrapper
    {

        private readonly LoggerAdapter _logger = new LoggerAdapter();

        protected override ILoggerFacade CreateLogger()
        {
            return _logger;
        }
    }
}

log4net说明

log4net支持记录5中类型日志消息:

  • FATAL
  • ERROR
  • WARN
  • INFO
  • DEBUG

对应在程序中使用同名函数记录日志,如记录INFO类型日志使用 log .Info(msg)。我们可能不需要显示所有类型日志,在开发我们需要显示调试日志信息,错误日志信息,而在实际部署中只需显示错误日志消息即可。可以通过设定日志等级实现上述需求,log4net支持7个等级的日志:

  • OFF -没有消息
  • FATAL
  • ERROR
  • WARN
  • INFO
  • DEBUG
  • ALL -所有消息

当我们在配置文件中配置日志等级为DEBUG时,

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>

所有FATAL,ERROR,WARN,INFO,DEBUG类型消息都会被记录。

posted @ 2020-11-01 23:13  饮冰少年  阅读(265)  评论(0编辑  收藏  举报