using System; using GFramework.Core.Abstractions.Logging; using GFramework.Core.Logging; namespace GFramework.Godot.Logging; /// /// Provides cached Godot logger instances. /// public sealed class GodotLoggerFactoryProvider : ILoggerFactoryProvider { private readonly ILoggerFactory _cachedFactory; /// /// Initializes a Godot logger provider with the default logger factory. /// public GodotLoggerFactoryProvider() { _cachedFactory = CreateCachedFactory(new GodotLoggerFactory()); } /// /// Initializes a Godot logger provider with Godot-specific formatting options. /// /// The logger options. public GodotLoggerFactoryProvider(GodotLoggerOptions options) { _cachedFactory = CreateCachedFactory(new GodotLoggerFactory(options)); } /// /// Gets or sets the provider minimum level. /// public LogLevel MinLevel { get; set; } /// /// Creates a cached logger with the specified name. /// /// The logger name. /// A logger configured with . public ILogger CreateLogger(string name) { return _cachedFactory.GetLogger(name, MinLevel); } private static ILoggerFactory CreateCachedFactory(ILoggerFactory innerFactory) { ArgumentNullException.ThrowIfNull(innerFactory); return new CachedLoggerFactory(innerFactory); } }