.Net 프로젝트 의 NLog 설정 과 사용 사례 에 대한 자세 한 설명

머리말:
그동안 프로젝트 개발 에 사용 되 었 던 Log4Net 을 프로젝트 의 로그 기록 프레임 워 크 로 사용 하 다 보 니 최근 들 어 식상 한 느낌 이 들 어 새로운 프로젝트 의 로그 기록 프레임 워 크 로 사용 해 보 았 습 니 다.물론 serilog 도 좋 은 로그 기록 프레임 워 크 입 니 다.하지만 오늘 은 주로 NLog 가 프로젝트 에서 의 설정 과 사용 을 이야기 해 야 합 니 다.
NLog 프레임 소스 코드:https://github.com/NLog/NLog
1.NLog NuGet PackAge 가 져 오기:


2.NLog 프로필 설정:
메모:여기 서 저 는 독립 적 으로 설정 할 수 있 는 NRog.config 설정 파일 을 새로 만 들 었 습 니 다.물론 웹.config 에서 도 해당 하 는 설정 을 완성 할 수 있 습 니 다!!
NLog 상세 프로필 정보,홈 페이지 설명 보기:https://github.com/nlog/nlog/wiki/configuration-file
샤 오 천 사내 의 NLog 설정 을 참고 할 수 있 습 니 다https://www.jb51.net/article/165343.htm
a.나의 NRog.config 설정 코드:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 <targets>
 <!--              -->
 <target name="asyncFile" xsi:type="AsyncWrapper">
  <!--            fileName="${basedir}/    ,         /${shortdate}/${     }-${    }-${shortdate}.txt"-->
  <target name="log_file" xsi:type="File"
    fileName="${basedir}/ProjectLogs/${shortdate}/${logger}-${level}-${shortdate}.txt"
    layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"
    archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"
    archiveAboveSize="102400"
    archiveNumbering="Sequence"
    concurrentWrites="true"
    keepFileOpen="false" />
 </target>
 <!--                   -->
 <target name="colorConsole" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" />
 </targets>

 <!--    ,final -               -->
 <rules>
 <logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
 <logger name="*" minlevel="Info" writeTo="asyncFile" />
 <logger name="*" minlevel="Warn" writeTo="colorConsole" />
 </rules>
</nlog>
b.NLog 프로필 정보 요약:
1.rules[규칙]설명:
규칙 은 logger 가 다음 과 같은 속성 을 가 진 요소 입 니 다.
name-기록 기 이름 필터-어댑터 포함 가능(*와?)
minlevel-기록 의 최저 등급
max level-기록 의 최고 레벨
level-1 급 기록
levels-쉼표 로 구 분 된 기록 단계 목록
writeTo-쉼표 로 구 분 된 쓰기 대상 목록
final-최종 규칙 이 일치 하면 어떠한 규칙 도 처리 하지 않 습 니 다.
enabled-삭제 하지 않 고 false 사용 하지 않 는 규칙 으로 설정 합 니 다.
ruleName-규칙 식별 자,Configuration.FindRuleByName 을 사용 하고 규칙 적 으로 Configuration.RemoveRuleByName 을 찾 을 수 있 습 니 다.
NLog 4.6.4 에 도입
메모:규칙 logger 라 고 명명 되 었 지만 기록 기 를 정의 하지 않 았 습 니 다.그것 은 하나 이상 의 기록 기 를 인용 했다.
규칙 name 모드 를 기록 기 이름 과 일치 시 켜 기록 기 에 규칙 을 표시 합 니 다.규칙 name 속성 은 마스크(*와?)를 포함 할 수 있 습 니 다.통과시키다
기록 기 이름 과 일치 하 는 문자 가 일치 합 니 다.
*-0 개 이상 의 문자 일치
? - 딱 한 글자 일치
2、targets【목 표】:
모든 목 표 는 하나의 target 요소 로 표 시 됩 니 다.각 목 표 는 두 개의 속성 이 필요 합 니 다:
name-대상 이름
type-대상 유형-예 를 들 어'파일','데이터베이스','메 일'.이름 공간 을 사용 할 때 이 속성 은 xsi:type 이 라 고 명명 되 었 습 니 다.
이러한 속성 을 제외 하고 목 표 는 보통 다른 매개 변 수 를 받 아들 이 는데 이런 매개 변 수 는 진단 추적 의 기록 방식 에 영향 을 줄 수 있다.모든 목 표 는 서로 다른 매개 변 수 를 가지 고 있 습 니 다.프로젝트 홈 페이지 에 상세 한 설명 이 있 고 문맥 과 관련 된 것 입 니 다.Intellisense 는 Visual Studio 에서 도 사용 할 수 있다.
예 를 들 어 File 목 표 는 fileName 에서 출력 파일 이름 을 정의 하 는 인 자 를 받 습 니 다.Console 목 표 는 error 인 자 를 가지 고 있 습 니 다.이 인 자 는 프로 세 스 의 표준 출력(stdout)이 아 닌 표준 오류(stderr)를 기록 할 지 여 부 를 확인 합 니 다.
이 예제 에 서 는 targets 가 여러 대상 을 정의 하 는 부분 을 보 여 줍 니 다.두 파일,하나의 네트워크 목표 와 OutputDebugString 목표:

