<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Serilog

      Serilog

      serilog日志

      serilog日志簡單方法
      1安裝包

      descript

      第一個是基礎(chǔ)的配置,第二個包是集成Serilog日志記錄器的擴展包,簡化在.NET應(yīng)用程序中集成和配置Serilog的過程。第三個是保存在文檔中

      2 配置文件
      descript

      public static void AddSerilog(this WebApplicationBuilder builder)

      {

      Log.Logger = new LoggerConfiguration()

      .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) // 排除Microsoft的日志

      .Enrich.FromLogContext() // 注冊日志上下文

      .WriteTo.Logger(configure => configure // 輸出到文件

      .MinimumLevel.Debug()

      .WriteTo.File(

      $"logs\\log.txt", // 單個日志文件,總?cè)罩荆腥罩敬娴竭@里面

      rollingInterval: RollingInterval.Day,

      outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u20}] {Message:lj}{NewLine}"

      )

      )

      .CreateLogger();

      builder.Host.UseSerilog();

      }

      Program:descript

      //全局異常計入日志

      descript

      serilog存入數(shù)據(jù)庫并到txt文檔分表,并顯示

      1. 配置文檔,注入,用哪個裝那個
      2. descript

      /// <summary>

      /// Serilog日志

      /// </summary>

      /// <param name="builder"></param>

      public static void AddSerilog(this WebApplicationBuilder builder)

      {

      var configuration = new ConfigurationBuilder()

      .SetBasePath(Directory.GetCurrentDirectory())

      .AddJsonFile("appsettings.json")

      .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true)

      .Build(); // 讀取配置文件

      var connectionString = configuration["ConnectionStrings:Con"].Trim(); // 獲取默認的數(shù)據(jù)庫連接字符串

      Log.Logger = new LoggerConfiguration()

      .ReadFrom.Configuration(configuration) // 讀取配置文件中的配置

      .WriteTo.Console(theme: AnsiConsoleTheme.Code) // 寫入控制臺輸出,且使用 AnsiConsoleTheme.Code 主題

      .WriteTo.Map( // 動態(tài)配置

      keyPropertyName: "Name", // 鍵屬性名

      defaultKey: "0", // 默認鍵值

      configure: (name, wt) => wt.Logger(lc => lc // 配置單個log

      .WriteTo.MSSqlServer( // 寫入MSSQL

      connectionString: connectionString, // 使用默認的數(shù)據(jù)庫連接字符串

      sinkOptions: new MSSqlServerSinkOptions

      {

      TableName = $"LogEvents_{name}", // 動態(tài)表名

      AutoCreateSqlTable = true // 自動創(chuàng)建表

      })

      .WriteTo.File($"logs\\log_{name}.txt", rollingInterval: RollingInterval.Day)) // 寫入日志文件

      )

      .CreateLogger(); // 創(chuàng)建log

      }

      descript

      "Serilog": {

      "MinimumLevel": "Information" //日志輸出最小級別

      },最小輸出級別

      descript

      讀取文檔方法

      /// <summary>

      /// 日志文本讀取

      /// </summary>

      /// <returns></returns>

      [HttpGet]

      public IActionResult Get(string? logdate, string? name, int page = 1, int size = 15)

      {

      string logFilePath = $"logs\\log_1{DateTime.Now:yyyyMMdd}.txt";

      List<LogEntry> logEntries = new List<LogEntry>();

      try

      {

      string[] logLines = System.IO.File.ReadAllLines(logFilePath);

      foreach (string logLine in logLines)

      {

      string[] logParts = logLine.Split(' ');

      string timestamp = logParts[0].Replace("-", "")+ logParts[1].Replace(":","").Replace(".","");

      string level = logParts[3];

      string message = logParts[5];

      string username= logParts[4];

      DateTime timedate = DateTime.Parse(logParts[0]+ " "+logParts[1]);

      LogEntry entry = new LogEntry

      {

      Timestamp = timestamp,

      Level = level,

      Message = message,

      username= username,

      TimeDate=timedate,

      };

      logEntries.Add(entry);

      }

      }

      catch (IOException e)

      {

      // 在實際應(yīng)用中,你可能需要進一步處理文件讀取失敗的情況

      return StatusCode(500, $"讀取日志文檔失敗:{e.Message}");

      }

      if (!string.IsNullOrEmpty(logdate))

      {

      DateTime targetDate = DateTime.Parse(logdate);

      DateTime startOfDay = targetDate.Date;

      DateTime endOfDay = targetDate.Date.AddDays(1).AddSeconds(-1);

      logEntries = logEntries.Where(t => t.TimeDate >= startOfDay && t.TimeDate <= endOfDay).ToList();

      }

      if (!string.IsNullOrEmpty(name))

      {

      logEntries = logEntries.Where(t => t.username.Contains(name)).ToList();

      }

      int totalCount = logEntries.Count();

      int pageCount = (int)Math.Ceiling(totalCount * 1.0 / size);

      logEntries = logEntries.Skip((page - 1) * size).Take(size).ToList();

      return Ok(new

      {

      logEntries,

      totalCount,

      pageCount,

      });

      }descript

      descriptdescript

      posted @ 2024-06-05 09:51  北落師門、  閱讀(112)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人av天堂男人资源站| 国产最大成人亚洲精品| 精品午夜福利无人区乱码| xbox免费观看高清视频的软件| 亚洲一区中文字幕第十页| 国产激情无码一区二区三区| 国产午夜福利精品视频| 曰韩无码av一区二区免费| 成人无码一区二区三区网站| 国产国产久热这里只有精品| 无遮高潮国产免费观看| 国产精品高清一区二区三区| 久久永久视频| 国产99视频精品免费视频36| 精品人妻一区二区| 中文字幕乱码人妻二区三区 | 亚洲综合伊人五月天中文| 国产亚洲无线码一区二区| 最新亚洲人成网站在线观看| 亚洲成av人片天堂网无码| 欧美日本一区二区视频在线观看| 欧美va亚洲va在线观看| 亚洲精品日韩中文字幕| 国自产在线精品一本无码中文| 丰满人妻AV无码一区二区三区 | 国产精品人妻久久无码不卡| 成人欧美日韩一区二区三区| 亚洲区综合区小说区激情区| 日本高清在线播放一区二区三区| 在线aⅴ亚洲中文字幕| 小伙无套内射老熟女精品| 国产四虎永久免费观看| 欧美熟妇性XXXX欧美熟人多毛| 无码人妻出轨黑人中文字幕| 韩国三级+mp4| 亚洲高清偷拍一区二区三区| 宁津县| 最近中文字幕日韩有码| 亚洲日韩国产精品第一页一区 | 国产综合久久久久鬼色| av无码免费一区二区三区|