using System.ComponentModel.DataAnnotations; using System.Reflection; using JNPF; using JNPF.Logging; using Spire.Xls; using SqlSugar; namespace Microsoft.Extensions.DependencyInjection; /// /// SqlSugar配置拓展. /// public static class ConfigureLoggingExtensions { const string DATEFORMAT = "HH:mm:ss.fff"; public static IServiceCollection ConfigureLogging(this IServiceCollection services) { services.AddConsoleFormatter(option => { option.MessageFormat = LoggerConsoleFormat; }).AddFileLogging(options => { options.MessageFormat = LoggerFileFormat; options.FileNameRule = fileName => string.Format(fileName, DateTime.Now); // 每天创建一个文件 options.HandleWriteError = (writeError) => // 写入失败时启用备用文件 { writeError.UseRollbackFileName(Path.GetFileNameWithoutExtension(writeError.CurrentFileName) + "-oops" + Path.GetExtension(writeError.CurrentFileName)); }; }); // 日志监听 // services.AddMonitorLogging(options => //{ // options.IgnorePropertyNames = new[] { "Byte" }; // options.IgnorePropertyTypes = new[] { typeof(byte[]) }; //}); return services; } private static string LoggerLevelName(LogLevel level) { return level switch { LogLevel.Trace => "Trace", LogLevel.Debug => "Debug", LogLevel.Information => "Info", LogLevel.Warning => "Warn", LogLevel.Error => "Error", LogLevel.Critical => "Crit", _ => "None" }; } private static string LoggerFileFormat(LogMessage msg) { var txt = $"{LoggerLevelName(msg.LogLevel)} {msg.LogDateTime.ToString(DATEFORMAT)} {msg.ThreadId}# {msg.Message}"; if (msg.Exception != null) { //var EXCEPTION_SEPARATOR_WITHCOLOR = AppendWithColor(default, EXCEPTION_SEPARATOR, logLevelColors).ToString(); txt += $"{Environment.NewLine}{msg.Exception}"; } return txt; } private static string LoggerConsoleFormat(LogMessage msg) { var fclr = msg.LogLevel switch { LogLevel.Warning => "\u001b[1m\u001b[33m", LogLevel.Error => "\u001b[1m\u001b[31m", _ => "\u001b[39m\u001b[22m" }; var txt = $"{fclr}{LoggerLevelName(msg.LogLevel)}\u001b[49m \u001b[36m{msg.LogDateTime.ToString(DATEFORMAT)}\u001b[49m \u001b[39m\u001b[22m{msg.ThreadId}#\u001b[49m {fclr}{msg.Message}\u001b[49m"; if (msg.Exception != null) { //var EXCEPTION_SEPARATOR_WITHCOLOR = AppendWithColor(default, EXCEPTION_SEPARATOR, logLevelColors).ToString(); txt += $"{Environment.NewLine}{fclr}{msg.Exception}\u001b[49m"; } return txt; } }