From fa6ce50e4258904dabc29657978df91e0269ad1b Mon Sep 17 00:00:00 2001
From: anjoy8 <3143422472@qq.com>
Date: Fri, 14 May 2021 19:25:10 +0800
Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9Arename=20log?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Blog.Core.Common/Helper/FileHelper.cs | 18 ++++++++++++++++++
Blog.Core.Extensions/Middlewares/IPLogMildd.cs | 12 +++++++++---
.../Middlewares/RecordAccessLogsMildd.cs | 10 ++++++++--
3 files changed, 35 insertions(+), 5 deletions(-)
diff --git a/Blog.Core.Common/Helper/FileHelper.cs b/Blog.Core.Common/Helper/FileHelper.cs
index f2d717a..c07c86e 100644
--- a/Blog.Core.Common/Helper/FileHelper.cs
+++ b/Blog.Core.Common/Helper/FileHelper.cs
@@ -83,6 +83,24 @@ namespace Blog.Core.Common.Helper
return Path.Combine(folderPath, $@"{prefix}_{DateTime.Now.DateToTimeStamp()}.log");
}
+ public static string GetAvailableFileNameWithPrefixOrderSize(string _contentRoot, string prefix, int size = 1 * 1024 * 1024, string ext = ".log")
+ {
+ var folderPath = Path.Combine(_contentRoot, "Log");
+ if (!Directory.Exists(folderPath))
+ {
+ Directory.CreateDirectory(folderPath);
+ }
+
+ var allFiles = new DirectoryInfo(folderPath);
+ var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(prefix.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
+
+ if (selectFiles.Count > 0)
+ {
+ return selectFiles.FirstOrDefault().Name.Replace(".log","");
+ }
+
+ return $@"{prefix}_{DateTime.Now.DateToTimeStamp()}";
+ }
#endregion
#region 写文件
diff --git a/Blog.Core.Extensions/Middlewares/IPLogMildd.cs b/Blog.Core.Extensions/Middlewares/IPLogMildd.cs
index b8dadba..aa5c426 100644
--- a/Blog.Core.Extensions/Middlewares/IPLogMildd.cs
+++ b/Blog.Core.Extensions/Middlewares/IPLogMildd.cs
@@ -1,5 +1,7 @@
using Blog.Core.Common;
+using Blog.Core.Common.Helper;
using Blog.Core.Common.LogHelper;
+using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System;
@@ -17,13 +19,16 @@ namespace Blog.Core.Middlewares
///
///
private readonly RequestDelegate _next;
+ private readonly IWebHostEnvironment _environment;
+
///
///
///
///
- public IPLogMildd(RequestDelegate next)
+ public IPLogMildd(RequestDelegate next, IWebHostEnvironment environment)
{
_next = next;
+ _environment = environment;
}
public async Task InvokeAsync(HttpContext context)
@@ -53,11 +58,12 @@ namespace Blog.Core.Middlewares
// 自定义log输出
//Parallel.For(0, 1, e =>
//{
- // LogLock.OutSql2Log("RequestIpInfoLog", new string[] { requestInfo + "," }, false);
+ LogLock.OutSql2Log("RequestIpInfoLog", new string[] { requestInfo + "," }, false);
//});
// 这种方案也行,用的是Serilog
- SerilogServer.WriteLog("RequestIpInfoLog", new string[] { requestInfo + "," }, false);
+ var logFileName = FileHelper.GetAvailableFileNameWithPrefixOrderSize(_environment.ContentRootPath, "RequestIpInfoLog");
+ SerilogServer.WriteLog(logFileName, new string[] { requestInfo + "," }, false);
request.Body.Position = 0;
}
diff --git a/Blog.Core.Extensions/Middlewares/RecordAccessLogsMildd.cs b/Blog.Core.Extensions/Middlewares/RecordAccessLogsMildd.cs
index 7180b1a..4174a45 100644
--- a/Blog.Core.Extensions/Middlewares/RecordAccessLogsMildd.cs
+++ b/Blog.Core.Extensions/Middlewares/RecordAccessLogsMildd.cs
@@ -1,6 +1,8 @@
using Blog.Core.Common;
+using Blog.Core.Common.Helper;
using Blog.Core.Common.HttpContextUser;
using Blog.Core.Common.LogHelper;
+using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
@@ -25,17 +27,19 @@ namespace Blog.Core.Middlewares
private readonly RequestDelegate _next;
private readonly IUser _user;
private readonly ILogger _logger;
+ private readonly IWebHostEnvironment _environment;
private Stopwatch _stopwatch;
///
///
///
///
- public RecordAccessLogsMildd(RequestDelegate next, IUser user, ILogger logger)
+ public RecordAccessLogsMildd(RequestDelegate next, IUser user, ILogger logger, IWebHostEnvironment environment)
{
_next = next;
_user = user;
_logger = logger;
+ _environment = environment;
_stopwatch = new Stopwatch();
}
@@ -107,7 +111,9 @@ namespace Blog.Core.Middlewares
// LogLock.OutSql2Log("RecordAccessLogs", new string[] { requestInfo + "," }, false);
//});
- SerilogServer.WriteLog("RecordAccessLogs", new string[] { requestInfo + "," }, false);
+ var logFileName = FileHelper.GetAvailableFileNameWithPrefixOrderSize(_environment.ContentRootPath, "RecordAccessLogs");
+ SerilogServer.WriteLog(logFileName, new string[] { requestInfo + "," }, false);
+
return Task.CompletedTask;
});