< targets >
< target name = “ f1 ” xsi :type = “ File ” fileName = “ file1.txt ” />
< target name = “ f2 ” xsi :type = “ File ” fileName = “ file2.txt ” /> 
< target name = “ n1 ” xsi :type = “ Network ” address = “ tcp:// localhost:4001 ” />
< target name = “ ds ” xsi :type = “ OutputDebugString ” />
</ targets >
NLog 는 많은 미리 정 의 된 목 표를 제공 합 니 다.실제로 자신의 목 표를 만 드 는 것 은 매우 쉽 습 니 다.-사용자 정의 목 표를 만 드 는 방법 을 참조 하 십시오.
3.NLog 사용:
여기 서 저 는 NLog 사용 도움말 류 를 패키지 하여 전체 사이트 에 호출 을 제공 합 니 다.그러면 서로 다른 클래스 에서 NLog 대상 을 예화 하 는 절 차 를 피 할 수 있 습 니 다.
LoggerHelper.cs:

/// <summary>
 /// nLog     
 /// </summary>
 public class LoggerHelper
 {
  /// <summary>
  ///    nLog,            
  /// </summary>
  private readonly NLog.Logger _logger = LogManager.GetCurrentClassLogger();

  private static LoggerHelper _obj;

  public static LoggerHelper _
  {
   get => _obj ?? (new LoggerHelper());
   set => _obj = value;
  }

  #region Debug,  
  public void Debug(string msg)
  {
   _logger.Debug(msg);
  }

  public void Debug(string msg, Exception err)
  {
   _logger.Debug(err, msg);
  }
  #endregion

  #region Info,  
  public void Info(string msg)
  {
   _logger.Info(msg);
  }

  public void Info(string msg, Exception err)
  {
   _logger.Info(err, msg);
  }
  #endregion

  #region Warn,  
  public void Warn(string msg)
  {
   _logger.Warn(msg);
  }

  public void Warn(string msg, Exception err)
  {
   _logger.Warn(err, msg);
  }
  #endregion

  #region Trace,  
  public void Trace(string msg)
  {
   _logger.Trace(msg);
  }

  public void Trace(string msg, Exception err)
  {
   _logger.Trace(err, msg);
  }
  #endregion

  #region Error,  
  public void Error(string msg)
  {
   _logger.Error(msg);
  }

  public void Error(string msg, Exception err)
  {
   _logger.Error(err, msg);
  }
  #endregion

  #region Fatal,    
  public void Fatal(string msg)
  {
   _logger.Fatal(msg);
  }

  public void Fatal(string msg, Exception err)
  {
   _logger.Fatal(err, msg);
  }
  #endregion
 }
4.실행 기록 결과:
내 가 NLog.config 프로필 에 설정 한 로그 저장 경 로 는:ProjectLogs/현재 시간(yyy-MM-dd)/
다음 그림 에서 보 듯 이:



총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기