0

ユーザーがlogging.xmlで指定したログファイルの名前を知る必要があると思われる状況で立ち往生しています。具体的には、以下に示すように、要素value内の属性の値を取得しようとしています( log4netドキュメントから取得file

詳細については、SDKリファレンスエントリlog4net.Appender.FileAppenderを参照してください。
次の例は、ファイルにメッセージを書き込むようにFileAppenderを構成する方法を示しています。指定されたファイルはlog-file.txtです。ファイルは、ロギングプロセスが開始されるたびに上書きされるのではなく、に追加されます。

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="log-file.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

次のコードでアペンダーをループすると:

log4net.Repository.ILoggerRepository repo = LogManager.GetRepository();
foreach (log4net.Appender.IAppender appender in repo.GetAppenders())
{
    FileAppender fa = appender as FileAppender;
}

faオブジェクト内のどこにも値「log-file.txt」が見つかりません。デバッガーには多くのメンバーとデータが公開されているため、おそらく私はそれを見逃しました。

誰かがこの値を取得する方法を提案できますか?

4

1 に答える 1

1

FileAppenderFileロギングが書き込まれるファイルへのパスを含むプロパティがあります。ただし、このプロパティの検索を開始する前にName、アペンダーを確認してください。いくつかをFileAppenders構成することができます。

また、はから派生しているため、RollingFileAppender条件にも一致することに注意してください。appender is FileAppenderFileAppender

string file = repo.GetAppenders()
                  .OfType<FileAppender>()
                  .Where(fa => fa.Name == "FileAppender")
                  .Single()
                  .Name;
于 2012-10-29T18:21:56.887 に答える