CrazyIter_Bin 2 年之前
父節點
當前提交
b12f342277

+ 5 - 6
TEAMModelOS/Filter/BlobLoggerProvider.cs

@@ -8,6 +8,7 @@ using System;
 using TEAMModelOS.SDK.DI;
 using Azure;
 using Azure.Storage.Blobs.Specialized;
+using System.Threading.Tasks;
 
 namespace TEAMModelOS.Filter
 {
@@ -54,27 +55,25 @@ namespace TEAMModelOS.Filter
             return true;
         }
 
-        public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
+        public async void Log<TState> ( LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
         {
             if (formatter == null)
             {
                 throw new ArgumentNullException(nameof(formatter));
             }
-
             var message = formatter(state, exception);
             var appendBlob = _containerClient.GetAppendBlobClient($"{_categoryName}/{DateTimeOffset.UtcNow:yyyy-MM-dd}.log");
             // var blobClient = _containerClient.GetBlobClient($"{_categoryName}/{DateTimeOffset.UtcNow:yyyy-MM-dd}.log");
             if (!appendBlob.Exists())
             {
-                appendBlob.Create();
+               await appendBlob.CreateAsync();
                 using var stream = new MemoryStream(Encoding.UTF8.GetBytes(message));
-                appendBlob.AppendBlock(stream);
+               await appendBlob.AppendBlockAsync(stream);
             }
             else {
                 using var stream = new MemoryStream(Encoding.UTF8.GetBytes($"\n,{message}"));
-                appendBlob.AppendBlock(stream);
+             await   appendBlob.AppendBlockAsync(stream);
             }
-            
         }
     }
 }

+ 4 - 4
TEAMModelOS/Filter/RequestAuditFilter.cs

@@ -19,10 +19,9 @@ namespace TEAMModelOS.Filter
     {
         private readonly ILogger _logger;
       
-        public RequestAuditFilter(ILogger<RequestAuditFilter> logger)
+        public RequestAuditFilter(ILoggerFactory loggerFactory)
         {
-            
-            _logger = logger;
+            _logger = loggerFactory.CreateLogger<RequestAuditFilter>();
         }
         public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
         {
@@ -76,7 +75,8 @@ namespace TEAMModelOS.Filter
             // 获取调用堆栈信息,提供更加简单明了的调用和异常堆栈
            // var stackTrace = EnhancedStackTrace.Current();
            // string region = await _searcher.SearchIpAsync(remoteIPv4);
-            _logger.LogInformation(new{ip=remoteIPv4,time=requestedTime,path =$"{httpRequest.PathBase}{httpRequest.Path}",host= httpRequest.Host, param=parameters,id ,name ,school,succeed =isRequestSucceed }.ToJsonString());
+           //同一个账号,同一IP,同一接口,UA标识(UA标识随意切换则表示可能会存在DDOS),时间段
+            _logger.LogInformation(new{ ua=httpContext.GetUserAgent(), ip=remoteIPv4,time=requestedTime,path =$"{httpRequest.PathBase}{httpRequest.Path}",host= $"{httpRequest.Host}", param=parameters,id ,name ,school,succeed =isRequestSucceed }.ToJsonString());
         }
     }
 }

+ 9 - 0
TEAMModelOS/Program.cs

@@ -1,6 +1,7 @@
 
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
 using System;
 using TEAMModelOS.SDK;
 
@@ -16,6 +17,14 @@ namespace TEAMModelOS
 
         public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
+            //.ConfigureLogging(logging => {
+            //    logging.ClearProviders();
+            //    logging.AddConsole();
+            //    logging.AddDebug();
+            //    logging.AddEventLog();
+            //    logging.AddAzureWebAppDiagnostics();
+            //    logging.AddProvider(new BlobLoggerProvider());
+            //})
                .ConfigureWebHostDefaults(webBuilder =>
                {
 #if DEBUG 

+ 2 - 0
TEAMModelOS/Startup.cs

@@ -174,6 +174,7 @@ namespace TEAMModelOS
             //services.AddHostedService<>
             services.AddSingleton<ILoggerProvider, BlobLoggerProvider>();
             services.AddMvcFilter<RequestAuditFilter>();
+            
         }
 
         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -213,6 +214,7 @@ namespace TEAMModelOS
             //调用放在之后、UseRouting 和 UseCors,但在 UseEndpoints之前
             app.UseAuthentication();
             app.UseAuthorization();
+            
             app.UseEndpoints(endpoints =>
             {
                 endpoints.MapControllers();