2017-06-29 3 views
0

NLogで作業する基本的なカスタムターゲットを取得するのは本当に苦労しています。NLogのカスタムターゲットを取得できません

Program.csの

using NLog; 
using NLog.Targets; 



namespace NLogTestConsole 
{ 
    class Program 
    { 
     private static Logger logger = null; 

     static Program() 
     { 
      logger = LogManager.GetCurrentClassLogger(); 
      Target.Register<NLogTestConsole.Gerald>("Gerald"); 
     } 

     static void Main(string[] args) 
     { 
      logger.Trace("Sample trace message"); 
      logger.Debug("Sample debug message"); 
      logger.Info("Sample informational message"); 
      logger.Warn("Sample warning message"); 
      logger.Error("Sample error message"); 
      logger.Fatal("Sample fatal error message"); 
     } 
    } 
} 

NLogCustomTarget.cs

using NLog; 
using NLog.Targets; 



namespace NLogTestConsole 
{ 

    [Target("Gerald")] 
    public sealed class Gerald : TargetWithLayout 
    { 
     public Gerald() 
     { 
      // this.Host = "localhost"; 
     } 

     //[RequiredParameter] 
     //public string Host { get; set; } 

     protected override void Write(LogEventInfo logEvent) 
     { 
      // Breakpoint here never gets hit 
      string logMessage = this.Layout.Render(logEvent); 

      System.Console.WriteLine("MYCUSTOMMSG: " + logMessage); 
     } 

     private void SendTheMessageToRemoteHost(string host, string message) 
     { 
      // TODO - write me 
     } 
    } 

} 

NLog.config

<?xml version="1.0" encoding="utf-8" ?> 
<nlog autoReload="true" 
     throwExceptions="false" 
     internalLogLevel="Off" 
     internalLogFile="c:\temp\nlog-internal.log"> 

    <!-- optional, add some variables 
     https://github.com/nlog/NLog/wiki/Configuration-file#variables --> 
    <variable name="myvar" value="myvalue"/> 

    <!-- See https://github.com/nlog/nlog/wiki/Configuration-file 
     for information on customizing logging rules and outputs. --> 
    <targets> 
    <!-- add your targets here 
      See https://github.com/nlog/NLog/wiki/Targets for possible targets. 
      See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers. --> 

    <!-- Write events to a file with the date in the filename. 
      <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" 
       layout="${longdate} ${uppercase:${level}} ${message}" />     --> 

    <target name="logfile" type="File" fileName="file.txt" /> 
    <target name="console" type="Console" /> 
    <target name="debugger" type="Debugger"/> 
    <target name="Gerald" type="Gerald"/> 
    </targets> 

    <rules> 
    <!-- Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f" 
      <logger name="*" minlevel="Debug" writeTo="f" /> --> 

    <logger name="*" minlevel="Trace" writeTo="logfile" /> 
    <logger name="*" minlevel="Info" writeTo="console" /> 
    <logger name="*" minlevel="Trace" writeTo="debugger" /> 
    <logger name="*" minlevel="Trace" writeTo="Gerald" /> 
    </rules> 
</nlog> 

私はファイルへのロギングをGET "ジェラルド" ターゲットをコメントアウトした場合は、コンソール、およびデバッグ出力。その行があると、何も動かない どうしたのですか?

ありがとう、

アダム。

答えて

0

は、内部ログを有効にして、C言語でエラーを参照してください。\一時\のnlog-internal.log:

​​
+1

私が必要な手がかりを与えました。ありがとう、ジュリアン。ロガーは明らかに、Target.Registerの呼び出しの後*に作成する必要がありました。 –

関連する問題