#region Copyright (C) 2016 Kevin (OSS开源系列) 公众号:OSSCore /*************************************************************************** *   文件功能描述:全局插件 - 日志插件实体及辅助类 * *   创建人: Kevin * 创建人Email:1985088337@qq.com * * *****************************************************************************/ #endregion namespace OSS.Tools.Log { /// /// 日志写来源 /// public static class LogHelper { /// /// 默认日志工具 /// private static readonly IToolLog _defaultLogTool = new DefaultToolLog(); /// /// 日志工具提供者 /// public static Func? LogToolProvider { get; set; } /// /// 对日志内容格式化 /// 例如可以 初始化日志Id,加工日志内容 等 /// public static Action? LogFormat { get; set; } /// /// 通过来源名称获取日志来源实例 /// /// /// public static IToolLog GetLogWriter(string? sourceName) { return LogToolProvider?.Invoke(sourceName) ?? _defaultLogTool; } /// /// 记录信息 /// /// 日志信息 /// 关键值 /// 来源名称 public static Task Info(object msg, string? msgKey = null, string sourceName = "") { return Log(new LogInfo(LogLevelEnum.Info, msg, msgKey, sourceName)); } /// /// 记录警告,用于未处理异常的捕获 /// /// 日志信息 /// 关键值 /// 来源名称 public static Task Warning(object msg, string? msgKey = null, string? sourceName = "") { return Log(new LogInfo(LogLevelEnum.Warning, msg, msgKey, sourceName)); } /// /// 记录错误,用于捕获到的异常信息记录 /// /// 日志信息 /// 关键值 /// 来源名称 public static Task Error(object msg, string? msgKey = null, string? sourceName = "") { return Log(new LogInfo(LogLevelEnum.Error, msg, msgKey, sourceName)); } /// /// 记录错误,用于捕获到的异常信息记录 /// /// 日志信息 /// 关键值 /// 来源名称 public static Task Trace(object msg, string? msgKey = null, string? sourceName = "") { return Log(new LogInfo(LogLevelEnum.Trace, msg, msgKey, sourceName)); } /// /// 记录日志 /// /// private static async Task Log(LogInfo info) { try { LogFormat?.Invoke(info); await GetLogWriter(info.source_name).WriteLogAsync(info); } catch { // 写日志本身不能再出错误,这里做特殊处理 } return info.trace_no; } } }