首页 新闻 搜索 专区 学院

ASP.NET Core中如何让控制台日志记录日志时间

1
悬赏园豆:50 [已解决问题] 解决于 2018-02-13 13:24

在ASP.NET Core中通过在Startup中下面的配置可以将日志记录到控制台,但不会记录日志时间,请问如何配置可以记录日志时间?

loggerFactory.AddConsole(Configuration.GetSection("Logging"));
dudu的主页 dudu | 高人七级 | 园豆:38970
提问于:2017-04-10 17:02
< >
分享
最佳答案
0

使用Serilog并配置其输出到控制台可解决这个问题

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.Console()
    .CreateLogger();

var host = WebHostBuilder.CreateDefault()
     .UseStartup<Startup>()
     .UseSerilog()
     .Build();
host.Run();
dudu | 高人七级 |园豆:38970 | 2018-02-13 13:13
其他回答(3)
0

貌似不能统一配置:https://github.com/aspnet/Logging/issues/483
只能写日志一个一个添加:logger.Log(LogLevel.Information, 1, someObj, null, (s, e) => DateTime.Now + " " + s.ToString());

收获园豆:10
Jeffcky | 园豆:2563 (老鸟四级) | 2017-04-10 23:35
0

自定义Log Provider可行?

收获园豆:10
幻天芒 | 园豆:36594 (高人七级) | 2017-04-11 08:43
0

把默认的扩展方法的所有重载 替换成自己的。 _logger.LogDebug()  -->_logger.Debug()

    public static class LoggerExtensions
    {
        private static readonly Func<object, Exception, string> _messageFormatter = (o,e)=>$"{DateTime.Now} {o}";
        public static void Debug(this ILogger logger, EventId eventId, Exception exception, string message, params object[] args)
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            logger.Log(LogLevel.Debug, eventId, new FormattedLogValues(message, args), exception, _messageFormatter);
        }
    }

 

另外,推荐个github.com/serilog,.net core 官方推荐的几个第三方结构化日志组件之一。

可以直接把日志记录到ElasticSearch ,然后用Kibana 查看,分析日志。

日期,EventID,Exception,这些都是分成字段保存的,不是揉到一起的字符串。

java 的 ELK栈 (logstash,elasticsearch,kibana) 的改进版 (serilog,elasticsearch,kibana)。  中间少几次logstash转换,更方便,高效。

收获园豆:30
刀是什么样的刀 | 园豆:910 (小虾三级) | 2017-04-20 22:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册