애스펙트에서 로그 항목을 작성할 때 내 로그 파일의 레이아웃을 변경해야합니다. 시간이 지나면 다른 설정도 변경해야 할 것입니다.다른 용도로 레이아웃을 변경해야합니다.
필요한 레이아웃을 생성하는 두 개의 FileTargets를 만들었습니다.
LoggingConfiguration config = new LoggingConfiguration();
LoggingConfiguration aspectConfig = new LoggingConfiguration();
FileTarget fileTarget = new FileTarget();
fileTarget.Name = "fileTarget";
fileTarget.Layout = "${longdate} ${machineName} ${callsite} ${message} ${exception:format=tostring}";
fileTarget.FileName = String.Format("{0}Admin.log", Config.DatabasePath);
fileTarget.KeepFileOpen = false;
FileTarget aspectTarget = new FileTarget();
aspectTarget.Name = "aspectTarget";
aspectTarget.Layout = "${longdate} ${machineName} ${message} ${exception:format=tostring}";
aspectTarget.FileName = String.Format("{0}Admin.log", Config.DatabasePath);
aspectTarget.KeepFileOpen = false;
LoggingRule rule2 = new LoggingRule("*", LogLevel.Trace, fileTarget);
config.LoggingRules.Add(rule2);
LoggingRule aspectRule = new LoggingRule("aspects", LogLevel.Trace, aspectTarget);
aspectConfig.LoggingRules.Add(aspectRule);
LogManager.Configuration = config;
다른 변경 사항이있을 수 있습니다/차이점은이 단계에서 포인트 외에 있습니다.
'를 사용하여 설정 예 :
var log = LogManager.GetCurrentClassLogger();
log.Fatal("##########################################");
를 할 원하는 것이되어 사용할 수 있습니다' '기본 또는'*에 대한 좋은 다음 작품을 사용하여 aspectRule '보다는 기본을'* ' 규칙을 로거를 호출하고 'aspectRule'을 지정합니다.
나는이 일 것이라고 생각했다 :
잘 좋은입니다var log = LogManager.GetLogger("aspects");
log.Fatal("########################################");
하지만 난 특히 난 생성하지 않는 코드에서와 같이 '측면'라는 새로운 로거를 정의하는 방법을 볼 수 없습니다 Logger from '*':-)
XML 구성 파일을 사용하지 않고 프로그래밍 방식으로 솔루션을 사용해야한다는 점에 유의하십시오.
아이디어가 있으십니까?
편집 : 나는이 예에서와 같이 1 개 로그 항목을 작성해야
:
if (someCondition)
logger.Fatal("#############"); // use layout in fileTarget
else
logger.Fatal("##############"); // use layout in aspectTarget
은 무엇 당신이 제안하는 것은 내가 원래 한 것입니다. 즉, log.Fatal ("####")을 실행하면 항목이 로그에 두 번 기록됩니다. 내 질문은 - 한 항목 만 기록하는 방법입니다. 나는 그것이 더 명확하게하기 위해 나의 질문을 ameneded ... – David
감사합니다. LogManager.GetLogger (????)는 나 대신에 무엇을 넣어야할지 혼란스럽게했다. . – David
그래, 특정 대상에 대한 특정 로거. NLog는 정말 멋진 라이브러리입니다. 즐겨. – AVIDeveloper