Para implementar registro de logs em uma aplicação .NET Core com Log4Net, siga estas etapas essenciais.
Crie um projeto .NET Core padrão e adicione os pacotes NuGet log4net e Microsoft.Extensions.Logging.Log4Net.AspNetCore via gerenciador de pacotes.
Configure o arquivo log4net.config no diretório do projeto com estrutura específica para difreentes níveis de log. Exemplo:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<level value="All" />
<appender-ref ref="CriticalAppender" />
<appender-ref ref="WarningAppender" />
<appender-ref ref="StandardAppender" />
</root>
<appender name="CriticalAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs/Critical/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd_critical.log" />
<maxSizeRollBackups value="50" />
<staticLogFileName value="false" />
<encoding value="utf-8" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<appender name="WarningAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs/Warnings/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd_warning.log" />
<maxSizeRollBackups value="50" />
<staticLogFileName value="false" />
<encoding value="utf-8" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="WARN" />
</filter>
</appender>
<appender name="StandardAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs/Standard/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd_standard.log" />
<maxSizeRollBackups value="50" />
<staticLogFileName value="false" />
<encoding value="utf-8" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
</log4net>
No arquivo Program.cs, integre o Log4Net configurando o builder de logging:
public static IHostBuilder BuildHost(string[] commandArgs) =>
Host.CreateDefaultBuilder(commandArgs)
.ConfigureLogging(builder =>
{
builder.AddLog4Net();
})
.ConfigureWebHostDefaults(host =>
{
host.UseStartup<ApplicationStartup>();
});
Para registrar logs em classes específicas, injete ILoggerFactory e crie instâncias:
private readonly ILogger _logger;
public HomeController(ILoggerFactory factory)
{
_logger = factory.CreateLogger<HomeController>();
}
Utilize métodos como LogInformation para registrar mensagens:
_logger.LogInformation("Processo de autenticação concluído com sucesso.");