私の文面に不備があり、申し訳ないです。1スレッド=1ロガーを目標としてます。※初めの依頼を受けた際にプロセスという文言は修正済です後者です。私の文面に不備があり、申し訳ないです。1スレッド=1ロガーを目標としてます。件sort評価が高い順sort新着順sort古い順linkcheck解決した方法0以下のように修正して解消致しました。皆様、ご回答、ご指摘ありがとうございました。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。22:39原因切り分け等をもう少し早くすればよかったなと反省しております。ありがとうございました。原因切り分け等をもう少し早くすればよかったなと反省しております。ありがとうございました。キャンセル完了するlink0ログ出力先だけマルチスレッド制御出来ずにいます。これはファイルのことと考えると、同時アクセスの際に、待たされるスレッドが出てきます。通常は同期オブジェクトを利用して、出力が混在しないように工夫します。かなりの数のスレッドからアクセスされるとのことですので、かなり待たされる可能性がありますので、書き込み時間をできるだけ少なくする工夫が必要になります。遅延書き込みなどが一例ですが、リスクもあるので、システム全体のことを検討した上で対策を決定していただければと思います。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。編集ご回答、ありがとうございます。同時アクセスというのが何をさしているのかわかりかねるのですが、スレッド毎にスレッド別でログファイルを出力するには同期オブジェクトを用いる必要があるというご指摘でしょうか。それ以外に手立てがないという意味合いでしょうか。ご回答、ありがとうございます。同時アクセスというのが何をさしているのかわかりかねるのですが、スレッド毎にスレッド別でログファイルを出力するには同期オブジェクトを用いる必要があるというご指摘でしょうか。それ以外に手立てがないという意味合いでしょうか。17:26ログファイルもスレッドごとに分けて出力するのではないのですよね?ログファイルもスレッドごとに分けてと言うことであれば、ログ出力用のインスタンスをスレッド単位で保持するようにすれば良いのではないでしょうか。ログファイルもスレッドごとに分けてと言うことであれば、ログ出力用のインスタンスをスレッド単位で保持するようにすれば良いのではないでしょうか。17:37>出力用のインスタンスをスレッド単位で保持するようにすれば良いのではないでしょうか。はい、それを目的に進めてますが、どうも上手くいってません。それを実現するために今のソースでの不備や指摘等ありましたら頂きたい所存です。>出力用のインスタンスをスレッド単位で保持するようにすれば良いのではないでしょうか。はい、それを目的に進めてますが、どうも上手くいってません。それを実現するために今のソースでの不備や指摘等ありましたら頂きたい所存です。17:44基本的に、スレッドで実行される処理は一連の機能を包含するものですので、クラスにまとめます。そのクラスメンバにログを処理するインスタンスを保持すれば良いです。現状のクラスがログ処理用インスタンスを保有していると思いますが、そのクラス設計がよくないのだと思います。基本的に、スレッドで実行される処理は一連の機能を包含するものですので、クラスにまとめます。そのクラスメンバにログを処理するインスタンスを保持すれば良いです。現状のクラスがログ処理用インスタンスを保有していると思いますが、そのクラス設計がよくないのだと思います。18:18その観点で見直してみます。手詰まり状態ですが、、、その観点で見直してみます。18:56http://gomocool.net/gomokulog/?p=762上記あたりを参考にされてはいかがでしょうか。単純にtaskの中で、全てを実行すれば良いのでしょうけれど、必要に応じてクラス化すれば良いのではないでしょうか。上記あたりを参考にされてはいかがでしょうか。単純にtaskの中で、全てを実行すれば良いのでしょうけれど、必要に応じてクラス化すれば良いのではないでしょうか。22:35参考情報、ありがとうございます。Taskでの確認やサンプルでの確認でも同一事象が確認とれ、log4net側の設定、呼び出し等が原因である事が確認とれました。自己解決という形でしたが、本当に色々ご指摘ありがとうございました。参考情報、ありがとうございます。Taskでの確認やサンプルでの確認でも同一事象が確認とれ、log4net側の設定、呼び出し等が原因である事が確認とれました。自己解決という形でしたが、本当に色々ご指摘ありがとうございました。キャンセル完了するlink0こんにちは。gLog;という部分が気になります。同じメソッドを複数のスレッドから呼び、そのたびにフィールドを書き換えているわけですよね?ローカル変数にすれば解決するように見えますが、何か不都合がありますか?質問からは、何のためにフィールドに格納しているのかが読み取れませんでした。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。17:20ご回答、ありがとうございます。いえ、ローカル変数にしてもGetLoggerを最後に行ったスレッドが他のスレッドのログインスタンスを全て上書してしまいます。ご回答、ありがとうございます。いえ、ローカル変数にしてもGetLoggerを最後に行ったスレッドが他のスレッドのログインスタンスを全て上書してしまいます。17:52うーん、ローカルにしても上書きされるというのは、インスタンスの状態が変更されているということになるため、考えづらいです......本当にローカル変数を使用してもダメですか?だったらlog4net側がおかしいということになるんですが。うーん、ローカルにしても上書きされるというのは、インスタンスの状態が変更されているということになるため、考えづらいです......本当にローカル変数を使用してもダメですか?だったらlog4net側がおかしいということになるんですが。設定ファイルがおかしいのでしょうか。※何がおかしいのか全くわからず途方に暮れてます。設定ファイルがおかしいのでしょうか。※何がおかしいのか全くわからず途方に暮れてます。log4net.LogManager.GetLogger(ProcessName);上書きされるのは、ProsessNameだけでロガーを生成しているからじゃないですか?1つのプロセスに複数のスレッドがあって、各々のスレッドが個別に異なったロガーを生成したいのですよね?だったら、スレッドに固有のIDかなにかをこの関数に追加で渡すようにして、「プロセス名+ID」でロガーを生成すれば別のインスタンスになると思います。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。17:48ご回答、ありがとうございます。引数のProcessNameにはサービス名とポート番号を与えているので、ユニークではあります。※1ポート:1スレッドという形です。ご回答、ありがとうございます。引数のProcessNameにはサービス名とポート番号を与えているので、ユニークではあります。※1ポート:1スレッドという形です。頂いたご意見への回答は行っておりません。