14

例外ログをどこに置くべきかという問題については、ここで 1 回か 2 回 (またはそれ以上) 説明しましたが、推奨事項の 1 つは、アプリケーションがインストール フォルダーに書き込みを行うべきではないということでした。
ただし、ログを %appdata% のどこかに置くと、これは各ユーザーが独自のログ セットを持つことを意味します。すべてのログを 1 つの場所に置くことをお勧めします。
最近の MSDN mag の問題の 1 つで、インストール フォルダー (%programfiles\myapp\logs など) にログ用の別のサブ フォルダーを用意することは、ルールからの有効な例外と呼ばれていました。もちろん、このフォルダの ACL はそれに応じて設定する必要があります。
インストール フォルダーにログ フォルダーを配置することは一般的な慣行ですか、それとも絶対にありませんか? 例外ログはどこに置きますか?

編集:
実際、log4net を使用しているため、ログの場所と種類は完全に構成可能です。ただし、合理的なデフォルトが必要です。イベントログよりもファイルの方が好きです。ほとんどのユーザーにとって、ファイルはイベント ログよりもはるかに簡単に処理できます。
ただし、ファイルが必要だとしましょう。インストールフォルダにログフォルダがあってもいいですか?

4

7 に答える 7

9

Windows の場合は、イベント ログを使用します。独自のログを作成するのは非常に簡単です。または、標準のログにメッセージを追加するだけでもかまいません。

これには、地球上のほぼすべての技術者 (およびプログラマー) が、物事がうまくいかないときにイベント ログに何かが表示されることを期待しているという利点があります。

于 2009-01-21T15:42:07.563 に答える
8

特別な ACL を使用せずに共通ファイルにログを記録するには、次のようなものを使用します

string saveFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\MyCompany";

のフォルダーを参照する

C:\Documents and Settings\All Users\Application Data\MyCompany

XP、および次のようなもの

C:\ProgramData\MyCompany

ビスタ下。おそらくアプリケーションの起動時に、ある時点でフォルダーが存在することを確認する必要があります。

于 2009-01-21T16:37:55.250 に答える
7

新しい OS vista および win 2008 では、プログラム ファイル ディレクトリへの書き込みに ACL が必要になるか、ユーザーのフォルダーに仮想化される場合があります。%AllUsersProfile% の下にディレクトリを設定することをお勧めします。これにより、すべてのユーザーのログ ファイルに共通の場所が 1 つになり、そこに書き込むためにアプリケーションを管理者として実行する必要がなくなります。

于 2009-01-21T16:03:11.780 に答える
2

イベント ログを使用できない、または使用しない場合、ログ ファイルを配置する場所に関する標準化は実際にはありません。場所が十分に文書化されていることを確認するだけでよく、ログ ファイルのサイズに制限があることを確認するために、コードにロジックが必要です。

于 2009-01-21T15:57:11.527 に答える
1

ログ フォルダーへの書き込み権限に注意する必要があります。

これが、インストール フォルダーの代わりにアプリケーション データ フォルダーを使用する主な理由の 1 つです。

于 2009-01-21T16:01:19.367 に答える
1

それは主にアプリケーションに依存するため、非常に多くの可能な答えがあると思います。

Web サイトの場合、サーバーに「C:\log」を作成し、次に個々の Web サイトに「C:\log\website」を作成し、Log4Net などを使用します。

Web サービス、ウィンドウ サービス、スケジュールされたジョブなどについては、Windows イベント ログに書き込みます。マイ コンピュータ -> 管理 -> システム ツール -> イベント ビュー -> (マイ サービス)

私が制御する環境に展開されている Windows アプリケーション (つまり、社内アプリケーション) については、「IT チーム」に例外レポートを電子メールで送信してもらいます。

不明なユーザーに配布される Windows アプリケーションの場合。何もしない。

于 2009-01-21T15:45:16.590 に答える
1

AppData フォルダーを優先する必要があると思いますが、すべてのログを 1 つのフォルダーに結合する場合は、すべてのユーザー ディレクトリ ( Environment.SpecialFolder.CommonApplicationData) を使用し、ユーザーごとにアプリ フォルダー内にサブフォルダーを作成します。このようにして、許可の問題を取り除くだけでなく、自分のスペースを散らかさないようにすることもできます:)私見。

于 2009-01-21T16:15:47.743 に答える