1

ILogger Factory 不使用静态实例进行日志记录。我想在类项目的静态方法中调用 ILogger。任何人都可以帮我解决下面的代码。

public class AppLogger
{
    public static ILoggerFactory LoggerFactory { get; set; } = new LoggerFactory();
    public static ILogger CreateLogger<T>() => LoggerFactory.CreateLogger<T>();
    public static ILogger CreateLogger(string categoryName) => LoggerFactory.CreateLogger(categoryName);
}
class Program
{
    public static readonly ILogger _logger = AppLogger.CreateLogger<Program>();

    static void Main(string[] args)
    {
        _logger.LogInformation("Hello World!");
        Console.Read();
    }
}
4

1 回答 1

1

将日志记录类设为静态并不是一个坏主意,因此:

    public static class AppLogger
    {
        // LoggerFactory is the name of system class; So, It's not a good idea to use it again.
        public static ILoggerFactory MyLoggerFactory { get; set; } = LoggerFactory.Create(builder =>
        {
            // Add Console Logger and config to show log level information
            builder.AddConsole(configure: config => { builder.SetMinimumLevel(LogLevel.Information); });
        });
    
        public static ILogger CreateLogger<T>() => MyLoggerFactory.CreateLogger<T>();
        public static ILogger CreateLogger(string categoryName) => MyLoggerFactory.CreateLogger(categoryName);
    }
  1. 让它静态
  2. 将您的记录器工厂重命名为另一个名称,因为 LoggerFactory 是系统类名称的名称
  3. 添加控制台记录器或任何其他日志记录提供程序
  4. 配置提供程序以显示日志信息示例

项目参考:

    <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.8" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.8" />
于 2020-09-25T07:51:20.660 回答