NLog: Configuração programática
O artigo NLog: logging mais fácil faz uma apresentação desta plataforma e exemplifica a sua utilização. A configuração pode ser feita tanto por ficheiro .config como programaticamente.
Aqui exemplifica-se como usar código (C#) para fazer a configuração do NLog.
As mensagens de diagnóstico têm como destino uma Base de Dados SQL Server usando uma Stored Procedure para o efeito recorrendo a um wrapper para escrita assíncrona.
Invocação
O NLog 4.5 introduz o log estruturado - também conhecido por log semântico. Para mais acerca de como usar o log estruturado, ler aqui.
Informação detalhada acerca da renderização das propriedades do evento de log aqui.
Artigo de interesse: NLog vs log4net vs Serilog: Compare .NET Logging Frameworks pela equipa Stackify
Aqui exemplifica-se como usar código (C#) para fazer a configuração do NLog.
As mensagens de diagnóstico têm como destino uma Base de Dados SQL Server usando uma Stored Procedure para o efeito recorrendo a um wrapper para escrita assíncrona.
public static class MyLog
{
public static ILogger Logger = LogManager.GetCurrentClassLogger();
private static readonly string _connect = "data source=(localdb)\MSSQLLocalDB;initial catalog=Pluto_Queries;integrated security=True;MultipleActiveResultSets=True;";
public static void SetDatabaseTarget()
{
SetTargetConfiguration();
LogManager.ConfigurationReloaded += (sender, e) =>
{
//Re apply if config reloaded
SetTargetConfiguration();
};
}
private static void SetTargetConfiguration()
{
var _config = LogManager.Configuration;
var _dbTarget = new DatabaseTarget("sqlserver")
{
DBProvider = @"System.Data.SqlClient",
ConnectionString = _connect,
CommandType = System.Data.CommandType.StoredProcedure,
CommandText = @"[dbo].[Write_Info_Pluto]",
};
_dbTarget.Parameters.Add(new DatabaseParameterInfo { Name = "@Path", Layout = "${event-properties:path}" });
_dbTarget.Parameters.Add(new DatabaseParameterInfo { Name = "@FileName", Layout = "${event-properties:fileName}" });
_dbTarget.Parameters.Add(new DatabaseParameterInfo { Name = "@OnDate", Layout = "${date}" });
var _asyncTarget = new AsyncTargetWrapper("async-db", _dbTarget);
_config.AddTarget(_asyncTarget);
_config.AddRuleForOneLevel(LogLevel.Info, _asyncTarget);
LogManager.Configuration = _config;
LogManager.ReconfigExistingLoggers();
}
}
Invocação
MyLog.Logger.Info("Read directory {path}, file {fileName} ", "<nome da directoria>", "<nome do ficheiro>");
O NLog 4.5 introduz o log estruturado - também conhecido por log semântico. Para mais acerca de como usar o log estruturado, ler aqui.
Informação detalhada acerca da renderização das propriedades do evento de log aqui.
Artigo de interesse: NLog vs log4net vs Serilog: Compare .NET Logging Frameworks pela equipa Stackify
Licença CC BY-SA 4.0
Silvia Pinhão Lopes, 23.10.19
Sem comentários: