私はアプリケーションを実行するたびにすぐにファイル(Web.Configログセクションで指定されたファイル名)を作成します。QueryStringで渡されたGUIDに基づいて、実行時にログファイルの場所と名前を変更します。
私が望むのは、実行時に(クエリスティングとして渡すGUIDに基づいて)ファイルのパスと名前を変更することです。
私はいくつかの調査をしましたが、利用可能な例は私のために働いていません。誰かがコードサンプルを提供できるかどうかは分かります。
私はアプリケーションを実行するたびにすぐにファイル(Web.Configログセクションで指定されたファイル名)を作成します。QueryStringで渡されたGUIDに基づいて、実行時にログファイルの場所と名前を変更します。
私が望むのは、実行時に(クエリスティングとして渡すGUIDに基づいて)ファイルのパスと名前を変更することです。
私はいくつかの調査をしましたが、利用可能な例は私のために働いていません。誰かがコードサンプルを提供できるかどうかは分かります。
あなたの要件は、Enterprise Libraryの構成ベースのアプローチには当てはまりません。それはできないと言っているわけではありません。
目的を達成する1つの方法は、ログブロックのプログラムによる設定を使用することです。
IDのマッピングを保持するIDictionaryを作成して、LogWriterにする方法があります。 IDが来たら、IDictionaryにLogWriterが既に存在するかどうかを確認します。それが使用する場合はそれを使用し、そうでなければ新しいLogWriterを作成します。ここで
はUnityContainerを設定するには、Logging Fluent Interfaceを使用して、ログ・ライターを解決し、辞書に保存するいくつかのサンプルコードです:
int id = 123123;
Dictionary<int, LogWriter> loggers = new Dictionary<int, LogWriter>();
ConfigurationSourceBuilder builder = new ConfigurationSourceBuilder();
builder.ConfigureLogging()
.WithOptions
.DoNotRevertImpersonation()
.SpecialSources.LoggingErrorsAndWarningsCategory.SendTo.FlatFile("Flat File Listener").ToFile(@"trace.log")
.LogToCategoryNamed("General")
.WithOptions.SetAsDefaultCategory()
.SendTo.FlatFile("AppSpecificFlatFile" + id)
.ToFile("logging" + id + ".log")
;
DictionaryConfigurationSource configSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
coreExtension = new EnterpriseLibraryCoreExtension(configSource);
IUnityContainer container = new UnityContainer();
container.AddExtension(coreExtension);
var logger = container.Resolve<LogWriter>();
loggers[id] = logger;
これは単なるサンプルで、安全か抽象化されたスレッドが、すべきではありませんさうまくいけば助けて。
ありがとうございます。あなたは私を正しい道に向ける答えをします。 – Emahum
あなただけの実行時にトレースログファイルを変更する必要がある場合、あなたは、単に
System.Diagnostics.Trace.Listener.Remove(「LISTENER1」)を使用して現在のTraceListenerを削除することができます。
その後
System.Diagnostics.Trace.Listener.Add(新System.Diagnostics.TextWriterTraceListener( "NewLogFileName.txt"、 "Listener2")、として新しいログファイルの名前で新しいリスナーを追加します。
は今、あなたのログがNewLogFileName.txt
に記録されます、あなたが要件上のビットを拡張することはできますか?ユーザーに基づいてログファイルです(各ユーザーが自分のログファイル/フォルダを取得します)? –
私は別のロードしていますクエリ文字列にIDを渡すときのDLL ID 12345を渡すと、私のWebアプリケーションカチオンは12345.dllをロードします 私はID 67890をクエリ文字列に渡します。私のWebアプリケーションは67890.dllを読み込み、何でもします。 現在、ELにはフラットファイルリスナーがあり、ログファイル(LogInfo.log)を作成しています。アプリケーションの実行が終了したら、自分のIDであるファイルにリネームするだけです。 問題は、2つの異なるIDを使用して同じアプリケーションを2回同時に実行している場合です。 – Emahum
私は自分のIDに基づいてフォルダとファイル名を作成したいと思います。私は渡して、それぞれのフォルダとファイルに情報を記録しています。 – Emahum