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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
