如何在.Net Framework的控制台应用程序中配置ILogger(而不是.Net Core)

3

在 .Net Framework 控制台应用程序中使用 ILogger 记录日志,是否可能?我搜索了很多但是没有找到样例。这是我目前的进展:

Original Answer 翻译成“最初的回答”

        var loggerFactory = new LoggerFactory();
        //loggerFactory.AddProvider();
        var logger = loggerFactory.CreateLogger("Category");
        logger.LogInformation("This is a log line");

我不知道如何添加LoggerProvider。是否已经为.Net Framework实现了Console和File提供程序,还是它们仅适用于Core?
我需要自己实现提供程序吗?
最初的回答:
在.Net Framework中,您需要自己实现LoggerProvider。但是,在.Net Core中,已经实现了Console和File提供程序。
1个回答

1
using Microsoft.Extensions.Logging;

namespace Test
{   
    class Program
    {
        // Single-Threaded Apartment required for OAuth2 Authz Code flow (User Authn) to execute for this demo app
        [STAThread]
        static void Main(string[] args)
        {
            var log = new VerboseDiagnosticsTraceWriter();
            log.LogInformation($"test");
        }
    }
}

using Microsoft.Extensions.Logging;
using System;

namespace Test
{
    internal class VerboseDiagnosticsTraceWriter : ILogger
    {


        public IDisposable BeginScope<TState>(TState state)
        {
            return null;
        }

        public bool IsEnabled(LogLevel logLevel)
        {
            return true;
        }

        public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
        {
            //System.Diagnostics.Debug.WriteLine($"{logLevel} {state.ToString()}");
            Console.WriteLine($"[{DateTime.Now}] {logLevel} {state.ToString()}");
        }

        //public override void Trace(Microsoft.Azure.WebJobs.Host.TraceEvent traceEvent)
        //{
        //    System.Diagnostics.Debug.WriteLine(traceEvent.Message);
        //}
    }
}

1
你能添加一个简短的解释吗? - Stephan Hogenboom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接