Arquitecto PDF
Arquitecto PDF
Arquitecto PDF
1
ARQUITECTO DESARROLLADOR WEB
NET CORE 2.2
Existen muchos beneficios de la razón por la que se implementa un log, estas son algunas:
1. Visibilidad nula de errores para los equipos de desarrollo y/o sistemas . En otras palabras, será difícil
detectar problemas y solucionarlos con rapidez.
2. Metodología de trabajo no estandarizada , es decir, cada usuario aplicará su propia forma basada en
su experiencia.
3. Accesos e información descentralizada que causará dificultades para trabajar con estos datos.
4. Incremento del tiempo de respuesta ante una incidencia que afectará a niveles de servicio o SLAs (en
relación con el nivel de calidad).
5. Prevenir fugas de información, así como comportamientos inadecuados que causen errores.
6. Entre otros.
namespace BSOFT.Log.Logging
{
public class Log4NetLogger : ILogger
{
log4net.ILog _log = null;
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception,
string> formatter)
{
if (!IsEnabled(logLevel))
{
return;
}
if (formatter == null)
{
throw new ArgumentException(nameof(formatter));
}
private void WriteMessage(LogLevel logLevel, int eventId, string message, Exception exception)
{
var evtId = eventId == 0 ? string.Empty : $" [{eventId}]";
switch (logLevel)
{
case LogLevel.Trace:
case LogLevel.Debug:
_log.Debug($"{message}{evtId}", exception);
break;
case LogLevel.Information:
_log.Info($"{message}{evtId}", exception);
break;
case LogLevel.Warning:
namespace BSOFT.Log.Logging
{
public class Log4NetLoggerProvider : ILoggerProvider
{
private string _configFileName = string.Empty;
private readonly ConcurrentDictionary<string, Log4NetLogger> _loggers = new ConcurrentDictionary<string,
Log4NetLogger>();
if (log4net.LogManager.GetCurrentLoggers(repository.Name).Count() == 0)
{
log4net.Config.XmlConfigurator.Configure(repository, new FileInfo(_configFileName));
}
using Microsoft.Extensions.Logging;
namespace BSOFT.Log.Logging
{
public static class Log4NetLoggerFactoryExtensions
{
public static ILoggingBuilder AddLog4Net(this ILoggingBuilder builder)
{
builder.SetMinimumLevel(LogLevel.Trace);
builder.AddProvider(CreateLog4NetProvider(null));
return builder;
}
return builder;
}
return factory;
}
return factory;
<appender name="rollingFileDateAppender"
type="log4net.Appender.RollingFileAppender">
<file value="log4net.log"/>
<appendToFile value="true" />
<root>
<level value="ALL" />
<appender-ref ref="coloredConsoleAppender"/>
<appender-ref ref="rollingFileDateAppender"/>
</root>
</log4net>