PrismWPFSample(3)ログの保存

Prismを使用したWPFアプリケーション開発で役に立つと思われる項目を一つのアプリケーションにまとめたものを作りました。今回は、ログの保存方法について書いています。

動作環境:Win10, Visual Studio Community 2017, Prism V7.1.0.431, .NET4.5.2, Prism Template Pack, TraceListeners, WPFLocalizeExtension, OxyPlot

アプリの外観はこんな感じです。

f:id:feynman911:20190628180357j:plain
 

ログの保存方法自体については 以前に書いています。
TraceListeners プロジェクトの DateTimeTraceListener.cs とPrismWPFSample の app.config が以前書いた部分になります。
feynman.hatenablog.com

CommonModels での設定

モジュールから個別にログに書き込むのも煩雑なので、CommonModels に次のようなプロパティーを設定して置いて、書き込みたい文言を設定することでログへの保存を行っています。

private string logString = "";
/// <summary>
/// このプロパティーに設定するとログに書き込まれる
/// </summary>
public string LogString
{
    get { return logString; }
            set {
        if (value != "")System.Diagnostics.Trace.WriteLine(value);
        SetProperty(ref logString, value);
    }
}

コマンドボタン

コマンドボタンは 下記の M3ViewModel の CommandLogWrite にバインドされていて、ログが保存されます。

private DelegateCommand commandLogWrite;
/// <summary>
/// ログ保存テストコマンド
/// </summary>
public DelegateCommand CommandLogWrite =>
    commandLogWrite ?? (commandLogWrite = new DelegateCommand(ExecuteCommandLogWrite));
async void ExecuteCommandLogWrite()
{
    myCommonData.LogString = "Module3のボタンが押されました";
    await Task.Delay(2000);
    myCommonData.LogString = "";
}

 
ボタンを押すと、実行ファイルが置かれているフォルダーの下のTraceフォルダーに日付名のファイル 2019****00.log を作り、

2019/**/** 21:39:03 Module3のボタンが押されました

の様に書き込まれます。


次回は、4. 言語設定 について記述したいと思います。