自动清理log

master
xiaochanghai 5 months ago
parent 9b9d4f5690
commit c484113088
  1. 2
      Tiobon.Core.IServices/ICommonServices.cs
  2. 29
      Tiobon.Core.Services/CommonServices.cs
  3. 35
      Tiobon.Core.Tasks/QuartzNet/Jobs/Job_AutoClearLog_Quartz.cs

@ -37,4 +37,6 @@ public interface ICommonServices : IBaseServices<RootEntityTkey<int>>
Task<Dictionary<String, Object>> getPostCommonAES(JObject param); Task<Dictionary<String, Object>> getPostCommonAES(JObject param);
Task<Dictionary<string, object>> getPostCommon(JObject param); Task<Dictionary<string, object>> getPostCommon(JObject param);
Task AutoClearLog();
} }

@ -4252,4 +4252,33 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
return await QueryLangValue(key, App.User.GetLangId(), defaultValue); return await QueryLangValue(key, App.User.GetLangId(), defaultValue);
} }
#endregion #endregion
#region 自动清理log
public async Task AutoClearLog()
{
var list = new List<string>
{
"GlobalErrorLog",
"GlobalInformationLog",
"GlobalWarningLog"
};
var dt = DateTime.Now.AddMonths(-3);
for (int i = 0; i < list.Count; i++)
{
var tableName = $"{list[i]}_{dt.Year}";
if (dt.Month < 10)
tableName += $"0{dt.Month}01";
else
tableName += $"{dt.Month}01";
var sql = @$"IF EXISTS
(SELECT 1
FROM sysobjects
WHERE id = object_id ('{tableName}') AND type = 'U')
DROP TABLE {tableName}";
await Db.Ado.ExecuteCommandAsync(sql);
}
}
#endregion
} }

@ -0,0 +1,35 @@
using Microsoft.Extensions.Logging;
using Quartz;
using Tiobon.Core.IServices;
/// <summary>
/// 这里要注意下,命名空间和程序集是一样的,不然反射不到(任务类要去JobSetup添加注入)
/// </summary>
namespace Tiobon.Core.Tasks;
public class Job_AutoClearLog_Quartz : JobBase, IJob
{
private readonly ILogger<Job_URL_Quartz> _logger;
private readonly ICommonServices _commonServices;
public Job_AutoClearLog_Quartz(ILogger<Job_URL_Quartz> logger, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices, ICommonServices commonServices)
: base(tasksQzServices, tasksLogServices)
{
_tasksQzServices = tasksQzServices;
_logger = logger;
_commonServices = commonServices;
}
public async Task Execute(IJobExecutionContext context)
{
// 可以直接获取 JobDetail 的值
var jobKey = context.JobDetail.Key;
var jobId = jobKey.Name;
var executeLog = await ExecuteJob(context, async () => await Run(context, jobId.ObjToInt()));
}
public async Task Run(IJobExecutionContext context, int jobid)
{
if (jobid > 0)
await _commonServices.AutoClearLog();
}
}
Loading…
Cancel
Save