2016-11-02 8 views
1

は、私が希望:もちろん

...D... 

代わりの

...Debug... 

同一の情報のために、警告する、など私はレイアウトの${level[0]}および他のバリエーション、運を試してみました。

+0

NLog ver。 4.4.6単一文字オプションを追加:https://github.com/NLog/NLog/pull/2034 –

+0

ありがとう、私たちは数ヶ月後にserilogに移動しました:) – bunt

+0

機能はあなたを待っています:) –

答えて

1

あなたは少し面倒です${when}でそれを行うことができます:

例えばを

${when:when=level=LogLevel.Trace:inner=T:else=${when:when=level=LogLevel.Debug:inner=D:else=TODO}} 

それとも、いくつかのコードで "ラッパー" を追加することができます:

/// <summary> 
/// Take the left characters 
/// </summary> 
/// <example> 
/// ${left:${level}:Length=2} //[DefaultParameter] 
/// ${left:Inner=${level}:Length=2} 
/// ${level:Length=2} //[ambient] 
/// </example> 
[LayoutRenderer("left")] 
[AmbientProperty("Left")] 
[ThreadAgnostic] 
public sealed class LeftLayoutRendererWrapper : WrapperLayoutRendererBase 
{ 
    /// <summary> 
    /// Gets or sets the length in characters. 
    /// </summary> 
    /// <value>Index</value> 
    /// <docgen category='Transformation Options' order='10' /> 
    [DefaultValue(1)] 
    public int Length { get; set; } 

    /// <summary> 
    /// Post-processes the rendered message. 
    /// </summary> 
    /// <param name="text">The text to be post-processed.</param> 
    /// <returns>Substringed</returns> 
    protected override string Transform(string text) 
    { 
     if (text == null) 
     { 
      return null; 
     } 

     if (Length <= 0) 
     { 
      return String.Empty; 
     } 

     return text.Substring(0, Length); 
    } 
} 

それを登録

ConfigurationItemFactory.Default.LayoutRenderers 
         .RegisterDefinition("left", typeof(MyNamespace.LeftLayoutRendererWrapper)); 

利用状況(例えば、できるだけ早くmain()またはapp_start()インチ):

${left:${level}:Length=2} //or 
${level:Length=2} //"ambient way" 
+0

箱からすぐに働きました、素敵なジュリアン。 – bunt

+0

'LeftLayoutRendererWrapper'を試しましたか?私はこれをNLog 4.4に含めると思います。 – Julian

+0

私はそれを箱からすぐに働いたと言いました。 $ {level}の場合のみ、ビルトインすることは素晴らしいことだと思います。 – bunt

関連する問題