1

MC9190 デバイス (CF 3.5) で Windows モバイル (6.5.3) アプリケーションを作成しています。特定のイベント (ユーザーのログイン情報など) と実行時例外の発生をログに記録したいと考えています。どうやってやるの?この例から log4net を使用しようとしましたhttp://breathingtech.com/2009/using-apache-log4net-in-net-compact-framework-projects/ しかし、CF 3.5 はサポートされていません。( http://logging.apache.org/log4net/release/framework-support.html )。アプリケーションでイベント/例外をログに記録するにはどうすればよいですか? CF 3.5 で使用できる標準のログ フレームワークはありますか? ありがとうございました。

4

1 に答える 1

1

単純なログを作成することはそれほど難しくありません。実装するログに関係なく、ログに記録する例外またはイベントごとに行を追加する必要があります。Log4Net およびその他のフレームワークは完全に機能しており、Compact Framework では使用できない手法 (つまり、システム イベント ログへのログ記録) をサポートしています。したがって、完全なフレームワークでサポートされているほとんどの機能を使用できないフレームワークを使用する価値があるかどうかは、自分で判断する必要があります。

いくつかの単純なログ ツールもあります: http://blogs.msdn.com/b/davidklinems/archive/2006/08/17/704662.aspx

参照: .NET Compact Framework のログ ライブラリ?

log4net とそのコンパクトなフレームワーク サポートの問題は、(他のオープン ソース ライブラリと同様に) ほとんどの場合、長期間維持されないことです。

コンパクトなフレームワークで機能する log4net を取得するのは簡単です。

  • log4.net src/log4net.vs2008.sln を開きます
  • 新しい SmartDevice クラス ライブラリ プロジェクト (WM5 SDK と CF2 は問題ありません) を追加し、log4netCF という名前を付けます。
  • 既存の class1.cs ファイルを削除します
  • プロジェクトのプロパティを変更します: ここに画像の説明を入力 アセンブリ名と既定の名前空間 = "log4net"

  • 次に、ソリューション エクスプローラーで log4net.vs2008 プロジェクトのすべてのソース コード フォルダーを右クリックして [コピー] を選択し、次に log4netCF プロジェクトを右クリックして [貼り付け] を選択します。これをすべてのフォルダーに対して繰り返します。

    • アペンダー、
    • 構成、
    • 芯、
    • DateFormatter、
    • フィルター、
    • レイアウト、
    • オブジェクトレンダラー、
    • プラグイン、
    • リポジトリ、
    • ユーティリティ
  • 単一のファイルもコピーします。

    • AssemblyInfo.cs
    • AssemblyVersionInfo.cs
    • GlobalContext.cs
    • ILog.cs
    • LogicalThreadContext.cs
    • LogManager.cs
    • MDC.cs
    • NDC.cs
    • ThreadContext.cs

    log4net.vs2008 から log4netCF プロジェクトに。

  • log4netCF プロジェクトの Properties/AssemblyInfo.cs を削除します
  • log4netCFのビルドオプションにPocketPC;NETCF_2_0;NETCFを追加 ここに画像の説明を入力

log4netCF プロジェクトを右クリックし、[ビルド] を選択します。エラーなしでビルドされ、Compact Framework 2.0 log4net アセンブリが動作するはずです。

プロジェクト ファイルのドロップインは、www.hjgode.de/temp/log4netCF.csproj で入手できます。log4net.vs2008.csproj ファイルの横にある src フォルダーに log4net のコピーをダウンロードして、subversion に配置するだけです。

于 2013-05-10T16:52:22.597 に答える