面试题答案
一键面试集成Serilog日志系统基本步骤及配置日志输出到文件
- 安装Serilog NuGet包: 在Visual Studio的包管理器控制台中执行以下命令,安装Serilog及其文件输出相关包:
Install - Package Serilog
Install - Package Serilog.Sinks.File
- 初始化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
- 安装NLog NuGet包: 在包管理器控制台执行:
Install - Package NLog
Install - Package NLog.Targets.MSSqlServer
- 配置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
表,包含LogDate
、Level
、Message
字段。通过配置MSSqlServer
目标,将日志信息插入到该表中。同时需要将YOUR_SERVER_NAME
、YOUR_DATABASE_NAME
、YOUR_USERNAME
、YOUR_PASSWORD
替换为实际的数据库连接信息。
- 初始化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的操作。