2012-02-09 2 views
2

다양한 이유로 NLog에서 로그를 출력 할 때 기본 십진수 형식이 아닌 16 진수로 processId를 출력하고 싶습니다.Nlog에서 특정 필드의 형식 변경

레이아웃에 ${processid}을 사용하고 있습니다.이 레이아웃에서는 십진수로 출력됩니다. ${shortdate:format=YYYY-mm-dd}과 같은 형식 특성을 사용하여 날짜 서식을 지정할 수 있음을 알고 있습니다. int와 비슷한 것이 있습니까?

답변

0

NLog를 사용하여 즉시 사용할 수있는 기능에 대해서는 알지 못하지만,이를 위해 LayoutRendererWrapper를 쉽게 작성할 수 있습니다. 당신의 NLog.config 파일에서이처럼 당신이 변환하고자 필드, 뭔가를 감싸는 것 :

http://nlog-project.org/2008/11/22/wrapper-layout-renderers-are-coming-to-nlog.html

당신은 소스를 찾을 수 있습니다 여기에

${hex:inner=${processid}} 

이 기능을 설명하는 블로그 게시물입니다 여기에 전달 LayoutRendererWrappers의 모든 :

https://github.com/jkowalski/NLog/tree/master/src/NLog/LayoutRenderers/Wrappers

SOMET을 보일 수 있습니다 래퍼 이 (컴파일되지 않은 및 검증되지 않은)처럼 힝 :

[LayoutRenderer("hex")] 
[ThreadAgnostic]  
public sealed class HexLayoutRendererWrapper : WrapperLayoutRendererBase 
{ 
    public HexLayoutRendererWrapper() 
    { 
    this.Culture = CultureInfo.InvariantCulture; 
    } 
    public CultureInfo Culture { get; set; } 

    protected override string Transform(string text)   
    { 
    int x; 
    if (Int32.TryParse(text, out x)) 
    { 
     string hex = string.Format("{0:X}", x); 
     return hex; 
    } 
    else 
    { 
     return text;   
    } 
    }  
} 

당신도 일반화하고 쓰기 전에 값에 적용되는 서식 속성을 가진 "서식"래퍼를 만들 수 있습니다.