src/DotNetCommon.Core/Logger/LoggerFactory.cs

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using DotNetCommon.Extensions;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace DotNetCommon.Logger
{
    /// <summary>
    /// 日志记录器工厂
    /// </summary>
    public class LoggerFactory
    {
        private static ConcurrentDictionary<string, ILogger> _loggerCache = new ConcurrentDictionary<string, ILogger>();

        /// <summary>
        /// 根据类别创建日志记录器
        /// </summary>
        /// <typeparam name="T">以此泛型全称作为类别名</typeparam>
        /// <returns></returns>
        public static ILogger<T> CreateLogger<T>()
        {
            return _loggerCache.GetOrAdd(typeof(T).FullName, (key) => new InternalLogger<T>(typeof(T).GetClassFullName())) as ILogger<T>;
        }

        /// <summary>
        /// 根据类别创建日志记录器
        /// </summary>
        /// <param name="categoryName">类别名</param>
        /// <returns></returns>
        public static ILogger CreateLogger(string categoryName)
        {
            return _loggerCache.GetOrAdd(categoryName, (key) => new InternalLogger<object>(categoryName));
        }

        /// <summary>
        /// 自定义的日志输出的动作,可以使用 <seealso cref="LoggerFactory.SetLogger(Action{LogContext}, bool)"/> 来赋值 <br/>
        /// 比如:通过自定义设置可以将日志输出到 asp.net core 的日志框架
        /// </summary>
        public static Action<LogContext> LogAction { internal set; get; }
        /// <summary>
        /// 是否仍然将日志输出到本地目录 <seealso cref="LoggerFactory.SetLogger(Action{LogContext}, bool)"/> 的第二个参数值
        /// </summary>
        public static bool EnableDefaultOutPut { internal set; get; }

        /// <summary>
        /// 设置DotNetCommon的日志输出
        /// </summary>
        /// <param name="logAction"></param>
        /// <param name="enableDefaultOutPut"></param>
        public static void SetLogger(Action<LogContext> logAction, bool enableDefaultOutPut)
        {
            LogAction = logAction;
            EnableDefaultOutPut = enableDefaultOutPut;
        }

        /// <summary>
        /// 日志默认输出的基目录, 默认: <code>Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ".logs")</code>
        /// </summary>
后面还有 91 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。