Extraia as configurações do log4net para um arquivo separado log4net.config, independente do web.config; carregue a configuração automaticamente por meio de um atributo de assembly.
1 Criar log4net.config
Coloque‑o na pasta raiz do site
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!--Salvar logs em arquivo txt-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--Pasta raiz dos logs: raiz do site /logs-->
<param name="File" value="logs\\" />
<!--Acrescentar conteúdo no final do arquivo-->
<param name="AppendToFile" value="true" />
<!--Manter no máximo 10 arquivos de backup-->
<param name="MaxSizeRollBackups" value="10" />
<!--Nome de arquivo gerado dinamicamente pela data-->
<param name="StaticLogFileName" value="false" />
<!--Estrutura de pastas logs/yyyy/MM/yyyy‑MM‑dd.log -->
<param name="DatePattern" value="yyyy\\MM\\yyyy-MM-dd".log"" />
<!--Rotação de arquivos de log baseada em data-->
<param name="RollingStyle" value="Date" />
<!--Formato de saída dos logs-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!--Logger raiz vinculado ao appender-->
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>Code language: HTML, XML (xml)
2 Inicializar no AssemblyInfo.cs
Abra o arquivo Properties/AssemblyInfo.cs do projeto e adicione o código abaixo no final:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]Code language: JSON / JSON with Comments (json)
ConfigFile="log4net.config":Caminho do arquivo de configuração separado (pasta raiz do site)Watch=true:Habilita recarregamento dinâmico. Alterações no log4net.config entram em vigor sem reiniciar o site
3 Código de chamada na página
using log4net;
public partial class Default : System.Web.UI.Page
{
// Criar instância do logger
public ILog log = LogManager.GetLogger("Logger da página Default.aspx");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("Log comum");
log.Error("Log de erro");
log.Debug("Mensagem de depuração");
}
}
Arquivo de configuração separado
Previous: Saída de logs no console