XiaoQi.Study 项目(三)

一、配置跨域

  1、首先注册跨域要求 ,(可访问的IP、端口)

          //注册跨域
            services.AddCors(options =>
            {
                options.AddPolicy("XiaoQiAllowOrigins",
                builder =>
                {
                    builder.WithOrigins("http://localhost:8080")
                            .AllowAnyHeader()
                            .AllowAnyMethod();
                });
            });

  2、启用注册好的跨域

app.UseCors("MyAllowOrigins");

二、控制器全局异常过滤

  1、在Filter 文件夹下 创建GlobalExceptionFilter.cs。该类必须继承“IExceptionFilter”

public class GlobalExceptionFilter : IExceptionFilter
    {
        private readonly IWebHostEnvironment _env;
        private readonly ILogger<GlobalExceptionFilter> _logger;

        public GlobalExceptionFilter(IWebHostEnvironment env, ILogger<GlobalExceptionFilter> logger)
        {
            _env = env;
            _logger = logger;
        }
        public void OnException(ExceptionContext context)
        {
            string msg = string.Empty;
            if (_env.IsDevelopment())
            {
                msg = context.Exception.StackTrace;
                LogHelper.Error(msg);
            }
            else
            {
                msg = context.Exception.Message;//错误信息
  
          LogHelper.Error(msg);
            }
            throw new NotImplementedException();
        }
    }

  2、在注册控制器的地方,为控制器添加全局过滤

     //注册Controller
            services.AddControllers(o=> {
                o.Filters.Add(typeof(GlobalExceptionFilter));//控制器异常监控
            })

三、log4.net 简单使用

  1、安装log4.net 包

  2、在common 文件下创建LogHelper

   public class LogHelper
    {
        private static ILoggerRepository repository { get; set; }
        private static ILog _log;
        private static ILog log
        {
            get
            {
                if (_log == null)
                {
                    Configure();
                }
                return _log;
            }
        }

        public static void Configure(string repositoryName = "NETCoreRepository", string configFile = "log4net.config")
        {
            repository = LogManager.CreateRepository(repositoryName);
            XmlConfigurator.Configure(repository, new FileInfo(configFile));
            _log = LogManager.GetLogger(repositoryName, "");
        }

        public static void Info(string msg)
        {
            log.Info(msg);
        }

        public static void Warn(string msg)
        {
            log.Warn(msg);
        }

        public static void Error(string msg)
        {
            log.Error(msg);
        }
    }

  3、添加log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- This section contains the log4net configuration settings -->
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="LogFile/" />
      <appendToFile value="true" />
      
      <rollingStyle value="Date" />
      
      <staticLogFileName value="false" />
      
      <datePattern value="yyyyMMdd'.log'" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>

  </log4net>
</configuration>

  4、在startup文件中启用LogHelper的配置方法,为其读取配置

      public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

            LogHelper.Configure(); //使用前先配置
        }

  5、在需要的地方使用,如控制器全局异常过滤中的使用

  

猜你喜欢

转载自www.cnblogs.com/xiaoqiyaozou/p/12527861.html