NLog 5.3.4 не записывает журналы в таблицу SQL ServerC#

Место общения программистов C#
Ответить
Anonymous
 NLog 5.3.4 не записывает журналы в таблицу SQL Server

Сообщение Anonymous »

Используя веб-API ASP.NET Core 8, я попытался реализовать ведение журнала в таблице SQL Server.
Используемая версия SQL Server:

Код: Выделить всё

Microsoft SQL Server 2019 (RTM-GDR) (KB5046859) - 15.0.2130.3 (X64)
Oct 18 2024 15:25:23
Copyright (C) 2019 Microsoft Corporation
Express Edition (64-bit) on Windows 10 Pro 10.0  (Build 19045: ) (Hypervisor)
NLog записывает данные в текстовый файл, но НЕ создает записи в таблице SQL Server. Не могу понять почему.
Я использовал следующие ссылки:

Код: Выделить всё

Program.cs:
using NLog;
using NLog.Web;

namespace Api
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
var logger = NLog.LogManager.Setup()
.LoadConfigurationFromXml("nlog.config")
.GetCurrentClassLogger();
try
{
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Logging.ClearProviders();
builder.Logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Information);
builder.Host.UseNLog();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
}
catch (Exception exception)
{
// NLog: catch setup errors
logger.Error(exception, "Stopped program because of exception");
throw;
}
finally
{
// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
NLog.LogManager.Shutdown();
}
}
}
}

Код: Выделить всё

nlog.config:








commandText="insert into dbo.Log (Logged, Level, Message, Logger, Exception)
values (@Logged,@Level,@Message,@Logger,@Exception);"




















Код: Выделить всё

HomeController:
using Microsoft.AspNetCore.Mvc;

namespace Api.Controllers
{
[ApiController]
[Route("[controller]")]
public class HomeController : ControllerBase
{
private readonly ILogger _logger;

public HomeController(ILogger logger)
{
_logger = logger;
}

[HttpGet(Name = "GetHome")]
public string Get()
{
_logger.LogInformation("GetHome was called");
return "Success";
}
}
}

Код: Выделить всё

Logfile.txt
, который показывает созданные журналы:
Изображение
< /p>
Моя таблица базы данных:
Изображение

Код T-SQL для создания таблицы журналов:

Код: Выделить всё

-- Note I allowed nulls in all columns except the identity
-- to ensure that the non null constraint was not causing the issue.

CREATE TABLE [dbo].[Log]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[MachineName] [nvarchar](50) NULL,
[Logged] [datetime] NULL,
[Level] [nvarchar](50) NULL,
[Message] [nvarchar](max) NULL,
[Logger] [nvarchar](250) NULL,
[Exception] [nvarchar](max) NULL,

CONSTRAINT [PK_dbo.Log]
PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Пакеты Nuget:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/792 ... rver-table
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»