2017-11-06 5 views
0

私はDataFlowExというライブラリを使用しています。デバッグなどの情報を出力するにはNLogの設定が必要です。.NETコアアプリケーションでNLogを設定する方法

このチュートリアルでは、xmlファイルを使用した設定を示します。私はここで

... Microsoft.Extensions.Configurationを使用して考え、そしてXMLに動作するようには思えないことを指して

は、私がこれまで持っているものです。

var config = new ConfigurationBuilder().AddXmlFile("app.config", true).Build(); 

そして、設定ファイル:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <sectionGroup name="common"> 
     <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 

    <common> 
    <logging> 
     <factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog20"> 
     <arg key="configType" value="FILE" /> 
     <arg key="configFile" value="~/NLog.config" /> 
     </factoryAdapter> 
    </logging> 
    </common> 
</configuration> 

そしてnlog設定:

<?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"> 

    <variable name="logFormat" value="${date:format=yy/MM/dd HH\:mm\:ss} [${logger}].[${level}] ${message} ${exception:format=tostring} "/> 

    <targets> 
    <target xsi:type="Console" name="console" layout="${logFormat}"/> 
    <target xsi:type="File" name ="file" fileName="Gridsum.DataflowEx.Demo.log" layout="${logFormat}" keepFileOpen="true"/> 
    </targets> 

    <rules> 
    <logger name ="Gridsum.DataflowEx*" minlevel="Trace" writeTo="console,file"></logger> 
    </rules> 
</nlog> 

何も出力されません...私はこの権利をしていますか?

+0

https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-2 –

+0

@Kirk私は読んでいましたそれは、DataFlowExがNLog設定が達成されることを期待している方法ではうまくいかないと(おそらく間違って)結論付けました。私が間違っている? –

+0

NLog内部デバッグオプション( '')を有効にし、ログに何かがあるかどうかを調べます。 – Tipx

答えて

3

多分これは助けることができる:

のapp.configを使用して

https://github.com/net-commons/common-logging/issues/153

停止し、代わりに専用のnlog.configを使用します(「常にコピー」にnlog.configファイルを設定することを忘れないでください)

+0

このメソッドを使用すると*正確に*原因: 'メソッドが見つかりません: 'System.AppDomainSetup System.s.get_SetupInformation()'。 ' –

+0

この例外に対してコールスタックを渡せますか?どのバージョンのNLogを使用していますか? –

+0

スタック:https://pastebin.com/RZ1maXru –

1

nlogのすべてのコードは、Startup.csでこのように見えます。すなわち、Configureメソッドで:あなたは特別な何かを必要としないコンソールアプリケーションのために

using NLog.Extensions.Logging; 
    using NLog.Web; 
    using Nlog; 

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     //setup logging 
     loggerFactory.AddNLog(); 
     env.ConfigureNLog("nlog.config"); 
     app.AddNLogWeb(); 

     // other unrelated stuff... 
    } 

...

using NLog; 

public class Engine 
{ 
    private readonly ILogger _logger; 

    public Engine() 
    { 
     _logger = LogManager.GetCurrentClassLogger(); 
    } 

    public async Task SendAsync(OutboundMessageType messageType) 
    { 
     _logger.Trace($"Entered SendAsync() for message type '{messageType}'."); 

     // other stuff here 
    } 
} 

上記ちょうど私のプロジェクト内のランダムなクラスからです。必要な構成コードはありません。私のnlog.configは実行ファイルと同じディレクトリにあります

+0

ありがとうございますが、これはASP.NETアプリケーションではなく、.NETコアアプリケーションのコンソールです。 –

+0

私は持っているコンソールアプリから更新しました。 –

関連する問題