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);
}
}