using Quartz.Logging; namespace MachineJob { /// /// 控制台日志提供者 /// 为 Quartz 调度器提供简单的控制台日志输出 /// public class ConsoleLogProvider : ILogProvider { // 配置根对象 private readonly IConfigurationRoot configuration = new ConfigurationBuilder() // 设置配置文件的基础路径 .SetBasePath(Directory.GetCurrentDirectory()) // 添加 appsettings.json 配置文件 .AddJsonFile("appsettings.json") // 根据环境变量添加对应的配置文件 .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT") ?? "Production"}.json", true) .Build(); /// /// 获取日志记录器 /// /// 日志记录器名称 /// 日志记录器委托 public Logger GetLogger(string name) { return (level, func, exception, parameters) => { // 如果日志级别大于等于配置的级别且有消息函数 if (level >= configuration.GetSection("Quartz").GetValue("LogLevel") && func != null) { // 输出到控制台,格式:[时间] [级别] 消息 Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] [" + level + "] " + func(), parameters); } return true; }; } /// /// 打开嵌套上下文(未实现) /// public IDisposable OpenNestedContext(string message) { throw new NotImplementedException(); } /// /// 打开映射上下文(未实现) /// public IDisposable OpenMappedContext(string key, object value, bool destructure = false) { throw new NotImplementedException(); } } }