2016-10-11 7 views
2

ログクラスから完全なファイル名を取得する方法はありますか? ロガーは次のような形式のファイルを作成しますC:\MyPath\log-20160631.txtSerilog:ログファイルを開く

私はロガーの初期化に使用したソースファイルにアクセスできません。

編集:ここ ロガーのINITである:

Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Debug() 
      .WriteTo.LiterateConsole() 
      .WriteTo.RollingFile(@"C:\MyPath\log.txt") 
      .CreateLogger(); 

iは、例えば使用することができ、コード内のすべての場所でLog.Information()しかし、シンクの情報はどのように取得できますか?私はローリングファイルシンクに渡したファイル名を取得したい。

私の現在の回避策は、手動で(クレイジー醜いコード)を実際のファイルを生成することです:私はGitHub Repoからもらった

public string LogFilename 
{ 
    get 
    { 
     string path = Path.GetDirectoryName(LogFilenameTemplate); 
     string filenameWithoutExtension = Path.GetFileNameWithoutExtension(LogFilenameTemplate); 
     string extension = Path.GetExtension(LogFilenameTemplate); 
     string date = DateTime.Now.ToString("yyyyMMdd"); 
     string fullFilename = Path.Combine(path, filenameWithoutExtension + "-" + date + extension); 
     return fullFilename; 
    } 
} 

フォーマット。

+1

「私はロガーの初期化に使用したソースファイルにアクセスできません。 serilogの初期化コードを投稿して、ファイル名が必要な場所と理由を正確に明確にしてください。 – PatrickSteele

+0

サンプルコードと拡張された説明と現在の回避策を追加しました。 – Suplanus

+0

[コードを介して](https://github.com/serilog/serilog-sinks-rollingfile/tree/dev/src/Serilog.Sinks.RollingFile/Sinks/RollingFile)からスキップすることはできません現在使用されているファイル名を取得します。私は別の質問があなたがそれを必要とするのはなぜだろうと思いますか?おそらく、ファイル名を知らずにやるべきことをする別の方法があります。 – PatrickSteele

答えて

2

いいえ、Serilogからファイル名を取得する方法はありません。ディレクトリ内のファイルを一覧表示するには、クラスを使用し、最新の変更日を持つファイルを開きます。

関連する問題