2

Common.Loggingを使用してログを記録しているインストール可能なASP.Netアプリケーションがあります。

ログメッセージを書き込む場合、つまり:

_log.InfoFormat(CultureInfo.???, "{0}: Writing to the Log", DateTime.UtcNow);

どの文化を使うべきか混乱しています。私が望む結果は、ログメッセージがサーバーの地域設定を使用してフォーマットされることです。そうすれば、管理者はアプリケーションをインストールするときに、ログメッセージのフォーマット方法を制御できます。

4つのオプションがありますが、正しい選択はないようです。

  • CultureInfo.CurrentCulture:これはWindowsアプリにとって正しい選択のようですが、ASP.Netはこれを変更して、サイトを閲覧しているユーザーに一致させます。したがって、コンテンツをフォーマットしてユーザーに表示するのは適切ですが、ログに書き込むのは適切ではありません。 。
  • CultureInfo.CurrentUICulture:CurrentCultureと同様の問題-サイトを閲覧している現在のユーザーと一致します。
  • CultureInfo.InstalledUICulture:システムにインストールされたカルチャ-インストールされたウィンドウのコピーに関連しているように見えますが、ユーザーが変更することはできません。どうやらこれは少し役に立たない
  • CultureInfo.InvariantCulture:これはユーザーが構成することはできません。少なくとも一貫性があり、誰がサイトを閲覧しているのか/メディアウィンドウがインストールされているのかによって変わることはないので、これがここでの4つのオプションの中で最良かどうか疑問に思います。

インストーラーがカルチャを選択できるように、システムカルチャのweb.configに明示的な構成を追加する必要があるかどうか疑問に思っています。私が本当に望んでいる答えは、ASP.Netが現在のユーザーに一致するように変更する前のCultureInfo.CurrentCultureが何であれです。

注:ユーザーごとにCurrentCultureを変更してASP.Netをオフにできることはわかっていますが、UIはこの動作に依存しています。

4

1 に答える 1

1

管理者はログを管理したいと考えています。ログが特定の形式になるようにサーバーカルチャを構成するように指示することは、私にとって最善の解決策とは思えません。

web.configに構成オプションを追加することをお勧めします。これにより、管理者は必要に応じてログ形式を構成できます。

ユーザーに尋ねるのではなく、を使用してインストールするときにインテリジェントな推測を行うことができますCultureInfo.CurrentCulture。ユーザーがそれを別のものにしたい場合は、いつでも変更できます。

CultureInfo.CurrentCulture構成ではなく取得したい場合は、Application_Startイベント中に選択して、アプリケーションコンテキストに保持できます。

于 2012-10-30T03:41:46.560 に答える