亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#使用SqlServer作為日志數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)

 更新時(shí)間:2021年01月06日 10:45:40   作者:亮大大大  
這篇文章主要給大家介紹了關(guān)于C#使用SqlServer作為日志數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

做一個(gè)簡(jiǎn)單的日志數(shù)據(jù)庫(kù)

功能不需要特別繁瑣

主要就是記錄普通日志和錯(cuò)誤日志(INFO,ERROR)

用數(shù)據(jù)庫(kù)作為日志有好處也有壞處

相比于文本來(lái)說(shuō) 更加容易操作

后期查看日志可以根據(jù)時(shí)間篩選

當(dāng)然要求也多了點(diǎn) 沒(méi)那么靈活了

首先你的PC上還要安裝一個(gè)SqlServer

本來(lái)是想用log4net配置去實(shí)現(xiàn)的

發(fā)現(xiàn)配置很繁瑣 決定自己設(shè)計(jì)一個(gè) 肯定有不少不足之處

分為以下幾個(gè)步驟

1.建立日志數(shù)據(jù)表

都用一個(gè)表來(lái)存放,那么字段就要多設(shè)置一個(gè) 用來(lái)區(qū)分不同的日志類型

具體怎么設(shè)置 也很簡(jiǎn)單 字段很簡(jiǎn)單

using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RH.Iot.DomainModel.RhLogDto
{
 /// <summary>
 /// SqlServer數(shù)據(jù)庫(kù)記錄日志傳輸模型
 /// </summary>
 [SugarTable("LogRecord")]
 public class RhLogRecordDtoSqlServer
 {
  /// <summary>
  /// 索引
  /// </summary>
  [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]//主鍵并且自增 (string不能設(shè)置自增)
  public int Id { get; set; }
  /// <summary>
  /// 日期
  /// </summary>
  public string DateTime { get; set; }
  /// <summary>
  /// 日志等級(jí)名稱
  /// </summary>
  public string LevelName { get; set; }
  /// <summary>
  /// 信息
  /// </summary>
  public string Message { get; set; }
  /// <summary>
  ///異常
  /// </summary>
  public string Exception { get; set; }
  /// <summary>
  /// 無(wú)參構(gòu)造器
  /// </summary>
  public RhLogRecordDtoSqlServer()
  {

  }
  /// <summary>
  /// 有參構(gòu)造器
  /// </summary>
  public RhLogRecordDtoSqlServer(int Id,string DateTime,string LevelName,string Message,string Exception)
  {
   this.Id = Id;
   this.DateTime = DateTime;
   this.LevelName =LevelName;
   this.Message = Message;
   this.Exception = Exception;

  }
 }
}

我這里用到了SqlSugar這個(gè)Orm框架

不會(huì)的話可以去學(xué)一下 用數(shù)據(jù)庫(kù)少不了與這個(gè)框架打交道

如果你已經(jīng)初步了解了SqlSugar 請(qǐng)?jiān)倏匆幌滤膫}(cāng)儲(chǔ)概念

然后引入你的程序 如果你不想也可以 你子要可以保證自己的程序可以訪問(wèn)數(shù)據(jù)庫(kù)并且進(jìn)行基本的插入數(shù)據(jù)操作就好了

上面是數(shù)據(jù)庫(kù)表的映射類
那么表的建立和它的Sql語(yǔ)句

CREATE TABLE [dbo].[LogRecord] (
 [Id]  INT   IDENTITY (1, 1) NOT NULL,
 [DateTime] NVARCHAR (20) NULL,
 [LevelName] NCHAR (10)  NULL,
 [Message] NVARCHAR (MAX) NULL,
 [Exception] NVARCHAR (MAX) NULL,
 PRIMARY KEY CLUSTERED ([Id] ASC)
);

2.建立相關(guān)的數(shù)據(jù)訪問(wèn)層

我這里使用了倉(cāng)儲(chǔ) ,你也可以使用自己的方式

3.幫助操作類

using Microsoft.Extensions.Logging;
using RH.Iot.DomainModel.RhLogDto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RH.Iot.DbAccess.RhSqlServerDbAccess.RhLogDbAccess
{
 
 /// <summary>
 /// LogDbHelper 數(shù)據(jù)庫(kù)日志操作
 /// 使用SqlServer做數(shù)據(jù)存儲(chǔ)
 /// 目前提供異常和普通日志記錄
 /// 方法待擴(kuò)充
 /// 如果遇到數(shù)據(jù)庫(kù)連接不上的問(wèn)題 日志模式回歸到txt模式(規(guī)劃中...)
 /// </summary>
 public class RhLogDbHelper
 {
  /// <summary>
  /// 模型
  /// </summary>
  public RhLogRecordDtoSqlServer rhLogRecordDtoSqlServer;
  /// <summary>
  /// 私有化數(shù)據(jù)訪問(wèn)器
  /// </summary>
  private RhLogRecordDtoDbAccessSqlServer DbAccess;
  /// <summary>
  /// 構(gòu)造器注入
  /// </summary>
  /// <param name="dbAccess">提供相應(yīng)的數(shù)據(jù)訪問(wèn)類</param>
  public RhLogDbHelper(RhLogRecordDtoDbAccessSqlServer dbAccess)
  {
   DbAccess = dbAccess;
   rhLogRecordDtoSqlServer = new RhLogRecordDtoSqlServer();
  }

  public void LogInfo(string msg) {

   rhLogRecordDtoSqlServer.DateTime = DateTime.Now.ToString();
   rhLogRecordDtoSqlServer.LevelName = "INFO";
   rhLogRecordDtoSqlServer.Message = msg;
   DbAccess.InsertAsync(rhLogRecordDtoSqlServer);

  }

  public void LogError(string msg,Exception ex)
  {
   rhLogRecordDtoSqlServer.DateTime = DateTime.Now.ToString();
   rhLogRecordDtoSqlServer.LevelName = "ERROR";
   rhLogRecordDtoSqlServer.Message = msg;
   rhLogRecordDtoSqlServer.Exception = ex.ToString();
   DbAccess.InsertAsync(rhLogRecordDtoSqlServer);
   

  }
 }
}

這些內(nèi)容不可直接復(fù)制

因?yàn)轫?xiàng)目引用不一樣

但可以參考

4.使用

 RhLogDbHelper rldh = new RhLogDbHelper(new RhLogRecordDtoDbAccessSqlServer());
   rldh.LogInfo("hhahaha");
   try
   {
    int a = 1;
    int b = a / 0;
   }
   catch (Exception ex)
   {

    rldh.LogError("除法異常",ex);
   }

5.結(jié)果

這只是很簡(jiǎn)單的一個(gè)日志數(shù)據(jù)庫(kù)

后面還要加上更多功能

到此這篇關(guān)于C#使用SqlServer作為日志數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C#用SqlServer作日志數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論