using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Serilog;
using Serilog.Events;
using SlnMesnac.Config;
using System;
using System.IO;

#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* 版权所有 (c) 2024 WenJY 保留所有权利。
* CLR版本：4.0.30319.42000
* 机器名称：LAPTOP-E0N2L34V
* 命名空间：SlnMesnac.Serilog
* 唯一标识：496f8d2b-70e3-4a05-ae18-a9b0fcd06b82
*
* 创建者：WenJY
* 电子邮箱：wenjy@mesnac.com
* 创建时间：2024-03-27 21:58:35
* 版本：V1.0.0
* 描述：
*
*--------------------------------------------------------------------
* 修改人：
* 时间：
* 修改说明：
*
* 版本：V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.Serilog
{
    /// <summary>
    /// Serilog
    /// </summary>
    public static class SerilogExtensions
    {
        public static IApplicationBuilder UseSerilogExtensions(this IApplicationBuilder app)
        {
            //启用Serilog中间件
            app.UseSerilogRequestLogging();

            #region 通过配置文件读取日志存放位置
            var appConfig = app.ApplicationServices.GetService<AppConfig>();
            var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
            #endregion

            Log.Logger = new LoggerConfiguration().MinimumLevel.Information().WriteTo.Console()
                            .WriteTo.File(Path.Combine(logPath, "Info.log"), LogEventLevel.Information)
                            .WriteTo.File(Path.Combine(logPath, "Error.log"), LogEventLevel.Error)
                            .WriteTo.File(Path.Combine(logPath, "Warn.log"), LogEventLevel.Warning)
                            //.WriteTo.File(Path.Combine(logPath, "Debug.log"), LogEventLevel.Debug, fileSizeLimitBytes: 5 * 1024)
                            .CreateLogger();
            app.UseSerilogRequestLogging();

            return app;
        }
    }
}
