Log4Net 로그 설정[추가 소스 다운로드]

18673 단어 Log4Net로그 설정
전술한
정원 에는 많은 사람들 이 log 4 net 라 는 오픈 소스 로그 기록 컨트롤 에 대해 많은 소 개 를 하고 있다.여기 서 개인 적 으로 다시 한 번 정 리 를 하고 앞으로 도움 이 되 기 를 바 랍 니 다.필요 할 때 직접 사용 하여 자 료 를 조회 하 는 시간 을 줄 일 수 있 습 니 다.로그 4 net 를 이용 하여 파일,콘 솔,Windows 이벤트 로그 와 데이터베이스 에 로그 정 보 를 편리 하 게 기록 할 수 있 으 며,기록 할 로그 단 계 를 기록 할 수 있 습 니 다.기록 할 로그 유형 은 FATAL(치 명 적 오류),ERROR(일반 오류),WARN(경고),INFO(일반 정보),DEBUG(디 버 깅 정보)를 포함 합 니 다.log4net 는 Logger(기록 기),Repository(라 이브 러 리),Appender(부착 기),Layout(레이아웃)등 네 가지 주요 구성 요소 가 있 습 니 다.
준비 작업:
1.log4net.dll 다운로드 주소[http://logging.apache.org/log4net/download_log4net.cgi]
파일 다운로드:log4net-1.2.13-bin-newkey.zip.압축 해제 에 대응 하 는 net 버 전 을 선택 하여 log4 net.dll 을 찾 습 니 다.

2.프로젝트 에서 log4net.dll 을 참조 합 니 다.

인 스 턴 스 코드
준비 작업 이 끝 난 후에 다음 인 스 턴 스 코드 를 보 겠 습 니 다.먼저 프로젝트 에 폴 더 LogConfig 를 만 듭 니 다.로그 4 net 에 관 한 설정 파일 과 클래스 를 이 폴 더 에 넣 으 십시오.
WEB 사이트 의 경우 프로젝트 LogConfig 폴 더 에 Log4Net.config 설정 파일 을 만 듭 니 다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <configSections>
  <!--       :log4net type:    ,    (log4net.dll)-->
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 </configSections>

 <log4net>
  <!--        -->
  <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">
   <!--        -->
   <file value="C:/log4net/"/>
   <!--       ,   true,      -->
   <appendToFile value="true"/>
   <RollingStyle value="Date"/>
   <!--     ,         ,               ,   -->
   <DatePattern value="INFO_yyyyMMdd&quot;.log&quot;" />
   <!--          -->
   <StaticLogFileName value="false"/>
   <!--          -->
   <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
   <!--  (                 )-->
   <layout type="log4net.Layout.PatternLayout">
    <!--
      %m(message):       , ILog.Debug(…)        
      %n(new line):   
      %d(datetime):            
      %r(run time):                       
      %t(thread id):         ID 
      %p(priority):          , DEBUG、INFO、WARN…  
      %c(class):         ,  :
      %L:          
      %F:           
      %-  :         ,    ,      
     -->
    <Header value="[Header]&#13;&#10;"/>
    <Footer value="[Footer]&#13;&#10;"/>
    <!--  -->
    <ConversionPattern value="    :%date   ID:[%thread]     :%-5level    :%logger property:[%property{NDC}] -     :%message%newline" />
   </layout>
  </appender>

  <appender name="Log4Net_ERROR" type="log4net.Appender.RollingFileAppender">
   <file value="C:/log4net/"/>
   <appendToFile value="true"/>
   <RollingStyle value="Date"/>
   <DatePattern value="ERROR_yyyyMMdd&quot;.log&quot;" />
   <StaticLogFileName value="false"/>
   <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
   <layout type="log4net.Layout.PatternLayout">
    <Header value="[Header]&#13;&#10;"/>
    <Footer value="[Footer]&#13;&#10;"/>
    <!--  -->
    <ConversionPattern value="    :%date   ID:[%thread]     :%-5level    :%logger property:[%property{NDC}] -     :%message%newline" />
   </layout>
  </appender>

  <root>
   <level value="DEBUG"/>
   <appender-ref ref="Log4Net_ERROR" />

   <level value="INFO"/>
   <appender-ref ref="Log4Net_INFO" />
  </root>

 </log4net>

</configuration>
프로필 을 다 쓴 후에 Helper 클래스 를 쓰 겠 습 니 다.프로젝트 에 LogHelper.cs 라 는 클래스 파일 을 만 듭 니 다.

using log4net;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;

//  log4net   config         
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"LogConfig\Log4Net.config", Watch = true)]
namespace Project.Log4.Net.LogConfig
{
  /// <summary>
  ///      
  /// </summary>
  public class LogHelper
  {
    private static readonly ConcurrentDictionary<Type, ILog> _loggers = new ConcurrentDictionary<Type, ILog>();

