記事 ( http://www.daveoncsharp.com/2009/09/create-a-logger-using-the-trace-listener-in- csharp/ ) で、System.Diagnostics と App.config を使用して Trace メソッド経由でログを記録する方法について説明しました。クラスと App.config の両方を正常に実装できましたが、ログ ファイルの値/場所 (initializeData 内) を動的に割り当てることができるようにしたいのですが、その方法がわかりません。 . ご提案がありましたら、お気軽に投稿してください。
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="fileSizeThreshold=512, fileSizeUnit=kilobytes,
fileAgeThreshold=1, fileAgeUnit=months, fileNameTemplate='{0}\MyApp-{1:MMM-yy}.log'"/>
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
ロガー クラス:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace MyCurrentProject
{
class Logger
{
public void Error(string module, string message)
{
WriteEntry(message, "ERROR:", module);
}
public void Error(Exception ex, string module)
{
WriteEntry(ex.Message, "ERROR:", module);
}
public void Warning(string module, string message)
{
WriteEntry(message, "WARNING:", module);
}
public void Info(string module, string message)
{
WriteEntry(message, "INFO:", module);
}
private void WriteEntry(string message, string type, string module)
{
Trace.WriteLine(
string.Format("{0} {1} [{2}] {3}",
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
type,
module,
message));
}
}
}
RE:明確でなくて申し訳ありません...明確にするために、ログ ファイル出力が保存されるファイル パスを動的に設定する必要があります。%AppData% 内の場所に保存するパスが必要です。構成で発生した問題は、「initializeData」の値を設定すると、その値を変更または動的に設定/リセットする方法が見つからないことでした。正直なところ...現時点では、機能してログファイルの場所を管理できるソリューションが欲しいだけです。