3

チームがさまざまな管理タスクに使用するツールがあります。このツールは、さまざまなリモート呼び出し、Active Directory ルックアップ、スクリプトの呼び出しなどを処理して、何千ものマシンをサポートしています。約 10 人が積極的に使用していますが、オタクとさらなる開発のために、統計と使用状況のログを作成したいと考えています (個人的なものではなく、何がどのくらい使用されているかを確認するためだけです)。

私の質問は、.NET (具体的には C#) でこの情報をログに記録するための良い (または最善の) 方法は何でしょうか?

私が最初に考えたのは TXT ファイルまたは XML ファイルでさえありましたが、サイズが不明なファイルを後で何度も何度もロードする必要があるかどうかはわかりません。だから私はSQLiteについて考えましたが、.SQliteを各マシンにインストールしたくありませんが、おそらくexeに埋め込むことができます(共有から実行され、ほとんどのユーザーのインストールではありませんが、ビルドされたセットアップパッケージもあります)それ。

きれいなフォルダーのために、たくさんのテキスト ファイルを使用したくありません。

次の基準を満たす提案:

  1. 軽量
  2. 速い
  3. クライアントにインストールしない
  4. 安定 壊れにくい
  5. ローカルデータベースのような

これをグーグルで調べてみましたが、本当に意味のあるものは何も得られませんでした.これは私にとって典型的な使用モデルではないため、グーグルで何をすべきかわからなかったのでしょう.

4

3 に答える 3

2

Microsoft SQL Server Compactは、.NET用の優れたAPIを備えた、埋め込み可能で無料の再配布可能なデータベースエンジンです。インストールは必要ありません。.NETプロジェクトからデータベースエンジンライブラリへの参照を作成するだけで、それだけです。データベースは、どこにでも保存して他のファイルと同じように移動できる単純なファイルです。

これは「実際の」SQLServerと非常によく似ているため、必要な場合に備えて2つの間のデータ移行は簡単です。これを支援するツールはたくさんあります。

于 2013-03-15T17:04:57.473 に答える
2

db4oを使用できます。これは、オブジェクトを直接保存するオブジェクト指向データベース (SQL なし) です。オブジェクト マッピング、属性、または構成のオーバーヘッドは必要ありません。POCO を取得して保存するだけです。Query by example や SODA (Hibernate の基準に似ています) など、さまざまな方法でクエリを実行できます。LINQ も完全にサポートされています。db4o を組み込みデータベース (ファイルを使用) として使用できます。メモリ フットプリントは非常に小さいです。インストールは不要です。プロジェクトに lib を含めるだけです。

例:

var persons = db.Query<Person>( s => s.Age > 50 );
于 2013-03-15T17:08:55.520 に答える
0

Log4Netを使用して、そのデータ シンクをアプリから分離します。Log4Net を使用すると、ファイル、データベース、Windows イベント ログなどにログを記録できます。ロギング レベル (Fatal、Error、Warning、Info など) およびその他のフィルター条件によって、ログ出力を、出力元のアセンブリ/クラスに基づいて、さまざまな出力先に送信することもできます。

必要なことだけを行う独自のアペンダーを作成することもできます。

log4net構成を変更するすべて。アプリの実行中に log4net 構成を調整することもできます。たとえば、アプリ全体でかなり高レベルのメッセージをキャッチするようにログが設定された、長時間実行されるデーモンを考えてみましょう。ログに記録されたエラーが突然増加し始めた場合は、ログをより詳細なレベルにダイヤルダウンして、何が起こっているのかを把握することをお勧めします。または、問題の詳細を切り分けるために、疑わしいクラスまたはアセンブリの非常に細かいレベルまでダイヤルダウンすることもできます。

log4net を使用すると、構成ファイルを微調整するだけで、デーモンをバウンスすることなくこれを行うことができます。

于 2013-03-15T17:24:21.883 に答える