成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

NLog 將日志記錄到 SQL Server 數據庫

開發 SQL Server
本文將詳細介紹如何配置NLog,以便將日志記錄到SQL Server數據庫中,并給出具體的例子代碼。

NLog 是一個流行的.NET日志記錄框架,它提供了靈活的配置選項和強大的功能,使得開發者能夠方便地記錄和管理應用程序的日志信息。本文將詳細介紹如何配置NLog,以便將日志記錄到SQL Server數據庫中,并給出具體的例子代碼。

環境準備

1. 創建數據庫和表

首先,你需要在SQL Server中創建一個數據庫和日志表。以下是一個簡單的日志表創建示例:

USE [YourDatabaseName]
GO

CREATE TABLE [dbo].[Sys_Logs](
    [ID] [BIGINT] IDENTITY(1,1) NOT NULL,
    [Logger] [NVARCHAR](250) NULL,
    [Level] [NVARCHAR](50) NULL,
    [Host] [NVARCHAR](250) NULL,
    [Url] [NVARCHAR](500) NULL,
    [Method] [NVARCHAR](50) NULL,
    [Cookie] [NVARCHAR](500) NULL,
    [UserAgent] [NVARCHAR](500) NULL,
    [QueryString] [NVARCHAR](MAX) NULL,
    [Body] [NVARCHAR](MAX) NULL,
    [Message] [NVARCHAR](MAX) NULL,
    [CreateTime] [DATETIME] NOT NULL,
    [IPAddress] [NVARCHAR](50) NULL,
    [Elapsed] [BIGINT] NULL,
    [UserId] [BIGINT] NULL,
    [UserName] [NVARCHAR](100) NULL,
    [ProjectName] [NVARCHAR](100) NULL,
    CONSTRAINT [PK_Sys_Logs] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

2. 安裝NLog相關NuGet包

在你的.NET項目中,通過NuGet包管理器安裝NLog及其相關包。通常你需要安裝以下包:

  • NLog
  • NLog.Database(可選,取決于你的具體需求)
  • NLog.Web.AspNetCore(如果你的項目是基于ASP.NET Core的)
  • Microsoft.Data.SqlClient(用于連接到SQL Server)
  • 配置NLog

3. 創建并配置nlog.config文件

在項目中添加一個XML文件,命名為nlog.config,并配置如下:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Error"
      internalLogFile="c:\temp\nlog-internal.log">

  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>

  <targets>
    <target name="database" xsi:type="Database" dbProvider="System.Data.SqlClient.SqlConnection, System.Data"
            connectionString="Server=127.0.0.1;Database=YourDatabaseName;User ID=yourUser;Password=yourPassword;">
      <commandText>
        INSERT INTO Sys_Logs (Logger, Level, Host, Url, Method, Cookie, UserAgent, QueryString, Body, Message, CreateTime, IPAddress, Elapsed, UserId, UserName, ProjectName)
        VALUES (@Logger, @Level, @Host, @Url, @Method, @Cookie, @UserAgent, @QueryString, @Body, @Message, @CreateTime, @IPAddress, @Elapsed, @UserId, @UserName, 'YourProjectName');
      </commandText>
      <parameter name="@Logger" layout="${logger}" />
      <parameter name="@Level" layout="${uppercase:${level}}" />
      <parameter name="@Host" layout="${aspnet-request-host}" />
      <parameter name="@Url" layout="${aspnet-request-url:IncludeScheme=false:IncludeHost=false}" />
      <parameter name="@Method" layout="${aspnet-request-method}" />
      <parameter name="@Cookie" layout="${aspnet-request-headers:HeaderNames=SYSTOKEN:ValuesOnly=true}" />
      <parameter name="@UserAgent" layout="${aspnet-request-useragent}" />
      <parameter name="@QueryString" layout="${aspnet-request-querystring:OutputFormat=JSON}" />
      <parameter name="@Body" layout="${event-properties:item=RequestBody}" />
      <parameter name="@Message" layout="${message}" />
      <parameter name="@CreateTime" layout="${longdate}" />
      <parameter name="@IPAddress" layout="${aspnet-request-ip}" />
      <parameter name="@Elapsed" layout="${event-properties:item=Elapsed}" />
      <parameter name="@UserId" layout="${event-properties:item=UserId}" />
      <parameter name="@UserName" layout="${event-properties:item=UserName}" />
    </target>
    <!-- 其他目標配置(如文件、控制臺等) -->
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="database" />
  </rules>
</nlog>

注意:根據你的實際需求,你可能需要調整日志表字段、連接字符串、日志級別等配置。

4. 在代碼中配置NLog

在你的.NET Core或.NET 5/6/7項目中,通常需要在Program.cs或Startup.cs中配置NLog,以便在應用程序啟動時加載nlog.config配置。

以.NET 6為例,你可以在Program.cs中添加如下配置:

using NLog.Web;

var builder = WebApplication.CreateBuilder(args);

// 配置NLog
builder.Logging.ClearProviders();
builder.Host.UseNLog();  // 確保這行代碼在builder.Build()之前調用

// 加載nlog.config配置,并可選地設置連接字符串變量
NLogBuilder.ConfigureNLog("nlog.config");
LogManager.Configuration.Variables["connectionString"] = builder.Configuration.GetConnectionString("DefaultConnection");

// 其他配置...

var app = builder.Build();

// 配置全局異常捕獲等(可選)
// ...

app.Run();

注意:如果你的項目是基于ASP.NET Core的,并且你使用了NLog.Web.AspNetCore包,那么builder.Host.UseNLog();這行代碼是必須的,它確保了NLog能夠集成到ASP.NET Core的日志系統中。

日志記錄

在應用程序的任何地方,你都可以通過注入ILogger接口或使用LogManager來記錄日志。以下是一個簡單的日志記錄示例:

using Microsoft.Extensions.Logging;

public class MyService
{
    private readonly ILogger<MyService> _logger;

    public MyService(ILogger<MyService> logger)
    {
        _logger = logger;
    }

    public void DoSomething()
    {
        _logger.LogInformation("Doing something...");

        // 假設這里發生了一個異常
        try
        {
            // 你的代碼邏輯
            throw new InvalidOperationException("Something went wrong!");
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "An error occurred");
        }
    }
}

