Merge branch 'master' into net6.0
This commit is contained in:
@@ -86,7 +86,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
{
|
||||
throw new CustomException($"添加 {parm.Name} 失败,该用任务存在,不能重复!");
|
||||
}
|
||||
if (string.IsNullOrEmpty(parm.Cron) || !CronExpression.IsValidExpression(parm.Cron))
|
||||
if (!string.IsNullOrEmpty(parm.Cron) && !CronExpression.IsValidExpression(parm.Cron))
|
||||
{
|
||||
throw new CustomException($"cron表达式不正确");
|
||||
}
|
||||
@@ -116,11 +116,11 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
{
|
||||
throw new CustomException($"更新 {parm.Name} 失败,该用任务存在,不能重复!");
|
||||
}
|
||||
if (string.IsNullOrEmpty(parm.Cron))
|
||||
if (string.IsNullOrEmpty(parm.Cron) && parm.TriggerType == 1)
|
||||
{
|
||||
throw new CustomException($"触发器 Corn 模式下,运行时间表达式必须填写");
|
||||
}
|
||||
if (!CronExpression.IsValidExpression(parm.Cron))
|
||||
if (!string.IsNullOrEmpty(parm.Cron) && !CronExpression.IsValidExpression(parm.Cron))
|
||||
{
|
||||
throw new CustomException($"cron表达式不正确");
|
||||
}
|
||||
@@ -150,7 +150,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
if (response > 0)
|
||||
{
|
||||
//先暂停原先的任务
|
||||
var respon = await _schedulerServer.UpdateTaskScheduleAsync(tasksQz, tasksQz.JobGroup);
|
||||
var respon = await _schedulerServer.UpdateTaskScheduleAsync(tasksQz);
|
||||
}
|
||||
|
||||
return SUCCESS(response);
|
||||
@@ -264,11 +264,6 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
var tasksQz = _tasksQzService.GetFirst(m => m.ID == id);
|
||||
var taskResult = await _schedulerServer.RunTaskScheduleAsync(tasksQz);
|
||||
|
||||
if (taskResult.Code == 200)
|
||||
{
|
||||
//_tasksQzService.Update(tasksQz);
|
||||
}
|
||||
|
||||
return ToResponse(taskResult);
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
string connStr = Configuration.GetConnectionString(OptionsSetting.ConnAdmin);
|
||||
string connStrBus = Configuration.GetConnectionString(OptionsSetting.ConnBus);
|
||||
string dbKey = Configuration[OptionsSetting.DbKey];
|
||||
|
||||
int dbType = Convert.ToInt32(Configuration[OptionsSetting.ConnDbType]);
|
||||
int dbType_bus = Convert.ToInt32(Configuration[OptionsSetting.ConnBusDbType]);
|
||||
|
||||
@@ -45,37 +45,44 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
IsAutoCloseConnection = true
|
||||
}
|
||||
});
|
||||
//每次Sql执行前事件
|
||||
DbScoped.SugarScope.GetConnection(0).Aop.OnLogExecuting = (sql, pars) =>
|
||||
SugarIocServices.ConfigurationSugar(db =>
|
||||
{
|
||||
var param = DbScoped.SugarScope.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value));
|
||||
#region db0
|
||||
db.GetConnection(0).Aop.OnLogExecuting = (sql, pars) =>
|
||||
{
|
||||
var param = DbScoped.SugarScope.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value));
|
||||
|
||||
FilterData();
|
||||
FilterData();
|
||||
|
||||
logger.Info($"{sql},{param}");
|
||||
};
|
||||
//出错打印日志
|
||||
DbScoped.SugarScope.GetConnection(0).Aop.OnError = (e) =>
|
||||
{
|
||||
logger.Error(e, $"执行SQL出错:{e.Message}");
|
||||
};
|
||||
//SQL执行完
|
||||
DbScoped.SugarScope.GetConnection(0).Aop.OnLogExecuted = (sql, pars) =>
|
||||
{
|
||||
//执行完了可以输出SQL执行时间 (OnLogExecutedDelegate)
|
||||
};
|
||||
//Db1
|
||||
DbScoped.SugarScope.GetConnection(1).Aop.OnLogExecuting = (sql, pars) =>
|
||||
{
|
||||
var param = DbScoped.SugarScope.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value));
|
||||
logger.Info($"{sql},{param}");
|
||||
};
|
||||
|
||||
logger.Info($"Sql语句:{sql}, {param}");
|
||||
};
|
||||
//Db1错误日志
|
||||
DbScoped.SugarScope.GetConnection(1).Aop.OnError = (e) =>
|
||||
{
|
||||
logger.Error($"执行Sql语句失败:{e.Sql},原因:{e.Message}");
|
||||
};
|
||||
db.GetConnection(0).Aop.OnError = (e) =>
|
||||
{
|
||||
logger.Error(e, $"执行SQL出错:{e.Message}");
|
||||
};
|
||||
//SQL执行完
|
||||
db.GetConnection(0).Aop.OnLogExecuted = (sql, pars) =>
|
||||
{
|
||||
//执行完了可以输出SQL执行时间 (OnLogExecutedDelegate)
|
||||
};
|
||||
#endregion
|
||||
|
||||
#region db1
|
||||
//Db1
|
||||
db.GetConnection(1).Aop.OnLogExecuting = (sql, pars) =>
|
||||
{
|
||||
var param = DbScoped.SugarScope.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value));
|
||||
|
||||
logger.Info($"Sql语句:{sql}, {param}");
|
||||
};
|
||||
//Db1错误日志
|
||||
db.GetConnection(1).Aop.OnError = (e) =>
|
||||
{
|
||||
logger.Error($"执行Sql语句失败:{e.Sql},原因:{e.Message}");
|
||||
};
|
||||
#endregion
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Quartz.Spi;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using ZR.Service.System.IService;
|
||||
using ZR.Tasks;
|
||||
|
||||
@@ -20,7 +21,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
//添加Quartz服务
|
||||
services.AddSingleton<IJobFactory, JobFactory>();
|
||||
//添加我们的服务
|
||||
services.AddTransient<Job_SyncTest>();
|
||||
//services.AddTransient<Job_SyncTest>();
|
||||
|
||||
services.AddTransient<ITaskSchedulerServer, TaskSchedulerServer>();
|
||||
}
|
||||
@@ -41,7 +42,11 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
//程序启动后注册所有定时任务
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
_schedulerServer.AddTaskScheduleAsync(task);
|
||||
var result = _schedulerServer.AddTaskScheduleAsync(task);
|
||||
if (result.Result.Code == 200)
|
||||
{
|
||||
Console.WriteLine($"注册任务[{task.Name}]ID:{task.ID}成功");
|
||||
}
|
||||
}
|
||||
|
||||
return app;
|
||||
|
||||
@@ -6,64 +6,68 @@
|
||||
internalLogLevel="Info"
|
||||
internalLogFile="nlog-internal.log">
|
||||
|
||||
<!--Nlog 文档参考地址:https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-2-->
|
||||
<!--internalLogLevel Nlog内部日志记录为Off关闭。除非纠错,不可以设为Trace否则速度很慢,起码Debug以上-->
|
||||
<!--自定义变量-->
|
||||
<variable name="logDir" value="${basedir}/nlogs/${date:format=yyyyMMdd}/${level}.log"/>
|
||||
<!--Nlog 文档参考地址:https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-2-->
|
||||
<!--internalLogLevel Nlog内部日志记录为Off关闭。除非纠错,不可以设为Trace否则速度很慢,起码Debug以上-->
|
||||
<!--自定义变量-->
|
||||
<variable name="logDir" value="${basedir}/nlogs/${date:format=yyyyMMdd}/${level}.log"/>
|
||||
|
||||
<!-- Load the ASP.NET Core plugin,enable asp.net core layout renderers-->
|
||||
<extensions>
|
||||
<add assembly="NLog.Web.AspNetCore" />
|
||||
</extensions>
|
||||
<!-- Load the ASP.NET Core plugin,enable asp.net core layout renderers-->
|
||||
<extensions>
|
||||
<add assembly="NLog.Web.AspNetCore" />
|
||||
</extensions>
|
||||
|
||||
<!--define various log targets-->
|
||||
<targets async="true">
|
||||
<!--写入文件-->
|
||||
<!--滚动日志文件上限数,滚动日志文件数达到上限新的文件内容会覆盖旧文件内容 -->
|
||||
<!--archiveAboveSize每个日志文件大小的最大值(单位:字节),主日志文件超过大小超过该值时会将文件内容写入滚动日志并清空主日志文件内容-->
|
||||
<!--${basedir}表示当前应用程序域所在的根目录-->
|
||||
<target name="allfile" xsi:type="File"
|
||||
fileName="${basedir}/adminlogs/all.txt"
|
||||
archiveFileName="${basedir}/adminlogs/all.{###}.txt"
|
||||
archiveEvery="Day"
|
||||
archiveNumbering="DateAndSequence"
|
||||
archiveAboveSize="20000000"
|
||||
maxArchiveFiles="30"
|
||||
keepFileOpen="true"
|
||||
layout="${longdate} | ${event-properties:item=EventId_Id} | ${uppercase:${level}} | ${logger} | ${aspnet-request-iP:CheckForwardedForHeader=true} | ${event-properties:item=user} | ${aspnet-request-url} | ${message} | ${event-properties:item=requestParam} | ${event-properties:item=jsonResult} | ${onexception:${exception:format=tostring}"/>
|
||||
<!--define various log targets-->
|
||||
<targets async="true">
|
||||
<!--写入文件-->
|
||||
<!--滚动日志文件上限数,滚动日志文件数达到上限新的文件内容会覆盖旧文件内容 -->
|
||||
<!--archiveAboveSize每个日志文件大小的最大值(单位:字节),主日志文件超过大小超过该值时会将文件内容写入滚动日志并清空主日志文件内容-->
|
||||
<!--${basedir}表示当前应用程序域所在的根目录-->
|
||||
<target name="allfile" xsi:type="File"
|
||||
fileName="${basedir}/adminlogs/all.txt"
|
||||
archiveFileName="${basedir}/adminlogs/all.{###}.txt"
|
||||
archiveEvery="Day"
|
||||
archiveNumbering="DateAndSequence"
|
||||
archiveAboveSize="20000000"
|
||||
maxArchiveFiles="30"
|
||||
keepFileOpen="true"
|
||||
layout="${longdate} | ${event-properties:item=EventId_Id} | ${uppercase:${level}} | ${logger} | ${aspnet-request-iP:CheckForwardedForHeader=true} | ${event-properties:item=user} | ${aspnet-request-url} | ${message} | ${event-properties:item=requestParam} | ${event-properties:item=jsonResult} | ${onexception:${exception:format=tostring}"/>
|
||||
|
||||
<!--SQL-->
|
||||
<target name="sqlfile" xsi:type="File"
|
||||
fileName="${basedir}/adminlogs/all-sql.txt"
|
||||
archiveFileName="${basedir}/adminlogs/all.sql{###}.txt"
|
||||
archiveEvery="Day"
|
||||
archiveNumbering="DateAndSequence"
|
||||
archiveAboveSize="20000000"
|
||||
maxArchiveFiles="30"
|
||||
keepFileOpen="false"
|
||||
layout="===========================================${newline} ${longdate} - ${aspnet-request-iP} - ${aspnet-request-headers:HeaderNames=userid} - ${aspnet-request-url} ${newline} ${message}"/>
|
||||
<!--SQL-->
|
||||
<target name="sqlfile" xsi:type="File"
|
||||
fileName="${basedir}/adminlogs/all-sql.txt"
|
||||
archiveFileName="${basedir}/adminlogs/all.sql{###}.txt"
|
||||
archiveEvery="Day"
|
||||
archiveNumbering="DateAndSequence"
|
||||
archiveAboveSize="20000000"
|
||||
maxArchiveFiles="30"
|
||||
keepFileOpen="false"
|
||||
layout="===========================================${newline} ${longdate} - ${aspnet-request-iP} - ${aspnet-request-headers:HeaderNames=userid} - ${aspnet-request-url} ${newline} ${message}"/>
|
||||
|
||||
<!--写入控制台-->
|
||||
<target name="console" xsi:type="ColoredConsole"
|
||||
layout="${date:format=MM-dd HH\:mm\:ss} | ${uppercase:${level}} | ${logger} | ${aspnet-request-iP} | ${aspnet-request-url} | ${message}"/>
|
||||
<!--写入控制台-->
|
||||
<target name="console" xsi:type="ColoredConsole"
|
||||
layout="${date:format=MM-dd HH\:mm\:ss} | ${uppercase:${level}} | ${logger} | ${aspnet-request-iP} | ${aspnet-request-url} | ${message}"/>
|
||||
|
||||
<!--写入黑洞-->
|
||||
<target name="blackhole" xsi:type="Null" />
|
||||
</targets>
|
||||
<target name="consoleSql" xsi:type="ColoredConsole"
|
||||
layout="${date:format=MM-dd HH\:mm\:ss} | ${aspnet-request-url} ${newline} ${message}"/>
|
||||
|
||||
<rules>
|
||||
<!-- 除非调试需要,把 .NET Core 程序集的 Debug 输出都屏蔽 Trace -> Debug-> Info ->Warn-> Error-> Critical-->
|
||||
<!--跳过所有级别的Microsoft组件的日志记录-->
|
||||
<!--<logger name="Microsoft.*" writeTo="blackhole" final="true" />-->
|
||||
<!-- 除非调试需要,把系统的 Debug 输出都屏蔽 -->
|
||||
<!--<logger name="System.*" writeTo="blackhole" final="true" />-->
|
||||
<!-- Quartz -->
|
||||
<logger name="Quartz*" minlevel="Trace" maxlevel="Info" final="true" />
|
||||
<logger name="*" minLevel="Debug" writeTo="console"/>
|
||||
<logger name="ZR.Admin.WebApi.Extensions.DbExtension" final="true" writeTo="sqlfile"/>
|
||||
<!--写入黑洞-->
|
||||
<target name="blackhole" xsi:type="Null" />
|
||||
</targets>
|
||||
|
||||
<logger name="*" minLevel="Trace" writeTo="allfile" />
|
||||
<!--Skip non-critical Microsoft logs and so log only own logs-->
|
||||
<logger name="Microsoft.*,Quartz.Core.QuartzSchedulerThread" maxlevel="Info" final="true" />
|
||||
</rules>
|
||||
<rules>
|
||||
<!-- 除非调试需要,把 .NET Core 程序集的 Debug 输出都屏蔽 Trace -> Debug-> Info ->Warn-> Error-> Critical-->
|
||||
<!--跳过所有级别的Microsoft组件的日志记录-->
|
||||
<!--<logger name="Microsoft.*" writeTo="blackhole" final="true" />-->
|
||||
<!-- 除非调试需要,把系统的 Debug 输出都屏蔽 -->
|
||||
<!--<logger name="System.*" writeTo="blackhole" final="true" />-->
|
||||
<!-- Quartz -->
|
||||
<logger name="Quartz*" minlevel="Trace" maxlevel="Info" final="true" />
|
||||
<logger name="ZR.Admin.WebApi.Extensions.DbExtension" final="true" writeTo="consoleSql"/>
|
||||
<logger name="*" minLevel="Debug" writeTo="console"/>
|
||||
<logger name="ZR.Admin.WebApi.Extensions.DbExtension" final="true" writeTo="sqlfile"/>
|
||||
|
||||
<logger name="*" minLevel="Trace" writeTo="allfile" />
|
||||
<!--Skip non-critical Microsoft logs and so log only own logs-->
|
||||
<logger name="Microsoft.*,Quartz.Core.QuartzSchedulerThread" maxlevel="Info" final="true" />
|
||||
</rules>
|
||||
</nlog>
|
||||
|
||||
Reference in New Issue
Block a user