今日から log4net を使い始めましたが、今のところとても気に入っています。現在のログ機能を維持するために、アプリは、アプリケーションが開始されるたびに新しいログ ファイルを作成する必要があります。ログ ファイル名には、日付とタイム スタンプがエンコードされています。現在、 を介して log4net を構成していますが、これはうまくXmlConfigurator
機能しますが、私のファイル名RollingFileAppender
は構成 XML ファイルにハードコードされています。
を引き続き使用したいのですXmlConfigurator
が、 を呼び出した後Configure()
、 を取得し、RollingFileAppender
コードでそのファイルの値を動的に生成される文字列に変更したいと考えています。オンラインのサンプルドキュメントは現在ダウンしているようですが、SDK リファレンスをざっと見てみると、必要なことを実行するためにHeirarchy
とを使用できるようです。GetAppenders()
私は正しい軌道に乗っていますか?
わかりました、私はこれを突き刺し、次のコードを試しましたが、うまくいきませんでした:
private static readonly ILog _log = LogManager.GetLogger(typeof(GUI));
// in the config file, I've set the filename to example.log, and it works
XmlConfigurator.Configure(new FileInfo("log_config.xml"));
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
if(hierarchy != null) {
// get the appenders
IAppender[] appenders = hierarchy.GetAppenders();
// change the filename for the RollingFileAppender
foreach( IAppender a in appenders) {
RollingFileAppender rfa = a as RollingFileAppender;
if(rfa == null)
continue;
rfa.File = "newfile.log"; // no runtime error, but doesn't work.
}
}
_log.Info("Application started");