QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

log4netでのログ出力について

いつもお世話なっております。
なかなか解決に至らないので、投稿させていただきました。

現在、VB.netにて開発を行っております。
そこで、ログの出力をlog4netにて行っているのですが、
ログのファイル名をVB.netのプログラムより動的に変更する事は
可能なのでしょうか???

お忙しいとは、思いますがよろしくお願いします。。。

質問者:.net

回答

.netさんの書き込み (2006-05-31 18:54) より:

そこで、ログの出力をlog4netにて行っているのですが、

ログのファイル名をVB.netのプログラムより動的に変更する事は可能なのでしょうか???

プログラム中で動的に、できましたっけ? (*´・ω・`)
設定ファイルで、ある程度動的にはできますが・・・

Log4Netのちょっと良い設定
http://www.ailight.jp/blog/koido/archive/2005/03/09/4871.aspx

投稿者:もふー。

編集 履歴 (0)

さっそくのご返答ありがとうございます。

やはり、設定ファイルで変えるしかないのでしょうか???
ちなみに、やりたいことなのですが、

画面AAA.exe
  ↓
画面AAAのボタンをクリック
  ↓
別プロセスにて画面AAA.exeを起動

マルチ画面起動です。

そのときにプロセス別にログファイルを分けたいのですが
どういった方法がよろしいでしょうか???

よろしくお願いいたします。

投稿者:.net

編集 履歴 (0)

動的にファイル名を変えるのは難しそうだったので、
結局、log4netでのログ出力はやらない事に決めました。
普通にファイルを出力する方式に変更しました。

皆さん、ご返信ありがとうございました。。。
また、機会があればよろしくおねがいいたします。

投稿者:.net

編集 履歴 (0)

化石と申します。
遅ればせながらご参考まで。

こちらのTip3にADONetAppender(ログをDBに出力するやつ)の出力先DB(ConnectionString)を動的に設定する方法が載っています。
ADONetAppenderをFileAppender等に置き換えれば、出力先のファイルを動的に設定できるようです(↓こんな感じ)。



log4net.Repository.Hierarchy.Hierarchy h = LogManager.GetRepository() as log4net.Repository.Hierarchy.Hierarchy;

if( h != null )
{
    log4net.Appender.FileAppender appender = ( log4net.Appender.FileAppender )h.GetLogger( "MyProject", h.LoggerFactory ).GetAppender( "FileAppender" );

    if( appender != null )
    {
        appender.File = "ABCD.log";//出力先ファイルを設定
        appender.ActivateOptions();
    }
}

投稿者:化石

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。