私のロガーにNLogを使用しています。 .exeを実行するときにログを記録するとき、またはVisual Studioでデバッグするときにも、NLogはファイルに書き込むことができます。NLogとユニットテスト
しかし、ユニットテストでロガーを呼び出すオブジェクトを実行すると、ファイルは作成されますが空です。ユニットテストの下でNLogにファイルを書き込ませるためにconfigに追加する必要のある追加の設定/ルールがありますか?
私はこのためにNLogをモックでき、ログダンプはありませんが、私はNLogを模擬する前にこれを動作させることができますか?これは単体テストでしか起こらず、別の方法で動作していますが、ここではロギングの設定とコードです。私はファイル名を省いた。ここで
public static void Info(string app, string m) => EngineLogger.Logger.Info($"{app} : {m}");
<targets>
<target name="infoFile"
xsi:type="File"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} ${pad:padding=5:inner=${level:uppercase=true}} ${logger} ${message}"
fileName="leftoutForQuestion"
keepFileOpen="false"
encoding="iso-8859-2" />
<target name="errorFile"
xsi:type="File"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} ${pad:padding=5:inner=${level:uppercase=true}} ${logger} ${message}"
fileName="leftOutForQuestion"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" minlevel="Debug" maxlevel="Info" writeTo="infoFile" />
<logger name="*" minlevel="Warn" maxlevel="Fatal" writeTo="errorFile" />
</rules>
は、内部ログからのエラーです:これは問題がある場合
Error Error has been raised. Exception: System.Runtime.InteropServices.COMException (0x800700A1): The specified path is invalid. (Exception from HRESULT: 0x800700A1)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at NLog.Internal.FileAppenders.BaseFileAppender.WindowsCreateFile(String fileName, Boolean allowFileSharedWriting)
at NLog.Internal.FileAppenders.BaseFileAppender.TryCreateFileStream(Boolean allowFileSharedWriting)
at NLog.Internal.FileAppenders.BaseFileAppender.CreateFileStream(Boolean allowFileSharedWriting)
at NLog.Internal.FileAppenders.RetryingMultiProcessFileAppender.Write(Byte[] bytes)
at NLog.Targets.FileTarget.WriteToFile(String fileName, LogEventInfo logEvent, Byte[] bytes, Boolean justData)
at NLog.Targets.FileTarget.ProcessLogEvent(LogEventInfo logEvent, String fileName, Byte[] bytesToWrite)
at NLog.Targets.FileTarget.Write(LogEventInfo logEvent)
at NLog.Targets.Target.Write(AsyncLogEventInfo logEvent)
エラーのnlogの内部ログファイルをチェックしましたか?同じ問題であるかもしれないこのリンクが見つかりました:http://stackoverflow.com/questions/1672998/nlog-with-vs-2008-unit-test – rlee
私もそれを試みましたが、同じ問題がまだ発生します。ファイルは正しいファイル名で作成されていますが、ファイルは空です。 D = – TheNoob
なぜメモリターゲットではなくファイルターゲットにロギングしていますか? – Julian