總結

通過上述步驟,你可以成功地將NLog配置為將日志記錄到SQL Server數據庫中。這種配置方式提供了靈活性和強大的功能,使得開發者能夠方便地監控和管理應用程序的日志信息。在實際應用中,根據項目的具體需求,你可能需要調整日志表結構、NLog配置以及日志記錄邏輯。

責任編輯:趙寧寧 來源: 后端Q
相關推薦

2011-07-08 14:54:38

系統監視器 SQL Server

2011-04-01 17:05:44

SQL Server數日志

2024-04-02 08:21:45

數據庫日志SQL

2010-07-07 17:05:39

SQL Server數

2010-07-15 17:28:50

SQL Server

2011-08-09 17:24:21

SQL Server 數據庫日志

2011-04-01 09:31:01

SQL Server數據庫

2011-04-01 09:17:36

SQL Server數據庫

2011-04-06 17:30:41

SQL ServerSQL

2011-03-21 17:25:08

SQL Server數重復記錄

2021-05-17 06:57:34

SQLServer數據庫

2010-07-08 11:05:14

SQL Server數

2011-07-25 12:56:44

SSMAOracle數據庫SQL Server

2021-02-18 07:46:07

日志框架

2010-07-01 12:44:52

SQL Server數

2011-07-15 15:55:50

SQL Server日附加數據庫

2010-09-02 11:56:21

SQL刪除

2011-03-28 14:43:40

SQL Server 啟用日志記錄

2010-06-28 09:43:05

SQL Server數

2010-06-30 11:16:50

SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区高清不卡 | 免费观看av网站 | 91社影院在线观看 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 国色天香综合网 | 在线播放第一页 | 粉嫩av在线| 久久av一区二区 | 青青草这里只有精品 | 精品成人在线观看 | 91精品久久久久久久 | 久久久久久久久综合 | 欧美在线 | 天天夜夜操 | 成人午夜在线 | 99re99| 国产在线一区二区三区 | 中文字幕亚洲视频 | 亚洲va欧美va天堂v国产综合 | 久久久这里只有17精品 | 精品一区二区在线观看 | 日本h片在线观看 | 久久国产精品免费视频 | 日本免费一区二区三区 | 午夜av成人 | 中文字幕1区 | 中文字幕国产精品 | 久久极品 | 国产乱一区二区三区视频 | 成人不卡视频 | 国产精品久久久亚洲 | 日日夜夜影院 | 99国产在线| 三级黄色片在线 | 免费久久精品视频 | 国产精品成人一区二区 | 青青草社区 | 日韩不卡在线观看 | 亚洲第一黄色网 | 亚洲97 | 粉嫩一区二区三区国产精品 |