如何使用.Net Framework(不是.Net Core)在Console App中配置ILogger

时间:2019-03-15 16:44:39

标签: logging loggerfactory

是否可以在.Net Framework控制台应用程序中使用ILogger日志?我搜索了很多,但找不到样本。到目前为止,这是我想出的

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

我不知道如何添加LoggerProvider。是否已经为.Net Framework的控制台和文件实现了提供程序,或者仅针对Core?

我需要实现自己的提供商吗?

1 个答案:

答案 0 :(得分:0)

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);
        //}
    }
}