0

Microsoft.Practices.EnterpriseLibrary.Logging を使用しています。log fileName 設定は App.Config ファイルにあります。

この fileName プロパティをコードで取得したい。入手方法がわかりませんでした。出来ますか?どうすればいいですか?私はC#で作業しています。

ありがとう

4

1 に答える 1

1

構成内のリスナーの名前とタイプがわかっている場合は、情報を抽出できます。

IConfigurationSource configSource = ConfigurationSourceFactory.Create();

var logSettings = configSource.GetSection(LoggingSettings.SectionName) as LoggingSettings;

var listener = logSettings.TraceListeners
    .SingleOrDefault(t => t.Name == "Rolling Flat File Trace Listener");

if (listener != null)
{
    var fileListener = listener as RollingFlatFileTraceListenerData;

    if (fileListener != null)
    {
        Console.WriteLine(fileListener.FileName);
    }
}

上記は RollingFlatFileTraceListener の場合です。

または、FileName プロパティをサポートするすべてのトレース リスナーのファイル名を取得するだけの場合は、次のようにすることができます。

IConfigurationSource configSource = ConfigurationSourceFactory.Create();

var logSettings = configSource.GetSection(LoggingSettings.SectionName) as LoggingSettings;

foreach (var listener in logSettings.TraceListeners)
{
    PropertyInfo property = listener.GetType().GetProperty("FileName");

    if (property != null)
    {
        Console.WriteLine(
            string.Format("FileName for Trace Listener '{0}'={1}", 
                listener.Name, property.GetValue(listener, null)));
    }
}
于 2012-12-19T19:48:17.357 に答える