zoukankan      html  css  js  c++  java
  • asp.net core 5.0 使用log4net

    之前我在.net core 2.1的时候使用的是Huanent.Logging。考虑未来升级尝试使用Log4net.下面是我的配置步骤:

    1、网上下载一个log4net配置文件.因为这种没有技术含量需要时间的工作就直接copy就好了.在web目录下建立一个config文件夹

    <?xml version="1.0"?>
    <log4net>
      <root>
        <level value="DEBUG"/>
        <appender-ref ref="SysAppender"/>
        <appender-ref ref="consoleApp"/>
      </root>
      <!--信息日志配置-->
      <appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="Logs\" />
        <param name="AppendToFile" value="true" />
        <param name="MaximumFileSize" value="20MB" />
        <param name="MaxSizeRollBackups" value="100" />
        <param name="StaticLogFileName" value="false" />
        <param name="DatePattern" value="\yyyyMM\yyyyMMdd".log"" />
        <param name="RollingStyle" value="Composite" />
        <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%n
    --------------------------------------------------------------------------------------
    %n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n" />
          <param name="Header" value="
    ======================================================================================
    " />
        </layout>
      </appender>
      <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
        <layout type="log4net.Layout.PatternLayout,log4net">
          <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        </layout>
      </appender>
      <logger name="WebLogger">
        <level value="DEBUG"/>
      </logger>
    
    </log4net>

    2、使用nuget 引入log4net 。我是2.0.8

    3、编写Log4netHelper 

    using log4net;
    using log4net.Repository;
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Reflection;
    using System.Text;
    
    namespace NF.Common.Utility
    {
        /// <summary>
        /// 日志等级
        /// </summary>
        public enum LogLevel
        {
            Error,
            Debug,
            Warning,
            Info
        }
        /// <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="type">类名 方法名</param>
            /// <returns></returns>
            public ILog Init(string type)
            {
                Log = LogManager.GetLogger(Log4netHelper.Repository.Name, type);
                return Log;
            }
        }
        /// <summary>
        /// 日志操作类
        /// </summary>
        public class Log4netHelper
        {
            /// <summary>
            /// log4net 仓储
            /// </summary>
            public static ILoggerRepository Repository { get; set; }
            /// <summary>
            /// 输出Erro日志
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Error(string message)
            {
                StackTrace trace = new StackTrace();
                //获取是哪个类来调用的  
                var className = trace.GetFrame(1).GetMethod().DeclaringType;
                //获取方法名称
                MethodBase method = trace.GetFrame(1).GetMethod();
                var type = "类名:" + className.Namespace + "
    
    	
    
    方法名:" + method.Name;
                WriteLog(LogLevel.Error, message, type);
            }
            /// <summary>
            /// 输出Warning日志
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Warning(string message)
            {
                StackTrace trace = new StackTrace();
                //获取是哪个类来调用的  
                var className = trace.GetFrame(1).GetMethod().DeclaringType;
                //获取方法名称
                MethodBase method = trace.GetFrame(1).GetMethod();
                var type = "类名:" + className.Namespace + "
    
    	
    
    方法名:" + method.Name;
                //记录日志
                WriteLog(LogLevel.Warning, message, type);
            }
            /// <summary>
            /// 输出Info日志
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Info(string message)
            {
                StackTrace trace = new StackTrace();
                //获取是哪个类来调用的  
                var className = trace.GetFrame(1).GetMethod().DeclaringType;
                //获取方法名称
                MethodBase method = trace.GetFrame(1).GetMethod();
                var type = "类名:" + className.Namespace + "
    
    	
    
    方法名:" + method.Name;
                //记录日志
                WriteLog(LogLevel.Info, message, type);
            }
            /// <summary>
            /// 输出Debug日志
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Debug(string message)
            {
                StackTrace trace = new StackTrace();
                //获取是哪个类来调用的  
                var className = trace.GetFrame(1).GetMethod().DeclaringType;
                //获取方法名称
                MethodBase method = trace.GetFrame(1).GetMethod();
                var type = "类名:" + className.Namespace + "
    
    	
    
    方法名:" + method.Name;
                //记录日志
                WriteLog(LogLevel.Debug, message, type);
            }
            /// <summary>
            /// 写日志
            /// </summary>
            /// <param name="logLevel">日志等级</param>
            /// <param name="message">日志信息</param>
            /// <param name="type">类名 方法名</param>
            private static void WriteLog(LogLevel logLevel, string message, string type)
            {
                ILog Log = Singleton.getInstance().Init(type);
                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;
                }
    
            }
        }
    }

    4、修改Startup 在ConfigureServices(IServiceCollection services)方法里加入如下代码:

    Log4netHelper.Repository = LogManager.CreateRepository("NETCoreRepository");
                XmlConfigurator.Configure(Log4netHelper.Repository, new FileInfo(Environment.CurrentDirectory + "/Config/log4net.config"));

    5、测试完成。

  • 相关阅读:
    2019-08-27-Seo如何做好关键词布局
    layui 表格格式化时间
    js 获取ip
    layui 表格删除多行
    Flask JWT Extended 的令牌和刷新令牌
    解决ubuntu下深度音乐和wine程序托盘图标的问题
    ubuntu 阅读caj文件(cajviewer)
    django 结合 xlwt 实现数据导入excel 并下载
    ubuntu 安装Xournal
    pyQt5 计算器
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/14006710.html
Copyright © 2011-2022 走看看