zoukankan      html  css  js  c++  java
  • Log4Net从Mvc转到.Net Core

    原项目用的Log4Net,不过版本比较旧,在Core里新版也进行了支持,本文用的是现在最新版本2.0.8

    1、LogHelper帮助类放另一个类库中 Log/LogHelper.cs

    2、单独建的配置文件放在主项目下,LogConfig/Log4Net.config

    具体位置如下图:


    LogHelper.cs内容
    升级版本后本来的LogManager.GetLogger()方法要指定Repository 看文章都是要
    CreateRepository一个.
      private static readonly ILoggerRepository Repository = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(Hierarchy))
    不过我这样写就是不行,没有报错日志也不会写入.后面研究半天用GetRepository解决.
      private static readonly ILoggerRepository Repository = LogManager.GetRepository(Assembly.GetCallingAssembly());
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Collections.Concurrent;
    using System.IO;
    using System.Reflection;
    using log4net;
    using log4net.Config;
    using log4net.Repository;
    using log4net.Repository.Hierarchy;
    
    //指定log4net使用的config文件来读取配置信息
    [assembly: XmlConfigurator(ConfigFile = @"LogConfigLog4Net.config", Watch = true)]
    namespace C.Until
    {
        /// <summary>
        /// 日志帮助类
        /// </summary>
        public class LogHelper
        {
            #region 旧版本
            //private static readonly ILog Loginfo = LogManager.GetLogger("loginfo");
            //private static readonly ILog LogError = LogManager.GetLogger("logerror");
            #endregion
    
    
            private static readonly ILoggerRepository Repository = LogManager.GetRepository(Assembly.GetCallingAssembly());
            private static readonly ILog Loginfo = LogManager.GetLogger(Repository.Name, "loginfo");
            private static readonly ILog LogError = LogManager.GetLogger(Repository.Name, "logerror");
    
            public static void Error(string errorMsg, Exception ex = null)
            {
                if (ex != null)
                {
                    LogError.Error(errorMsg, ex);
                }
                else
                {
                    LogError.Error(errorMsg);
                }
            }
    
            public static void Info(string msg)
            {
                Loginfo.Info(msg);
            }
        }
    }

    Log4Net.config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!--添加自定义节点:log4net  type:解析类名,程序集名(log4net.dll)-->
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
    
      <log4net>
        <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">
          <!--定义文件存放位置-->
          <file value="Log\LogInfo\" />
          <encoding value="utf-8" />
          <!--是否追加到文件,默认为true,通常无需设置-->
          <appendToFile value="true"/>
          <RollingStyle value="Date"/>
          <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
          <DatePattern value="&quot;log&quot;yyyyMM&quot;.log&quot;" />
          <!--日志文件名是否为静态-->
          <StaticLogFileName value="false"/>
          <!--多线程时采用最小锁定-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <!--布局(向用户显示最后经过格式化的输出信息)-->
          <layout type="log4net.Layout.PatternLayout">
            <ConversionPattern value="记录时间:%date %n错误描述:%message%newline %n"  />
          </layout>
        </appender>
    
        <appender name="Log4Net_ERROR" type="log4net.Appender.RollingFileAppender">
          <!--定义文件存放位置-->
          <file value="Log\LogError\" />
          <encoding value="utf-8" />
          <!--是否追加到文件,默认为true,通常无需设置-->
          <appendToFile value="true"/>
          <RollingStyle value="Date"/>
          <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
          <DatePattern value="&quot;log&quot;yyyyMM&quot;.log&quot;" />
          <!--日志文件名是否为静态-->
          <StaticLogFileName value="false"/>
          <!--多线程时采用最小锁定-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <!--布局(向用户显示最后经过格式化的输出信息)-->
          <layout type="log4net.Layout.PatternLayout">
            <ConversionPattern value="记录时间:%date %n错误描述:%message%newline %n"  />
          </layout>
        </appender>
        
        <logger name="logerror">
          <level value="ERROR" />
          <appender-ref ref="Log4Net_ERROR" />
        </logger>
        <logger name="loginfo">
          <level value="INFO" />
          <appender-ref ref="Log4Net_INFO" />
        </logger>
    
      </log4net>
    </configuration>

    这里因为不同消息放在不同文件 分类处理用的“ogger name="logerror" 此种属性.

    ps:在LogHelper.cs文件中用[assembly: XmlConfigurator(ConfigFile = @"LogConfigLog4Net.config", Watch = true)]来读取配置文件,也可以在Startup.cs中注册文件路径.不过为了独立性 方便移植到别的项目中就没用此方法.

  • 相关阅读:
    python基础之包、模块、命名空间和作用域
    python基础之函数式编程
    python基础之文件操作
    python基础之psutil模块和发邮件(smtplib和yagmail)
    【面试题21】包含min函数的栈
    【面试题20】顺时针打印矩阵
    【面试题19】二叉树的镜像
    【面试题18】树的子结构
    【面试题17】合并两个排序的链表
    【面试题16】反转链表
  • 原文地址:https://www.cnblogs.com/dangzhensheng/p/8808599.html
Copyright © 2011-2022 走看看