Log4Net configurarea nivelului jurnalului

Cum pot face jurnalele despre nivelurile de jurnale de nivel log? Este chiar posibil? Puteți seta doar un prag?

Aceasta este ceea ce am și înregistrează informațiile și mai sus, așa cum m-aș aștepta. Există ceva ce pot face pentru a face doar informații despre jurnal?


  
  

0
fr hi bn

5 răspunsuri

În definiția apendicului, cred că puteți face așa ceva:


    
        
        
    
    ...

0
adăugat
De fapt, dacă capturați doar un nivel, puteți folosi următorul cod în loc de codul LevelRange:
adăugat autor IAmTimCorey, sursa

Dacă doriți să efectuați dinamic încercați acest lucru:

using System;
using System.Collections.Generic;
using System.Text;
using log4net;
using log4net.Config;
using NUnit.Framework;

namespace ExampleConsoleApplication
{
  enum DebugLevel : int
  { 
    Fatal_Msgs = 0 , 
    Fatal_Error_Msgs = 1 , 
    Fatal_Error_Warn_Msgs = 2 , 
    Fatal_Error_Warn_Info_Msgs = 3 ,
    Fatal_Error_Warn_Info_Debug_Msgs = 4 
  }

  class TestClass
  {
    private static readonly ILog logger = LogManager.GetLogger(typeof(TestClass));

    static void Main ( string[] args )
    {
      TestClass objTestClass = new TestClass ();

      Console.WriteLine ( " START " );

      int shouldLog = 4; //CHANGE THIS FROM 0 TO 4 integer to check the functionality of the example
      //0 -- prints only FATAL messages 
      //1 -- prints FATAL and ERROR messages 
      //2 -- prints FATAL , ERROR and WARN messages 
      //3 -- prints FATAL  , ERROR , WARN and INFO messages 
      //4 -- prints FATAL  , ERROR , WARN , INFO and DEBUG messages 

      string srtLogLevel = String.Empty; 
      switch (shouldLog)
      {
        case (int)DebugLevel.Fatal_Msgs :
          srtLogLevel = "FATAL";
          break;
        case (int)DebugLevel.Fatal_Error_Msgs:
          srtLogLevel = "ERROR";
          break;
        case (int)DebugLevel.Fatal_Error_Warn_Msgs :
          srtLogLevel = "WARN";
          break;
        case (int)DebugLevel.Fatal_Error_Warn_Info_Msgs :
          srtLogLevel = "INFO"; 
          break;
        case (int)DebugLevel.Fatal_Error_Warn_Info_Debug_Msgs :
          srtLogLevel = "DEBUG" ;
          break ;
        default:
          srtLogLevel = "FATAL";
          break;
      }

      objTestClass.SetLogingLevel ( srtLogLevel );


      objTestClass.LogSomething ();


      Console.WriteLine ( " END HIT A KEY TO EXIT " );
      Console.ReadLine ();
    } //eof method 

    /// 
    /// Activates debug level 
    /// 
    /// http://geekswithblogs.net/rakker/archive/2007/08/22/114900.aspx
    private void SetLogingLevel ( string strLogLevel )
    {
     string strChecker = "WARN_INFO_DEBUG_ERROR_FATAL" ;

      if (String.IsNullOrEmpty ( strLogLevel ) == true || strChecker.Contains ( strLogLevel ) == false)
        throw new Exception ( " The strLogLevel should be set to WARN , INFO , DEBUG ," );



      log4net.Repository.ILoggerRepository[] repositories = log4net.LogManager.GetAllRepositories ();

      //Configure all loggers to be at the debug level.
      foreach (log4net.Repository.ILoggerRepository repository in repositories)
      {
        repository.Threshold = repository.LevelMap[ strLogLevel ];
        log4net.Repository.Hierarchy.Hierarchy hier = (log4net.Repository.Hierarchy.Hierarchy)repository;
        log4net.Core.ILogger[] loggers = hier.GetCurrentLoggers ();
        foreach (log4net.Core.ILogger logger in loggers)
        {
          ( (log4net.Repository.Hierarchy.Logger)logger ).Level = hier.LevelMap[ strLogLevel ];
        }
      }

      //Configure the root logger.
      log4net.Repository.Hierarchy.Hierarchy h = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository ();
      log4net.Repository.Hierarchy.Logger rootLogger = h.Root;
      rootLogger.Level = h.LevelMap[ strLogLevel ];
    }

    private void LogSomething ()
    {
      #region LoggerUsage
      DOMConfigurator.Configure (); //tis configures the logger 
      logger.Debug ( "Here is a debug log." );
      logger.Info ( "... and an Info log." );
      logger.Warn ( "... and a warning." );
      logger.Error ( "... and an error." );
      logger.Fatal ( "... and a fatal error." );
      #endregion LoggerUsage

    }
  } //eof class 
} //eof namespace 

Configurarea aplicației:

<?xml version="1.0" encoding="utf-8" ?>

    
        

Referințele din fișierul csproj:


  False
  ..\..\..\Log4Net\log4net-1.2.10\bin\net\2.0\release\log4net.dll


0
adăugat
Nu ar fi mai bine să se definească DebugLevel cu atributul [Flags] și să se utilizeze operatori de biți pentru a mapa mai multe steaguri într-o singură valoare enum (de exemplu Fatal = 1, Error = 2, Warn = 4, FatalError = Fatal Error, FatalErrorWarn = FatalError | Avertisment)?
adăugat autor nicodemus13, sursa

Yes. It is done with a filter on the appender.

Aici este configurația appender pe care o folosesc în mod obișnuit, limitată doar la nivelul INFO.


  
  
  
  
       <!--A maximum number of backup files when rolling on date/time boundaries is not supported. -->
  
  
  
        
  

  
        
        
  
    
0
adăugat

Utilizați pragul .

De exemplu:

   
        <threshold value="WARN"/>
        
        
        
        
        
        
        
            
            
            
        
    
    
        <threshold value="ERROR"/>
        
            
        
    
    
        <threshold value="INFO"/>
        
            
        
    

În acest exemplu, toate INFO și cele de mai sus sunt trimise la Consola, toate WARN-urile sunt trimise la fișiere, iar erorile sunt trimise în jurnalul de evenimente.

0
adăugat
Ce va arata elementul in configuratia de mai sus. Elementul nu este necesar.
adăugat autor MARKAND Bhatt, sursa
cu "prag" puteți face același lucru cu filtrul, într-un mod mai ușor.
adăugat autor Javier Sanchez, sursa

you can use log4net.Filter.LevelMatchFilter. other options can be found at log4net tutorial - filters

în secțiunea ur appender adăugați


    
    

acceptarea la potrivirea implicită este adevărată, astfel încât u să poată lăsa afară, dar dacă u setați-o la falsa u poate filtra filtrele log4net

0
adăugat