diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index 15ddf2f..3f38328 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -232,7 +232,7 @@ public abstract class Architecture( public void Initialize() { _logger = Configuration.LoggerFactory.GetLogger(GetType().Name); - _context ??= new ArchitectureContext(Container, TypeEventSystem, _logger); + _context ??= new ArchitectureContext(Container, TypeEventSystem, _logger, Configuration.LoggerFactory); // 创建架构运行时实例 Runtime = new ArchitectureRuntime(_context); @@ -283,7 +283,7 @@ public abstract class Architecture( public async Task InitializeAsync() { _logger = Configuration.LoggerFactory.GetLogger(GetType().Name); - _context ??= new ArchitectureContext(Container, TypeEventSystem, _logger); + _context ??= new ArchitectureContext(Container, TypeEventSystem, _logger, Configuration.LoggerFactory); // 创建架构运行时实例 Runtime = new ArchitectureRuntime(_context); diff --git a/GFramework.Core/architecture/ArchitectureContext.cs b/GFramework.Core/architecture/ArchitectureContext.cs index bbb5773..9450a70 100644 --- a/GFramework.Core/architecture/ArchitectureContext.cs +++ b/GFramework.Core/architecture/ArchitectureContext.cs @@ -13,16 +13,21 @@ namespace GFramework.Core.architecture; /// 架构上下文类,提供对系统、模型、工具等组件的访问以及命令、查询、事件的执行管理 /// public class ArchitectureContext( - IIocContainer container, - ITypeEventSystem typeEventSystem, - ILogger logger) + IIocContainer container, + ITypeEventSystem typeEventSystem, + ILogger logger, + ILoggerFactory? loggerFactory) : IArchitectureContext { private readonly IIocContainer _container = container ?? throw new ArgumentNullException(nameof(container)); - private readonly ITypeEventSystem _typeEventSystem = typeEventSystem ?? throw new ArgumentNullException(nameof(typeEventSystem)); + + private readonly ITypeEventSystem _typeEventSystem = + typeEventSystem ?? throw new ArgumentNullException(nameof(typeEventSystem)); + public ILogger Logger { get; } = logger ?? throw new ArgumentNullException(nameof(logger)); + public ILoggerFactory LoggerFactory { get; } = loggerFactory ?? new NoopLoggerFactory(); internal IArchitectureRuntime Runtime { get; set; } = null!; - + #region Component Retrieval /// @@ -143,4 +148,4 @@ public class ArchitectureContext( } #endregion -} +} \ No newline at end of file diff --git a/GFramework.Core/architecture/IArchitectureContext.cs b/GFramework.Core/architecture/IArchitectureContext.cs index 592d546..a9b5485 100644 --- a/GFramework.Core/architecture/IArchitectureContext.cs +++ b/GFramework.Core/architecture/IArchitectureContext.cs @@ -81,7 +81,10 @@ public interface IArchitectureContext /// 获取日志记录器 /// ILogger Logger { get; } - + /// + /// 获取日志工厂 + /// + ILoggerFactory LoggerFactory { get; } /// /// 取消注册事件监听器 /// diff --git a/GFramework.Core/rule/ILogAware.cs b/GFramework.Core/rule/ILogAware.cs new file mode 100644 index 0000000..dec2952 --- /dev/null +++ b/GFramework.Core/rule/ILogAware.cs @@ -0,0 +1,15 @@ +using GFramework.Core.logging; + +namespace GFramework.Core.rule; + +/// +/// 定义一个支持日志记录的接口,允许实现类设置和使用日志记录器 +/// +public interface ILogAware +{ + /// + /// 设置日志记录器 + /// + /// 要设置的ILogger实例 + void SetLogger(ILogger logger); +} diff --git a/GFramework.Core/utility/AbstractContextUtility.cs b/GFramework.Core/utility/AbstractContextUtility.cs index 6bb1f9c..361f617 100644 --- a/GFramework.Core/utility/AbstractContextUtility.cs +++ b/GFramework.Core/utility/AbstractContextUtility.cs @@ -9,7 +9,7 @@ namespace GFramework.Core.utility; /// public abstract class AbstractContextUtility : ContextAwareBase, IContextUtility { - private ILogger _logger = null!; + protected ILogger _logger = new NoopLoggerFactory().GetLogger(nameof(AbstractContextUtility)); /// /// 初始化上下文工具类