.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)/
다음 그림 에서 보 듯 이:
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.