using System;
using System.Globalization;
using Microsoft.Extensions.Logging;
namespace Jellyfin.Server.ServerSetupApp;
///
/// Startup logger for usage with DI that utilises an underlying logger from the DI.
///
/// The category of the underlying logger.
#pragma warning disable SA1649 // File name should match first type name
public class StartupLogger : StartupLogger, IStartupLogger
#pragma warning restore SA1649 // File name should match first type name
{
///
/// Initializes a new instance of the class.
///
/// The injected base logger.
public StartupLogger(ILogger logger) : base(logger)
{
}
///
/// Initializes a new instance of the class.
///
/// The underlying base logger.
/// The group for this logger.
internal StartupLogger(ILogger logger, StartupLogTopic? groupEntry) : base(logger, groupEntry)
{
}
IStartupLogger IStartupLogger.BeginGroup(FormattableString logEntry)
{
var startupEntry = new StartupLogTopic()
{
Content = logEntry.ToString(CultureInfo.InvariantCulture),
DateOfCreation = DateTimeOffset.Now
};
if (Topic is null)
{
SetupServer.LogQueue?.Enqueue(startupEntry);
}
else
{
Topic.Children.Add(startupEntry);
}
return new StartupLogger(BaseLogger, startupEntry);
}
IStartupLogger IStartupLogger.With(ILogger logger)
{
return new StartupLogger(logger, Topic);
}
}