    /// <summary>
    ///      
    /// </summary>
    /// <param name="source"></param>
    /// <returns></returns>
    private static ILog GetLogger(Type source)
    {
      if (_loggers.ContainsKey(source))
      {
        return _loggers[source];
      }
      else
      {
        ILog logger = LogManager.GetLogger(source);
        _loggers.TryAdd(source, logger);
        return logger;
      }
    }

    /* Log a message object */

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Debug(object source, string message)
    {
      Debug(source.GetType(), message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="ps"></param>
    public static void Debug(object source, string message, params object[] ps)
    {
      Debug(source.GetType(), string.Format(message, ps));
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Debug(Type source, string message)
    {
      ILog logger = GetLogger(source);
      if (logger.IsDebugEnabled)
        logger.Debug(message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Info(object source, object message)
    {
      Info(source.GetType(), message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Info(Type source, object message)
    {
      ILog logger = GetLogger(source);
      if (logger.IsInfoEnabled)
        logger.Info(message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Warn(object source, object message)
    {
      Warn(source.GetType(), message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Warn(Type source, object message)
    {
      ILog logger = GetLogger(source);
      if (logger.IsWarnEnabled)
        logger.Warn(message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Error(object source, object message)
    {
      Error(source.GetType(), message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Error(Type source, object message)
    {
      ILog logger = GetLogger(source);
      if (logger.IsErrorEnabled)
        logger.Error(message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Fatal(object source, object message)
    {
      Fatal(source.GetType(), message);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    public static void Fatal(Type source, object message)
    {
      ILog logger = GetLogger(source);
      if (logger.IsFatalEnabled)
        logger.Fatal(message);
    }

    /* Log a message object and exception */

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Debug(object source, object message, Exception exception)
    {
      Debug(source.GetType(), message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Debug(Type source, object message, Exception exception)
    {
      GetLogger(source).Debug(message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Info(object source, object message, Exception exception)
    {
      Info(source.GetType(), message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Info(Type source, object message, Exception exception)
    {
      GetLogger(source).Info(message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Warn(object source, object message, Exception exception)
    {
      Warn(source.GetType(), message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Warn(Type source, object message, Exception exception)
    {
      GetLogger(source).Warn(message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Error(object source, object message, Exception exception)
    {
      Error(source.GetType(), message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Error(Type source, object message, Exception exception)
    {
      GetLogger(source).Error(message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Fatal(object source, object message, Exception exception)
    {
      Fatal(source.GetType(), message, exception);
    }

    /// <summary>
    ///     
    /// </summary>
    /// <param name="source"></param>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Fatal(Type source, object message, Exception exception)
    {
      GetLogger(source).Fatal(message, exception);
    }
  }

}
설정 과 Helper 클래스 가 있 습 니 다.이제 호출 방법 을 살 펴 보 겠 습 니 다.프로젝트 에 index.aspx 페이지 만 들 기

LogHelper.Debug(this, "Debug");
LogHelper.Error(this, "Error");
LogHelper.Fatal(this, "Fatal");
LogHelper.Info(this, "Info");
LogHelper.Warn(this, "Warn");
로그 생 성 형식[매일 파일]:

매개 변수 설명
Log4 Net.config 는 로그 출력 매개 변수 파일 을 설정 합 니 다.이 파일 에서 많은 설정 노드 를 볼 수 있 습 니 다.크게 두 개의 큰 클래스 로 나 눌 수 있 습 니 다.이 노드 들 이 무슨 뜻 인지 봅 시다.
1:................................................................................
2:...:log4net 를 사용 한 설정 정 보 는 모두 여기에 설정 되 어 있 습 니 다.중점적으로 보면 모두 설정 정보 가 있 는데 이 큰 노드 는 전체적으로 두 가지 로 나 눌 수 있다.
2.1:출력 정보 설정 노드를 정의 합 니 다.
2.2:로 그 를 정의 하 는 출력 매체.
배치 의 전체적인 구 조 는 바로 이렇다.다음은 상세 한 내용 을 살 펴 보 자.
appender:로그 출력 방식 을 결정 합 니 다.(INFO,ERROR 등 여러 노드 를 설정 할 수 있 습 니 다.)
주로 다음 몇 가 지 를 포함한다.
1 AnsiColorTerminalAppender:ANSI 창 터미널 에 높 은 밝기 의 로그 이 벤트 를 기록 합 니 다.
2 AspNetTrace Appender:asp.net 의 Trace 방식 으로 기 록 된 로 그 를 볼 수 있 습 니 다.
3 Buffering Forwarding Appender:하위 Appenders 로 출력 하기 전에 로그 이 벤트 를 캐 시 합 니 다.
4 Console Appender:로 그 를 콘 솔 에 출력 합 니 다.
5 EventLogAppender:로 그 를 Windows 이벤트 로그 에 기록 합 니 다.
6 FileAppender:로 그 를 파일 에 기록 합 니 다.
7 LocalSyslogAppender:로 그 를 local syslog service(UNIX 환경 에서 만 사용)에 기록 합 니 다.
8 Memory Appender:메모리 버퍼 에 로 그 를 저장 합 니 다.
9 NetSend Appender:Windows Messenger service 에 로 그 를 출력 합 니 다.이 로그 정 보 는 사용자 터미널 대화 상자 에 표 시 됩 니 다.
10 Remote Syslog Appender:UDP 네트워크 프로 토 콜 을 통 해 로 그 를 Remote syslog service 에 기록 합 니 다.
11 Remoting Appender:.NET Remoting 을 통 해 로 그 를 원 격 수신 단 에 기록 합 니 다.
12 RollingFileAppender:로 그 를 스크롤 파일 형식 으로 파일 에 기록 합 니 다.(인 스 턴 스 코드 에서 이 형식 을 사용 합 니 다)
13 SmtpAppender:메 일 에 로 그 를 기록 합 니 다.
14.TraceAppender:로 그 를.NET trace 시스템 에 기록 합 니 다.
15 UdpAppender:로그 connectionless UDP datagrams 형식 을 원 격 숙주 나 UdpClient 형식 으로 방송 합 니 다.
위 에서 제공 하 는 방식 에서 출력 파일,컨트롤 러,윈도 이벤트 로그 와 데이터 베 이 스 를 볼 수 있다.이것 은 실제 상황 에 따라 선택 할 수 있다.

<appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">
...
</appender>
여기 설 정 된 name("Log4Net"INFO")는 로 그 를 정의 하 는 출력 매체 에서 사 용 됩 니 다.name 임의로 설정 할 수 있 습 니 다.
appender 노드 에 파일 이 저 장 된 주소,로그 갯 수 등 정 보 를 설정 합 니 다.이것들 은 인 스 턴 스 코드 에 모두 나타 나 는데 여 기 는 설명 하지 않 습 니 다.로그 마지막 출력 에 나타 난 레이아웃 설정 정 보 를 살 펴 보 겠 습 니 다.

<layout type="log4net.Layout.PatternLayout">
    <!-- -->
    <Header value="[Header]"/>
    <!--  -->
    <Footer value="[Footer]"/>
    <!--  -->
    <ConversionPattern value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
이 설정 의 정 보 는 결국 로그 가 인쇄 된 스타일 입 니 다.콘 텐 츠 헤더 와 꼬리 Footer 를 설정 할 수 있 습 니 다.본문 Conversion Pattern.본문 에%d[%t]가 나 왔 습 니 다.여기에 참고 할 수 있 는 대조 표 가 하나 있다.
%m(message):ILog.Debug(...)와 같은 출력 로그 메시지
%n(new line):줄 바 꾸 기
%d(datetime):현재 문장 이 실 행 될 때 출력
%r(run time):출력 프로그램 이 실 행 될 때 부터 현재 문장 으로 실 행 될 때 까지 소모 하 는 밀리초 수
%t(thread id):현재 구문 이 있 는 스 레 드 ID
%p(priority):로그 의 현재 우선 순위,즉 DEBUG,INFO,WARN...등
%c(class):현재 로그 대상 의 이름 입 니 다.예 를 들 어:
%L:출력 문 이 있 는 줄 번호
%F:출력 문 이 있 는 파일 이름
%-숫자:이 항목 의 최소 길 이 를 표시 합 니 다.부족 하면 빈 칸 으로 채 웁 니 다.
배치 의 기본 은 이것 뿐 입 니 다.다음은 루트 설정 설명 입 니 다.
root:
출력 설정 방식 을 지정 합 니 다.

<root>
   <!--  DEBUG           -->
   <level value="DEBUG"/>
   <appender-ref ref="Log4Net_ERROR" />
 
  <!--  INFO           -->
   <level value="INFO"/>
   <appender-ref ref="Log4Net_INFO" />
</root>
제어 단계,낮은 것 에서 높 은 것 으로:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
예 를 들 어 INFO 로 정의 하면 INFO 단계 가 아래로 내 려 갑 니 다.예 를 들 어 DEBUG 로 그 는 기록 되 지 않 습 니 다.
LEVEL 의 값 이 정의 되 지 않 으 면 DEBUG 로 결 성 됩 니 다.
추가 소스 코드:코드

좋은 웹페이지 즐겨찾기