MST
星途 面试题库

面试题:C#中Serilog和NLog的基础集成

在C#项目中,如果要集成Serilog日志系统,简述其基本步骤,并说明如何配置日志输出到文件。如果是NLog,配置日志输出到数据库(假设使用SQL Server)又该怎么做?
50.7万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

集成Serilog日志系统基本步骤及配置日志输出到文件

  1. 安装Serilog NuGet包: 在Visual Studio的包管理器控制台中执行以下命令,安装Serilog及其文件输出相关包:
Install - Package Serilog
Install - Package Serilog.Sinks.File
  1. 初始化Serilog: 在Program.cs文件中,通常在创建Host之前初始化Serilog。例如:
using Serilog;

class Program
{
    static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
          .WriteTo.File("logs\\log-.txt", rollingInterval: RollingInterval.Day)
          .CreateLogger();

        try
        {
            Log.Information("Starting application...");
            // 创建Host等后续逻辑
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Application start-up failed");
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }
}

上述代码中,通过LoggerConfiguration配置日志输出到logs文件夹下按天滚动的日志文件。

配置NLog输出日志到SQL Server

  1. 安装NLog NuGet包: 在包管理器控制台执行:
Install - Package NLog
Install - Package NLog.Targets.MSSqlServer
  1. 配置NLog.config文件: 在项目根目录下的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">
    <targets>
        <target name="db" xsi:type="MSSqlServer"
                connectionString="Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATABASE_NAME;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD"
                commandText="INSERT INTO Logs(LogDate, Level, Message) VALUES(@logdate, @level, @message)">
            <parameter name="@logdate" layout="${date}" />
            <parameter name="@level" layout="${level}" />
            <parameter name="@message" layout="${message}" />
        </target>
    </targets>
    <rules>
        <logger name="*" minlevel="Trace" writeTo="db" />
    </rules>
</nlog>

上述配置中,假设数据库中有一张Logs表,包含LogDateLevelMessage字段。通过配置MSSqlServer目标,将日志信息插入到该表中。同时需要将YOUR_SERVER_NAMEYOUR_DATABASE_NAMEYOUR_USERNAMEYOUR_PASSWORD替换为实际的数据库连接信息。

  1. 初始化NLog: 在Program.cs文件中添加以下代码:
using NLog;
using NLog.Web;

class Program
{
    private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        var logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
        try
        {
            logger.Info("Starting application...");
            // 应用程序逻辑
        }
        catch (Exception ex)
        {
            logger.Error(ex, "Application start - up failed");
            throw;
        }
        finally
        {
            LogManager.Shutdown();
        }
    }
}

这样就完成了NLog配置日志输出到SQL Server的操作。