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".log"" />
<!-- -->
<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] "/>
<Footer value="[Footer] "/>
<!-- -->
<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".log"" />
<StaticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<Header value="[Header] "/>
<Footer value="[Footer] "/>
<!-- -->
<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:
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 로 결 성 됩 니 다.
추가 소스 코드:코드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MVC Log4Net 을 사용 하여 오류 로그 기록 학습 노트 4웹 응용 프로그램 이 실행 되 는 과정 에서 우 리 는 프로그램 이 이상 하 게 실행 되 는 것 을 피하 기 어렵다.이 럴 때 우 리 는 개발 자 와 관리자 가 이상 원인 을 복원 하고 이상 원인 을 복구 할 수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.