Este site diz
Os madeireiros podem ter níveis atribuídos. Níveis são instâncias da classe log4net.Core.Level. Os seguintes níveis são definidos em ordem crescente de prioridade :
- TUDO
- DEPURAR
- INFO
- ADVERTIR
- ERRO
- FATAL
- FORA
DEBUG parece ter prioridade mais baixa e ERRO é maior.
Questão
- Se eu definir o exemplo Mín e Máx, DEBUG e ERRO, ele imprimirá tudo DEBUG, INFO, WARN e ERROR. Sem uso de filtro mínimo e máximo. Se eu especificar ERROR (nível de log = ERROR), incluirá DEBUG, INFO & WARN
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
Em vez de filtro mínimo e máximo. É possível configurar um nível e incluir todos os outros níveis abaixo dele para registro.
Exemplo - Defina o nível como Erro, incluindo DEBUG, INFO, WARN e ERROR. Isso é possível com o log4net?
Postando a configuração do log4net com base em um dos comentários:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections >
<log4net debug="true">
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<layout type="log4net.Layout.XMLLayout" /> -->
<param name="File" value="TestLog.log" />
<param name="AppendToFile" value="false" />
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="[START LOG] %newline" />
<footer type="log4net.Util.PatternString" value="[END LOG] %newline" />
<conversionPattern value="%d [%t] %-5p - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<logger name="log4NetExample">
<!-- <appender-ref ref="B" /> -->
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
levelMax
? Eu acho que isso deve incluir tudo abaixo dele, se você não especificar umlevelMin
Respostas:
Isso pode ajudar a entender o que é registrado em que nível Os loggers podem ter níveis atribuídos. Níveis são instâncias da classe log4net.Core.Level. Os seguintes níveis são definidos em ordem crescente de gravidade - nível de log.
Número de níveis registrados para cada nível de configuração:
fonte
Para a maioria dos aplicativos, você gostaria de definir um nível mínimo, mas não um nível máximo.
Por exemplo, ao depurar seu código, defina o nível mínimo como DEBUG e, em produção, defina-o como WARN.
fonte
<level value="ALL" />
para<level value="WARN" />
e você receberá apenas os avisos e erros.DEBUG mostrará todas as mensagens, INFO, além das mensagens DEBUG, e assim por diante.
Geralmente, usa-se INFO ou WARN. Isso depende da política da empresa.
fonte
Aqui está um código informando sobre a prioridade de todos os níveis do log4net:
fonte
Como outros observaram, geralmente é preferível especificar um nível mínimo de log para registrar esse nível e quaisquer outros mais graves que ele. Parece que você está apenas pensando nos níveis de log para trás.
No entanto, se você quiser um controle mais refinado sobre o registro de níveis individuais, poderá dizer ao log4net para registrar apenas um ou mais níveis específicos usando a seguinte sintaxe:
Ou para excluir um nível de log específico adicionando um nó "negar" ao filtro.
Você pode empilhar vários filtros juntos para especificar vários níveis. Por exemplo, se você deseja apenas os níveis WARN e FATAL. Se os níveis desejados forem consecutivos, o LevelRangeFilter é mais apropriado.
Documento de Referência: log4net.Filter.LevelMatchFilter
Se as outras respostas não fornecerem informações suficientes, espero que isso ajude você a obter o que deseja do log4net.
fonte
by adding a "deny" node to the filter
como?É verdade que a documentação oficial ( Apache log4net ™ Manual - Introdução ) afirma que existem os seguintes níveis ...
... mas estranhamente quando visualizo o conjunto log4net.dll, a classe selada v1.2.15.0 log4net.Core.Level vejo os seguintes níveis definidos ...
Uso o TRACE em conjunto com PostSharp OnBoundaryEntry e OnBoundaryExit há muito tempo. Eu me pergunto por que esses outros níveis não estão na documentação. Além disso, qual é a verdadeira prioridade de todos esses níveis?
fonte
Tente assim, funcionou para mim
Isso registra três tipos de erros - erro, informações e aviso
fonte