要在ASP.NET Core 2.2 MVC中使用NLog数据库目标,您需要执行以下步骤:
Install-Package NLog.Web.AspNetCore
"NLog": {
"autoReload": true,
"throwConfigExceptions": true,
"internalLogLevel": "Info",
"internalLogFile": "logs/internal-nlog.txt",
"extensions": {
"NLog.Targets.Database": {
"assembly": "NLog.Targets.Database"
}
},
"targets": {
"database": {
"type": "Database",
"dbProvider": "Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient",
"commandText": "INSERT INTO Log ([Message]) VALUES (@message);",
"parameters": [
{
"name": "@message",
"layout": "${message}"
}
],
"connectionString": "your connection string"
}
},
"rules": [
{
"logger": "*",
"minLevel": "Info",
"writeTo": "database"
}
]
}
在上面的配置中,我们定义了一个名为“database”的目标,它将日志消息插入到名为“Log”的表中。您需要根据您的数据库配置和表结构进行相应的更改。
ConfigureServices
方法中,添加以下代码:using NLog.Extensions.Logging;
using Microsoft.Extensions.Logging;
...
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(loggingBuilder =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddNLog();
});
// 其他配置
}
Configure
方法中,添加以下代码:using NLog.Web;
...
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseNLog();
// 其他配置
}
确保您的NLog配置文件(通常是NLog.config或NLog.xml)位于您的项目根目录下,并且已设置为“始终复制”。
在您的控制器或其他类中,使用ILogger接口进行日志记录。例如:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace YourNamespace.Controllers
{
public class HomeController : Controller
{
private readonly ILogger _logger;
public HomeController(ILogger logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Hello, NLog!");
return View();
}
}
}
通过执行以上步骤,您应该能够在ASP.NET Core 2.2 MVC应用程序中使用NLog数据库目标来记录日志。请记住,在使用数据库目标之前,您需要确保数据库连接字符串有效,并且目标表已创建。
希望这可以帮助到您!