Criei um cenário simples usando o Log4net, mas parece que meus anexos não funcionam porque as mensagens não são adicionadas ao arquivo de log.
Adicionei o seguinte ao arquivo web.config:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\MyData\Desktop\LogFile.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
No arquivo ASAX global, adicionei:
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
e dentro do método Application_Start:
logger.Info("Starting the application...");
O que eu fiz errado?
AssemblyInfo
arquivo. Postado como resposta abaixo.Use esta página de perguntas frequentes: Perguntas freqüentes sobre o Apache log4net
Cerca de 3/4 do caminho abaixo, mostra como habilitar a depuração do log4net usando o rastreamento de aplicativo. Isso informará onde está o seu problema.
O básico é:
E você vê o rastreio na saída padrão
fonte
root
seção estava se referindo ao registrador errado !!Como o @AndreasPaulsson sugeriu, precisamos configurá-lo. Estou fazendo a configuração no
AssemblyInfo
arquivo. Eu especifico oconfiguration file name
aqui.fonte
Além disso, verifique se a opção "Copiar sempre" está selecionada para [log4net] .config
fonte
Verifique se o processo (conta) no qual o site está sendo executado tem privilégios para gravar no diretório de saída.
No IIS 7 e acima, isso é configurado no pool de aplicativos e normalmente é a AppPool Identity , que normalmente não terá permissão para gravar em todos os diretórios.
Verifique seus logs de eventos (aplicativo e segurança) para ver se alguma exceção foi lançada.
fonte
Inserir:
no fim de arquivo AssemblyInfo.cs
fonte
Para mim, mudei o local dos arquivos de log e foi somente quando alterei o nome do arquivo para outra coisa que ele começou novamente.
Parece que se já existe um arquivo de log com o mesmo nome, nada acontece.
Depois, renomeei o arquivo antigo e alterei o nome do arquivo de log na configuração novamente para o que era.
fonte
No meu caso, o log4net não estava registrando corretamente devido a ter um espaço no nome do meu projeto. Por que o mesmo código funcionou bem em um projeto diferente, mas não no novo. Espaços. Um espaço simples.
Portanto, tenha cuidado com os espaços nos nomes dos projetos. Eu aprendi minha lição.
fonte
No meu caso, eu tive que dar a
IIS_IUSRS
permissão de leitura / gravação para o arquivo de log.fonte
Verifique se o seguinte código de linha deve estar lá no arquivo AssemblyInfo.cs.
[assembly: log4net.Config.XmlConfigurator (ConfigFile = "Web.config", Watch = true)]
e também verifique esta linha no método Application_start ().
fonte
Seu arquivo de configuração parece correto. Em seguida, você deve registrar seu arquivo de configuração do Log4net no aplicativo. Então você pode usar o código abaixo:
Após o processo de registro, você pode ligar abaixo da definição para chamar o registrador:
fonte
Para mim, tive que mudar o Logger para um pacote Nuget. O código abaixo precisa ser adicionado ao projeto de pacote NuGet.
Consulte https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ para obter mais detalhes.
fonte
Existem algumas maneiras de usar o log4net. Achei útil enquanto procurava uma solução. A solução está descrita aqui: https://www.hemelix.com/log4net/
fonte