IStartupLogger.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using ILogger = Microsoft.Extensions.Logging.ILogger;
  3. namespace Jellyfin.Server.ServerSetupApp;
  4. /// <summary>
  5. /// Defines the Startup Logger. This logger acts an an aggregate logger that will push though all log messages to both the attached logger as well as the startup UI.
  6. /// </summary>
  7. public interface IStartupLogger : ILogger
  8. {
  9. /// <summary>
  10. /// Gets the topic this logger is assigned to.
  11. /// </summary>
  12. StartupLogTopic? Topic { get; }
  13. /// <summary>
  14. /// Adds another logger instance to this logger for combined logging.
  15. /// </summary>
  16. /// <param name="logger">Other logger to rely messages to.</param>
  17. /// <returns>A combined logger.</returns>
  18. IStartupLogger With(ILogger logger);
  19. /// <summary>
  20. /// Opens a new Group logger within the parent logger.
  21. /// </summary>
  22. /// <param name="logEntry">Defines the log message that introduces the new group.</param>
  23. /// <returns>A new logger that can write to the group.</returns>
  24. IStartupLogger BeginGroup(FormattableString logEntry);
  25. /// <summary>
  26. /// Adds another logger instance to this logger for combined logging.
  27. /// </summary>
  28. /// <param name="logger">Other logger to rely messages to.</param>
  29. /// <returns>A combined logger.</returns>
  30. /// <typeparam name="TCategory">The logger cateogry.</typeparam>
  31. IStartupLogger<TCategory> With<TCategory>(ILogger logger);
  32. /// <summary>
  33. /// Opens a new Group logger within the parent logger.
  34. /// </summary>
  35. /// <param name="logEntry">Defines the log message that introduces the new group.</param>
  36. /// <returns>A new logger that can write to the group.</returns>
  37. /// <typeparam name="TCategory">The logger cateogry.</typeparam>
  38. IStartupLogger<TCategory> BeginGroup<TCategory>(FormattableString logEntry);
  39. }
  40. /// <summary>
  41. /// Defines a logger that can be injected via DI to get a startup logger initialised with an logger framework connected <see cref="ILogger"/>.
  42. /// </summary>
  43. /// <typeparam name="TCategory">The logger cateogry.</typeparam>
  44. public interface IStartupLogger<TCategory> : IStartupLogger
  45. {
  46. /// <summary>
  47. /// Adds another logger instance to this logger for combined logging.
  48. /// </summary>
  49. /// <param name="logger">Other logger to rely messages to.</param>
  50. /// <returns>A combined logger.</returns>
  51. new IStartupLogger<TCategory> With(ILogger logger);
  52. /// <summary>
  53. /// Opens a new Group logger within the parent logger.
  54. /// </summary>
  55. /// <param name="logEntry">Defines the log message that introduces the new group.</param>
  56. /// <returns>A new logger that can write to the group.</returns>
  57. new IStartupLogger<TCategory> BeginGroup(FormattableString logEntry);
  58. }