Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

2年前 (2022) 程序员胖胖胖虎阿
365 0 0

系列目录:

本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。

开源地址:https://github.com/cyq1162/Taurus.MVC

本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。

Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。

Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。

Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:应用中心。

Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务的二次开发。

Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。

Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。

Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。

Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。

Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。

Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

Taurus.MVC 微服务框架 入门开发教程:架构演进:1、从单应用程序简单过渡到负载均衡。

Taurus.MVC 微服务框架 入门开发教程:架构演进:2、负载均到模块拆分负载。

Taurus.MVC 微服务框架 入门开发教程:架构演进:3、模块拆分负载到多级负载均衡。

Taurus.MVC 微服务框架 入门开发教程:运行示例:https://github.com/cyq1162/Taurus.MVC.MicroService.Demo

前言:

对于微服务的日志统一管理来说,除了把日志统一发送到MQ,再进行统一处理之外。

也可以利用CYQ.Data的Log功能,统一写数据库。

CYQ.Data对日志的写是线程队列写,因此不用担心高并发与执行阻塞问题。

Taurus.MVC 本身就引用了CYQ.Data,因此直接用即可,下面介绍简单使用方法:

1、配置数据库链接:LogConn

appsettings.json:配置如下:

{
  "ConnectionStrings": {
    "LogConn": "server=.;database=MSLog;uid=sa;pwd=123456"
  },
  "AppSettings": {
    "IsWriteLog": true
  }
}

web.config:配置如下:

<configuration>
  <connectionStrings>
    <add name="LogConn" connectionString="txt path={0}App_Data"/>
  </connectionStrings>
  <appSettings>
    <add key="IsWriteLog" value="true"/>
  </appSettings>
</configuration>

说明:

1、通过配置IsWriteLog,启用写日志功能,默认false,异常会直接抛出来。

2、通过配置LogConn,指定数据库,默认会检测并创建SysLogs表,并进行日志数据写入。

2、配置数据库链接(备):LogConn_Bak

appsettings.json:配置如下:

{
  "ConnectionStrings": {
    "LogConn": "server=.;database=MSLog;uid=sa;pwd=123456"
  "LogConn_Bak": "server=.;database=MSLog_bak;uid=sa;pwd=123456"
},
  "AppSettings": {
    "IsWriteLog": true
  }
}

web.config:配置如下:

<configuration>
  <connectionStrings>
    <add name="LogConn" connectionString="txt path={0}App_Data/LogA/"/>
   <add name="LogConn_bak" connectionString="txt path={0}App_Data/LogA_Bak/"/>
</connectionStrings>
<appSettings>
    <add key="IsWriteLog" value="true"/>
</appSettings>
</configuration>

说明:

如果主数据库了,默认链接会切换到备数据库链接写,避免日志丢失。

3、自定义数据库日志表名:

appsettings.json:配置如下:

{
  "ConnectionStrings": {
    "LogConn": "server=.;database=MSLog;uid=sa;pwd=123456"
  "LogConn_Bak": "server=.;database=MSLog_bak;uid=sa;pwd=123456"
},
  "AppSettings": {
    "IsWriteLog": true,
   "LogTableName":"自定义微服务模块日志表名" } }

web.config:配置如下:

<configuration>
  <connectionStrings>
    <add name="LogConn" connectionString="txt path={0}App_Data/LogA/"/>
   <add name="LogConn_bak" connectionString="txt path={0}App_Data/LogA_Bak/"/>
</connectionStrings>
<appSettings>
    <add key="IsWriteLog" value="true"/>
    <add key="LogTableName" value="自定义日志表名"/>
</appSettings>
</configuration>

说明:

对于数据库,可以独立一个日志数据库,但对于不同的微服务,可以采用不同的表名来区分监控日志。

4、自定义数据库日志表名:按每天或每月生成一张表进行采集

在系统运行启动之后,找个写代码的地方:

1、按每天生成1张日志表:

CYQ.Data.AppConfig.LogTableName="日志表名"+DateTime.Now.ToString("yyyyMMdd");

2、按每月生成1张日志表:

CYQ.Data.AppConfig.LogTableName="日志表名"+DateTime.Now.ToString("yyyyMM");

3、按每年生成1张日志表:

CYQ.Data.AppConfig.LogTableName="日志表名"+DateTime.Now.ToString("yyyy");

说明:

为了避免日志表长时间收集数据过大的问题,可以通过自定义表名,来达到区分。

通过在写日志之前,通过代码修改默认的配置表名,即可达到自定义分拆表的需求。

5、业务框架收集日志的代码调用:

默认,调用简单,在有需要的地方直接写即可:

CYQ.Data.Log.Write(日志信息,分类名称)

详情接口:

public static partial class Log
{
        public static void Write(Exception err)
        public static void Write(Exception err, string logType)

        public static void Write(string message)
        public static void Write(string message, string logType)

}

 

6、默认生成的数据库表结构与信息:

Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

 

说明:

除了错误信息内容与分类名,系统还会收集上下文中的相关信息,并进行一并记录。 

总结:

通过Taurus.MVC微服务框架默认提供的日志功能,仅需要简单配置,即可达到高性能的收集各种异常日志或其它日志。

 

相关文章

暂无评论

暂无评论...