| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | 
							- using System;
 
- using System.Globalization;
 
- using Microsoft.Extensions.Logging;
 
- using Microsoft.Extensions.Logging.Abstractions;
 
- namespace Jellyfin.Server.ServerSetupApp;
 
- /// <inheritdoc/>
 
- public class StartupLogger : IStartupLogger
 
- {
 
-     private readonly StartupLogTopic? _topic;
 
-     /// <summary>
 
-     /// Initializes a new instance of the <see cref="StartupLogger"/> class.
 
-     /// </summary>
 
-     /// <param name="logger">The underlying base logger.</param>
 
-     public StartupLogger(ILogger logger)
 
-     {
 
-         BaseLogger = logger;
 
-     }
 
-     /// <summary>
 
-     /// Initializes a new instance of the <see cref="StartupLogger"/> class.
 
-     /// </summary>
 
-     /// <param name="logger">The underlying base logger.</param>
 
-     /// <param name="topic">The group for this logger.</param>
 
-     internal StartupLogger(ILogger logger, StartupLogTopic? topic) : this(logger)
 
-     {
 
-         _topic = topic;
 
-     }
 
-     internal static IStartupLogger Logger { get; set; } = new StartupLogger(NullLogger.Instance);
 
-     /// <inheritdoc/>
 
-     public StartupLogTopic? Topic => _topic;
 
-     /// <summary>
 
-     /// Gets or Sets the underlying base logger.
 
-     /// </summary>
 
-     protected ILogger BaseLogger { get; set; }
 
-     /// <inheritdoc/>
 
-     public IStartupLogger BeginGroup(FormattableString logEntry)
 
-     {
 
-         return new StartupLogger(BaseLogger, AddToTopic(logEntry));
 
-     }
 
-     /// <inheritdoc/>
 
-     public IStartupLogger With(ILogger logger)
 
-     {
 
-         return new StartupLogger(logger, Topic);
 
-     }
 
-     /// <inheritdoc/>
 
-     public IStartupLogger<TCategory> With<TCategory>(ILogger logger)
 
-     {
 
-         return new StartupLogger<TCategory>(logger, Topic);
 
-     }
 
-     /// <inheritdoc/>
 
-     public IStartupLogger<TCategory> BeginGroup<TCategory>(FormattableString logEntry)
 
-     {
 
-         return new StartupLogger<TCategory>(BaseLogger, AddToTopic(logEntry));
 
-     }
 
-     private StartupLogTopic AddToTopic(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 startupEntry;
 
-     }
 
-     /// <inheritdoc/>
 
-     public IDisposable? BeginScope<TState>(TState state)
 
-         where TState : notnull
 
-     {
 
-         return null;
 
-     }
 
-     /// <inheritdoc/>
 
-     public bool IsEnabled(LogLevel logLevel)
 
-     {
 
-         return true;
 
-     }
 
-     /// <inheritdoc/>
 
-     public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
 
-     {
 
-         if (BaseLogger.IsEnabled(logLevel))
 
-         {
 
-             // if enabled allow the base logger also to receive the message
 
-             BaseLogger.Log(logLevel, eventId, state, exception, formatter);
 
-         }
 
-         var startupEntry = new StartupLogTopic()
 
-         {
 
-             LogLevel = logLevel,
 
-             Content = formatter(state, exception),
 
-             DateOfCreation = DateTimeOffset.Now
 
-         };
 
-         if (Topic is null)
 
-         {
 
-             SetupServer.LogQueue?.Enqueue(startupEntry);
 
-         }
 
-         else
 
-         {
 
-             Topic.Children.Add(startupEntry);
 
-         }
 
-     }
 
- }
 
 
  |