.net core 3.1 扩展 AOP日志

.net core 3.1 扩展 AOP日志

交流QQ群:555913397
有什么问题可以加群大家一起交流

上次扩展了Autofac的AOP,发现在AOP扩展里面无法注入日志组件.所以只能手动写个静态日志类.废话不多说,下面上代码.

1.创建日志类

1.1 需要在Nuget添加Nlog
using System;
using NLog;

namespace CoreMvc.Utinity.Helper
{
    public class LoggerHelper
    {
        /// 
        /// Fatal日志
        /// 
        /// 日志信息
        /// 写日志方法类别
        /// 参数
        public static void LogFatal(string message, string methodType = "", params object[] args)
        {
            LogFatal(message, null, methodType, args);
        }

        /// 
        /// Critical日志
        /// 
        /// 日志信息
        /// 报错信息
        /// 写日志方法类别
        /// 参数
        public static void LogFatal(string message, Exception exception, string methodType = "", params object[] args)
        {
            LogManager.GetLogger(methodType).Fatal(exception, message, args);
        }

        /// 
        /// Debug日志
        /// 
        /// 日志信息
        /// 写日志方法类别
        /// 参数
        public static void LogDebug(string message, string methodType = "", params object[] args)
        {
            LogDebug(message, null, methodType, args);
        }

        /// 
        /// Debug日志
        /// 
        /// 日志信息
        /// 报错信息
        /// 写日志方法类别
        /// 参数
        public static void LogDebug(string message, Exception exception, string methodType = "", params object[] args)
        {
            LogManager.GetLogger(methodType).Debug(exception, message, args);
        }

        /// 
        /// Error日志
        /// 
        /// 日志信息
        /// 写日志方法类别
        /// 参数
        public static void LogError(string message, string methodType = "", params object[] args)
        {
            LogError(message, null, methodType, args);
        }

        /// 
        /// Error日志
        /// 
        /// 日志信息
        /// 报错信息
        /// 写日志方法类别
        /// 参数
        public static void LogError(string message, Exception exception, string methodType = "", params object[] args)
        {
            LogManager.GetLogger(methodType).Error(exception, message, args);
        }

        /// 
        /// Information日志
        /// 
        /// 日志信息
        /// 写日志方法类别
        /// 参数
        public static void LogInformation(string message, string methodType = "", params object[] args)
        {
            LogInformation(message, null, methodType, args);
        }

        /// 
        /// Information日志
        /// 
        /// 日志信息
        /// 报错信息
        /// 写日志方法类别
        /// 参数
        public static void LogInformation(string message, Exception exception, string methodType = "", params object[] args)
        {
            LogManager.GetLogger(methodType).Info(exception, message, args);
        }

        /// 
        /// Trace日志
        /// 
        /// 日志信息
        /// 写日志方法类别
        /// 参数
        public static void LogTrace(string message, string methodType = "", params object[] args)
        {
            LogTrace(message, null, methodType, args);
        }

        /// 
        /// Trace日志
        /// 
        /// 日志信息
        /// 报错信息
        /// 写日志方法类别
        /// 参数
        public static void LogTrace(string message, Exception exception, string methodType = "", params object[] args)
        {
            LogManager.GetLogger(methodType).Trace(exception, message, args);
        }

        /// 
        /// Warning日志
        /// 
        /// 日志信息
        /// 写日志方法类别
        /// 参数
        public static void LogWarning(string message, string methodType = "", params object[] args)
        {
            LogWarning(message, null, methodType, args);
        }

        /// 
        /// Warning日志
        /// 
        /// 日志信息
        /// 报错信息
        /// 写日志方法类别
        /// 参数
        public static void LogWarning(string message, Exception exception, string methodType = "", params object[] args)
        {
            LogManager.GetLogger(methodType).Warn(exception, message, args);
        }
    }
}

2.测试调用日志

using Castle.DynamicProxy;
using CoreMvc.Utinity.Helper;

namespace CoreMvc.Utinity.IOC.AopExtension
{
    public class AutofacAopExtension : IInterceptor
    {
        public void Intercept(IInvocation invocation)
        {
            LoggerHelper.LogDebug("执行前", $"{invocation.TargetType}.{invocation.Method.Name}");
            invocation.Proceed();
            LoggerHelper.LogDebug("执行后", $"{invocation.TargetType}.{invocation.Method.Name}");
        }
    }
}
 

3.日志打印结果

2020-03-10 09:37:06.5125||DEBUG|CoreMvc.Program|init main |url: |action: 
2020-03-10 09:37:09.1012||DEBUG|CoreMvc.Service.PeopleAppService.Show|执行前 |url: http://localhost/|action: Index
2020-03-10 09:37:09.1098||DEBUG|CoreMvc.Service.PeopleAppService|People |url: http://localhost/|action: Index
2020-03-10 09:37:09.1098||DEBUG|CoreMvc.Service.PeopleAppService.Show|执行后 |url: http://localhost/|action: Index
2020-03-10 09:37:09.1098||DEBUG|CoreMvc.Service.CompanyAppService.Show|执行前 |url: http://localhost/|action: Index
2020-03-10 09:37:09.1098||DEBUG|CoreMvc.Service.CompanyAppService.Show|执行后 |url: http://localhost/|action: Index

4.autofac\aop\nlog配置教程

.net core 3.1 添加 Nlog日志
.net core 3.1 扩展 Autofac AOP
.net core 3.1添加Autofac容器详解

你可能感兴趣的:(Asp.net,Core)