首页 > 其他分享 >serilog日志

serilog日志

时间:2023-08-09 09:12:34浏览次数:36  
标签:string serilog DateTime logEntries logParts new 日志

 

 

1安装包

 

 

 

第一个是基础的配置,第二个包是集成Serilog日志记录器的扩展包,简化在.NET应用程序中集成和配置Serilog的过程。第三个是保存在文档中

 

2 配置文件

 

 

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", // 单个日志文件,总日志,所有日志存到这里面

                       rollingInterval: RollingInterval.Day,

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

                   )

               )

               .CreateLogger();

            builder.Host.UseSerilog();

        }

 

Program:

 

 

//全局异常计入日志

 

 

seriloh存入数据库并到txt文档分表,并显示

1.  配置文档,注入,用哪个装那个

 

 

 /// <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(); // 获取默认的数据库连接字符串

 

            Log.Logger = new LoggerConfiguration()

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

                .WriteTo.Console(theme: AnsiConsoleTheme.Code) // 写入控制台输出,且使用 AnsiConsoleTheme.Code 主题

                .WriteTo.Map( // 动态配置

                    keyPropertyName: "Name", // 键属性名

                   defaultKey: "0", // 默认键值

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

                        .WriteTo.MSSqlServer( // 写入MSSQL

                           connectionString: connectionString, // 使用默认的数据库连接字符串

                            sinkOptions: new MSSqlServerSinkOptions

                            {

                                TableName = $"LogEvents_{name}", // 动态表名

                               AutoCreateSqlTable = true // 自动创建表

                            })

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

                )

                .CreateLogger(); // 创建log

        }

 

 

 

 

"Serilog": {

    "MinimumLevel": "Information" //日志输出最小级别

  },最小输出级别

 

 

 

读取文档方法

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

            {

                // 在实际应用中,你可能需要进一步处理文件读取失败的情况

                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,

            });

        }

 

 

 

 

 

标签:string,serilog,DateTime,logEntries,logParts,new,日志
From: https://www.cnblogs.com/qibaidao/p/17615955.html

相关文章

  • EFK家族---Fluentd日志收集
    介绍Fluentd是一个开源的数据收集器,专为处理数据流设计,使用JSON作为数据格式。它采用了插件式的架构,具有高可扩展性高可用性,同时还实现了高可靠的信息转发。具备每天收集5000+台服务器上5T的日志数据,每秒处理50000条消息的性能;Fluentd是由Fluent+d得来,d生动形象地标明了它是以一个......
  • 【JVM技术指南】「GC内存诊断-故障问题排查」一文教你如何打印及分析JVM的GC日志(实战
    当我们在开发Java应用程序时,JVM的GC(垃圾回收)是一个非常重要的话题。GC的作用是回收不再使用的内存,以便程序可以继续运行。在JVM中,GC的日志记录了GC的详细信息,包括GC的类型、时间、内存使用情况等。在本文中,我们将介绍JVMGC日志的格式、含义和分析方法。JVMGC日志格式JVMGC日志的......
  • Linux下通过Nginx日志分析网站访问情况
    1.前言2.访问IP相关统计2.1.统计IP访问量(PV)2.2.独立IP访问统计(UV)2.3.查看某一时间段的IP访问量(4-5点)2.4.查看访问最频繁的前100个IP2.5.查看访问次数在100次以上的IP2.6.查看某个IP的详细访问情况,按访问频率排序3.页面访问统计3.1.查看访问最频繁的......
  • Log4netHelper, 支持自定义日志文件生成间隔
    usinglog4net;usinglog4net.Appender;usinglog4net.Config;usinglog4net.Repository;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingstaticlog4net.Appender.FileAppender;namespa......
  • python监控强势票日志
    c:\python38\python.exeF:/GZH/demo/量化/easyquant/utils/ts/A实时监控近10天最强票+昨日涨停票.pyglobal_config_path:c:\python38\lib\site-packages\easytrader/config/global.json++++++++++++++++(近10日最强+昨日涨停票)+++++++++++++++++++++++++++++++:selectdist......
  • 云原生可观测框架 OpenTelemetry 基础知识(架构/分布式追踪/指标/日志/采样/收集器)
    什么是OpenTelemetry?OpenTelemetry是一个开源的可观测性框架,由云原生基金会(CNCF)托管。它是OpenCensus和OpenTracing项目的合并。旨在为所有类型的可观测信号(如跟踪、指标和日志)提供单一标准。https://opentelemetry.iohttps://www.cncf.iohttps://opencensus.io......
  • Django 之日志配置
    Django之日志配置日志作为服务的,排查故障分析性能及问题的重要“帮手”,是服务必不可少的。 配置日志定义日志记录器定义了三个日志记录器,分别针对Django、自定义应用程序和自定义库。每个日志记录器都有不同的日志级别和处理器,例如控制台和文件处理器。Django日志记......
  • 【JVM技术指南】「GC内存诊断-故障问题排查」一文教你如何打印及分析JVM的GC日志(实战
    当我们在开发Java应用程序时,JVM的GC(垃圾回收)是一个非常重要的话题。GC的作用是回收不再使用的内存,以便程序可以继续运行。在JVM中,GC的日志记录了GC的详细信息,包括GC的类型、时间、内存使用情况等。在本文中,我们将介绍JVMGC日志的格式、含义和分析方法。JVMGC日志格式JVMGC日志的......
  • 2023.8 模拟赛日志
    2023暑假集训ab班day1127round。预期:\(0+25+0=25\)实际:\(80+20+0=100\)题目:23ab-day1划(待写)不会做,搞了很久最后逐一假掉。竟然有分。题解是一些恶心的区间分类,比较简单,可惜了。好像有很多做法23ab-day1Heinrich树论科技,跳过。写了暴力换根。23ab-day1朝花夕拾......
  • 将Docker与DevOps文化结合:实现自动化、监控与日志管理
    引言:DevOps文化作为一种融合开发和运维的方法论,旨在加速软件交付和增强团队协作。而Docker作为一种轻量级、可移植的容器化技术,提供了快速部署和高度可扩展的解决方案。本文将深入探讨如何将Docker与DevOps文化结合,以实现自动化部署、高效监控和集中式日志管理,为现代软件开发与运维......