2016-08-18 23 views
2

私は仕事場で書いたコンソールアプリをいくつか持っています。 NLogを入手したいのですが、問題があります。 'logger'オブジェクトを調べると、 'Factory'プロパティにtarget = 0、loggingrules = 0、すべてが空白または設定されていないことが表示されます。 だから、何もしません..内部ログファイルをドロップしません...私は、nLog.configとnlog.configを無駄にしようとしました。 NLogのver 3と4も試しました...NLog in .NET 4.5コンソールアプリ:ローディング設定なし

なぜそれは設定を拾いませんか?

私が持っている:ビルドアクションのための「コンテンツ」と

  • ルートにNLog.configと「コピーは常に」
  • を設定するには、NLog.configがビン screenshot1
  • にコピーされている確認しました

ここNLog.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" 
     autoReload="true" 
     throwConfigExceptions="true" 
     throwExceptions="true" 
     internalLogLevel="Trace" 
     internalLogFile="c:\temp\NlogInternal.log" 
     internalLogToConsole="true" 
     internalLogToConsoleError="true" 
     internalLogToTrace="true"> 
    <targets> 
    <target xsi:type="Console" name="debugConsole" layout="${message} "/> 
    <target xsi:type="File" name="debugFile" createDirs="true" fileName="c:\temp\testlog.log" layout="${longdate} ${uppercase:${level}} ${message}"/> 
    </targets> 
    <rules> 
    <logger name="*" minlevel="Trace" writeTo="debugConsole"/> 
    <logger name="*" minlevel="Trace" writeTo="debugFile"/>  
    </rules> 
</nlog> 

そして最後に(これはエラーませんが、設定が空白になっているので、何も出力されません):

private static Logger logger = LogManager.GetCurrentClassLogger(); 
logger.Info("ConsoleApp test log..."); 
+0

私は解決策はありませんが、設定ファイルはすばらしく見えます。私は自分の設定ファイル(Nlog.configという)の内容を置き換えました。これは、コンソールに巨大な情報をダンプし、情報ログ.logファイルを指示通りに書き込んで、正確に動作します。私はまた、そのプロジェクトで正確に同じlogger.Infoメソッドを使用し、私は同じビルドアクションを設定しています。 – Micah

答えて

2

あなたのapp.configはNLog configSectionを持っていますか?

<configuration> 
    <configSections> 
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> 
    </configSections> 
    <nlog> 
    </nlog> 
</configuration> 
+0

いいえ、外部のNLog.configファイルを使用しているためです。外部を使用する場合は、https://github.com/nlog/NLog/wiki/Configuration-file#configuration-file-locations –

+0

@Beauに従ってapp.configに触れる必要はありません.nloger.configを実行してくださいアプリケーションのルートまたはアプリケーションのビンにありますか? (このように:project/bin/bin) –

+0

私の説明では: "Copy Always 'set"を設定したアプリケーションのルート –

0

でもinternalLoggerが機能していない場合、あなたは InternalLogger.LogWriter

などを設定することで、問題をデバッグすることもできます。このような 何か

// enable internal logging to a custom TextWriter 
    InternalLogger.LogWriter = new StringWriter(); //e.g. TextWriter writer = File.CreateText("C:\\perl.txt") 
関連する問題