プライマリ・コンテンツに移動

Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.1.3 E67371-01 |
| 目次

前 | 次 |

# 31 MAFアプリケーションのテストおよびデバッグ

この章では、iOSとAndroidの両方のプラットフォーム用に開発されたMAFアプリケーションのテストとデバッグを行う方法について説明します。

この章には次の項が含まれます:

- 第31.1項「MAFアプリケーションのテストおよびデバッグの概要」

- 第31.2項「MAFアプリケーションのテスト」

- 第31.3項「MAFアプリケーションのデバッグ」

- 第31.4項「ロギングの使用方法と構成」

## 31.1 MAFアプリケーションのテストおよびデバッグの概要

MAFアプリケーションのテストとデバッグを開始する前に、そのアプリケーションを次のいずれかにデプロイする必要があります。

- iOSデバイス

- iOSデバイス・シミュレータ

- Androidデバイス

- Androidデバイス・エミュレータ

MAFアプリケーションは、デプロイしないと実行できません。詳細は、第28章「モバイル・アプリケーションのデプロイ」を参照してください。

MAFアプリケーションのテストとデバッグを行うには、通常、次の手順を実行します。

1. スプラッシュ画面、アプリケーション機能のナビゲーション、認証、プリファレンスなど、アプリケーションのインフラストラクチャをテストして、うたわれているすべてのアプリケーション機能が使用可能であることを確認します。

2. アプリケーションにMAF AMXコンテンツが含まれている場合は、このアプリケーション機能のロジック、ページ・フロー、データ・コントロールおよびUIコンポーネントをテストします。

3. 必要に応じてアプリケーションに変更を加えます。

4. モバイル・デバイスを再接続するか、シミュレータを再起動し、さらなるテストおよびデバッグのためにアプリケーションをデプロイして実行します。

詳細は、次を参照してください。

- 第31.3項「MAFアプリケーションのデバッグ」

- 第31.2項「MAFアプリケーションのテスト」

## 31.2 MAFアプリケーションのテスト

MAFアプリケーションをテストするには、次の2つの方法があります。

1. モバイル・デバイス上でのテスト: この方法では常に、最も正確な動作が提供されます。アプリケーションのパフォーマンスを測定する場合も、この方法をとる必要があります。ただし、テスト実行者がテスト対象のすべてのデバイスを入手できるとはかぎらないため、デバイスのテストは確実なものとは言えません。

2. モバイル・デバイス・エミュレータまたはシミュレータ上でのテスト: この方法は通常、よりよいパフォーマンスとより高速なデプロイを提供し、便利です。ただし、デバイスのエミュレータまたはシミュレータは、対応する物理デバイスに近似したものであるとは言え、動作の相違やエミュレートできる機能の制限が存在する場合があります。

通常、両方の方法を組み合せて使用することで、最良の結果が得られます。

### 31.2.1 iOSデバイス上でアクセシビリティのテストを実行する方法

iOSデバイス用に開発されたMAFアプリケーションのアクセシビリティをテストするには、次の方法を組み合せて使用してください。

- iOSデバイス・シミュレータ上でアクセシビリティ・インスペクタを使用してテストする。

  詳細は、iOS Developer Libraryにある`『Accessibility Programming Guide for iOS』の「Testing the Accessibility of Your iPhone Application」`を参照してください。

- iOSデバイス上でVoiceOverを使用してテストする。

  詳細は、iOS Developer Libraryにある`『Accessibility Programming Guide for iOS』の「Using VoiceOver to Test Your Application」`を参照してください。

## 31.3 MAFアプリケーションのデバッグ

OEPEには、Javaプログラムをデバッグ・モードで実行し、標準のブレークポイントを使用してアプリケーションの実行をモニターおよび制御することを可能にするデバッグ・メカニズムが備わっています。

一般にアプリケーションをデバッグするのに、Javaリモート・デバッグとJavaScriptリモート・デバッグという2つの異なる方法があります。Javaリモート・デバッグのみが完全にサポートされています。

MAFアプリケーションはOEPE内部で実行できないため、デバッグの方法が異なります。OEPEデバッガを使用して、モバイル・デバイスまたはシミュレータ上のJava仮想マシン(JVM) 1.4インスタンスに接続し、デプロイ済のMAFアプリケーションのJavaの部分を制御します。

MAFは、リモート・デバッグのプロジェクト・プロパティを自動的に構成します(第31.3.1項「デバッグ構成に関する必知事項」を参照)。次は、OEPEを使用してMAFアプリケーションのJavaコードをデバッグするために実行する必要のある手順です。

1. デバッグ構成で、「デバッグ」タブをクリックし、Javaコードのデバッグを選択します。これにより、次のデバッグ・パラメータが`maf.properties`ファイルに設定されます。

       java.debug.enabled=true

   詳細は、第31.3.5項「JavaコードおよびJavaScriptのデバッグを有効にする方法」を参照してください。

2. アプリケーションをモバイル・デバイスまたはシミュレータに再デプロイします。

3. アプリケーション・アイコンをクリックして、モバイル・デバイスまたはシミュレータでアプリケーションを起動します。

4. リモートJavaアプリケーション構成を使用してリモートVMに接続します。

   1. 新しいリモートJavaアプリケーション構成を作成します。「実行」→「デバッグ構成」をクリックします。構成ウィンドウで、リモートJavaアプリケーションをダブルクリックします。

   2. 構成に名前を付け、デバッグしているアプリケーションのプロジェクトを参照します。

注意: タイムアウトを回避するには、モバイル・デバイスまたはシミュレータでアプリケーションを起動したらすぐにデバッガを起動します。 デプロイメントが成功し、デバイス上のアプリケーションがデバッグ・モードで起動した場合、リモート・デバッグが接続されるまでブロックされます。タイムアウトは通常数分です。

デバッグにモバイル・デバイスを使用する場合、次のタスクを実行します。

Androidの場合

1. ポート転送が確立されていることを確認します。

iOSの場合

1. 開発コンピュータとモバイル・デバイスがTCPを介して相互に見えていることを確認します(互いにpingを実行できます)。

2. モバイル・デバイスのIPアドレスを持ったlocalhostを置き換えることで、リモートJavaアプリケーション構成の「ホスト」フィールドを変更します。

詳細は、第31.3.1項「デバッグ構成に関する必知事項」を参照してください

### 31.3.1 デバッグ構成に関する必知事項

アプリケーションを作成した後で、次のようにして、デプロイメント構成およびリモート・デバッグ構成を作成する必要があります。

1. OEPEのメイン・メニューで、「実行」→「デバッグ構成」をクリックして、起動構成ダイアログを開きます。

2. 構成タイプのリストで、MAFアプリケーション・ノードをダブルクリックします。

3. 新しいMAFデバッグ構成に名前を付け、「メイン」タブでアプリケーションのアセンブリ・プロジェクトを選択します。

4. 図31-1に示すように、「デバッグ」タブでJavaコードのデバッグを選択し、ポートを適切なポート番号に設定します。

   図31-1 デバッグ構成の作成

5. 「適用」をクリックして構成の設定を保存します。

6. 構成タイプのリストで、リモートJavaアプリケーション・ノードをダブルクリックします。「接続」タブは、図31-2のようになります。

   - デバッグするプロジェクトを参照します。

   - 次のようにホストを設定します。

     - シミュレータまたはエミュレータによるデバッグの場合、localhostに設定します。

     - Androidでのリモート・デバッグの場合、Android Debug Bridge (adb)が動作しているコンピュータのホストIPに設定します(通常は`localhost`)。adbはポート転送が有効になっている必要があり、使用するリモート・デバッグ・ポートは転送先と同じポートです。コマンド`adb forward --list`を使用して転送先のすべてのポートを表示します。

     - iOSでのリモート・デバッグの場合、開発コンピュータがネットワークを介してそのデバイスにアクセスできることを確認し(ネットワーク・アクセスをテストするには、`ping`コマンドを使用します)、デバイスのIPアドレスを入力します。

   - 次のようにポートを設定します。

     - シミュレータまたはエミュレータによるデバッグの場合、ポートはデバッグ構成時と同じポート番号に設定します。

     - Androidでのリモート・デバッグの場合、adb (Android Debug Bridge)ではポート転送が有効になっている必要があります。ポートは転送先と同じポートに設定します。コマンド`adb forward --list`を使用して転送先のすべてのポートを表示します。

     - iOSでのリモート・デバッグの場合、ポートはデバッグ構成時と同じポート番号に設定します。

   図31-2 リモート・デバッグの構成

MAFでは、`maf.properties`ファイルに次のデバッグ・パラメータを指定します。

`java.debug.port=8000`

このポート番号は、OEPEで設定したものと一致します。

### 31.3.2 iOSプラットフォームでのデバッグ方法

OEPEを使用してiOSプラットフォームでMAFアプリケーションをデバッグするには、第31.3項「MAFアプリケーションのデバッグ」で説明されている汎用的なデバッグ手順を実行します。

iOSデバイスまたはシミュレータの構成方法、およびデバッグのためのMAFアプリケーションのデプロイ方法については、次を参照してください。

- 第28.4.2項「iOSシミュレータへのiOSアプリケーションのデプロイ方法」

- 第28.4.3項「iOSデバイスへのアプリケーションのデプロイ方法」

- 第28.4.5.2項「テストおよびデバッグ用のAppleデバイスの登録」

### 31.3.3 Androidプラットフォームでのデバッグ方法

OEPEを使用してAndroidプラットフォームでMAFアプリケーションをデバッグするには、第31.3項「MAFアプリケーションのデバッグ」で説明されている汎用的なデバッグ手順を実行します。

Androidデバイスまたはエミュレータの構成方法、およびデバッグのためのMAFアプリケーションのデプロイ方法については、第28.3.2項「AndroidエミューレータへのAndroidアプリケーションのデプロイ方法」を参照してください。

Androidデバイスまたはそのエミュレータで動作しているMAFアプリケーションのデバッグを可能にするために、デバッグ時にネットワーキングおよびインターネット・アクセスは自動的に有効になります。ネットワーク情報プラグインは、MAFアプリケーション・エディタで有効化します(図31-3を参照)。

図31-3 Androidによるデバッグの有効化

Javaコードをデバッグすると、USBを介して接続されたAndroidデバイスまたはAndroidデバイス・エミュレータで、デプロイメントの最終手順は自動的にポート転送を実行します。これは、ターミナルで次のコマンドを実行した場合と同じです。

- デバイスでのデバッグの場合:

  `adb -d forward tcp:``8000` `tcp:``8000`

- エミュレータでのデバッグの場合:

  `adb -e forward tcp:``8000 tcp:8000`

ときにはadbプロセスはフリーズすることがあるため、プロセスを強制終了して再起動する必要があります。

プロセスを強制終了するには、次の手順を実行します。

- Windows: プロセス マネージャを使用します

- Macターミナル: `kill -9` `procID`コマンドを使用します。

ターミナルで次のコマンドを実行して、adbデーモンを再起動します。

    adb devices

adbのフリーズの前に成功したデプロイメントは引き続きデプロイされます。アプリケーションをデバッグするには、アプリケーションを再デプロイします。

起動構成の「デバッグ」タブにあるJavaコードのデバッグは、`maf.properties`ファイルの`java.debug.*`プロパティを制御します。Javaコードのデバッグを選択すると、次のものが設定されます。

`java.debug.enabled=true`

デフォルトのポート番号を変更すると、次のものが設定されます。

`java.debug.port=nnnn`

詳細は、第31.3.5項「JavaコードおよびJavaScriptのデバッグを有効にする方法」を参照してください。

注意: 接続がWi-Fiを介して行われる場合は、この接続が正しいことを確認してください。デバッガとターゲットの両方を、仮想プライベート・ネットワーク(VPN)を使用せずに、同じネットワーク上に配置することをお薦めします。

### 31.3.4 MAF AMXコンテンツのデバッグ方法

MAFアプリケーションにMAF AMXコンテンツが含まれている場合、デバイスまたはエミュレータを構成した後で、OEPEでその他のタイプのアプリケーションをデバッグするときに行うのと同様、ブレークポイントの設定、変数の内容の表示およびメソッド・コール・スタックの検査ができます。

注意: デバッグできるのは、JavaコードおよびJavaScriptのみです(第31.3.5項「JavaコードおよびJavaScriptのデバッグを有効にする方法」を参照)。EL式または他の宣言要素のデバッグはサポートされていません。

### 31.3.5 JavaコードおよびJavaScriptのデバッグを有効にする方法

`maf.properties`ファイルでは、JVMの起動パラメータおよびMAFのWebビューを指定して、JavaコードおよびJavaScriptのデバッグを有効にできます。`maf.properties`ファイルは自動的に作成され、「アプリケーション・リソース」の`Descriptors/META-INF`ディレクトリ内に配置され(第31.4項「ロギングの使用方法と構成」を参照)、この場所は、アプリケーション・ファイル・システム内の`<application_name>``/META-INF`の場所に対応しています。

`maf.properties`ファイルで次のデバッグ・プロパティを使用できます。

- `java.debug.enabled`: MAF用のJavaデバッグを有効または無効にします。有効な値は、`true`と`false`です。

  注意: `java.debug.enabled`が`true`に設定されている場合、JVMは、デバッガが接続を確立するのを待ちます。デバッガが接続に失敗すると、MAF AMXアプリケーション機能のロードが失敗します。

- `java.debug.port`: デバッグ時に使用するポートを指定します。有効値は整数です。

- `javascript.debug.enabled`: アプリケーションがデバイス・シミュレータで実行されている場合、JavaScriptのデバッグを有効または無効にします。有効な値は、`true`と`false`です。

- `javascript.debug.feature`: MAFでのJavaScriptデバッグの起動をトリガーするアプリケーション機能を指定します。値の形式は`featureId:port`です。ポートを指定する必要があります(これは当初、プレースホルダ値に設定されています)。

注意: `javascript.debug.enabled`および`javascript.debug.feature`の設定は、iOSおよびSafariバージョンが6.0以前の場合にのみ有効です。 iOSとSafariの両方のバージョンが6.0以降の場合、これらの2つのプロパティはいずれも指定する必要はありません。かわりに、第31.3.5.1項「iOS 6プラットフォーム上でのiOSデバイス・シミュレータを使用したJavaScriptのデバッグに関する必知事項」の指示に従ってください。

`maf.properties`ファイルの内容は、次のようなものです。

    java.debug.enabled=true
    java.debug.port=8000

    javascript.debug.enabled=true
    javascript.debug.feature=products:8888

`maf.properties`ファイルがJavaScriptをデバッグするように構成されたら、次のURLに移動して、MAFでデバッグ可能なすべてのロード済ページのリストを確認できます。

`http://localhost:9999`

OEPEを使用してJavaコードをデバッグする方法の詳細は、第31.3項「MAFアプリケーションのデバッグ」を参照してください。

#### 31.3.5.1 iOS 6プラットフォーム上でのiOSデバイス・シミュレータを使用したJavaScriptのデバッグに関する必知事項

iOS 6プラットフォームで作業している場合、Safari 6ブラウザを使用してJavaScriptをデバッグできます。これを行うには、Safariの設定を開き、「Advanced」を選択した後、「Show Develop menu in menu bar」を選択して、ブラウザ内の「Develop」メニューを有効にします(図31-4を参照)。

図31-4 Safariブラウザ・オプションの有効化

「Develop」メニューが有効な場合、図31-5および図31-6に示すように、「iPhone Simulator」または「iPad Simulator」を選択し、デバッグするUIWebViewを選択します。「Develop」メニューにiPhone Simulatorオプションが表示されるか、iPad Simulatorオプションが表示されるかは、どちらのデバイス・シミュレータが起動しているかによって決まります。

図31-5 Safariブラウザの「Develop」メニューを使用したiPhone Simulator上でのデバッグ

図31-6 Safariブラウザの「Develop」メニューを使用したiPad Simulator上でのデバッグ

### 31.3.6 デバッグ・モードの構成方法

アプリケーションのデプロイメント・プロファイルを使用して、MAFアプリケーションの実行モードをリリースまたはデバッグのいずれかに指定します。デバッグ・モードでのみ、JavaおよびJavaScriptコードを対話的にデバッグできます。デバッグ・モードでは、コンパイル時に特殊なデバッグ・ライブラリおよびシンボルを含めることが可能です。

図31-7は、AndroidまたはiOSのデバッグ・モード・オプションの設定方法を示しています。

図31-7 デバッグ・モードの設定

詳細は、次を参照してください。

- 第28.3.1項「Androidデプロイメント構成の作成方法」

- 第28.4.1.1項「iOSビルド・オプションの定義」

- 第28.4.5.1項「iOS開発用証明書の作成」

## 31.4 ロギングの使用方法と構成

MAFアプリケーションの場合、サポートされるすべてのプラットフォームでロギングを有効にするには、JavaScript (第31.4.2項「JavaScriptのロギングの使用方法」を参照)および埋込みコード(第31.4.3項「埋込みロギングの使用方法」)で、単一ファイルへのログ出力を含む単一構成を使用します。このログ出力には、`System.out.println`および`System.err.println`文によって生成された出力が含まれます。

デフォルトのMAFのロギング・プロセスは、次のとおりです。

- アプリケーションの起動時、ロギングが開始されます。

- アプリケーションの以前の実行で生成された既存のログ・ファイルが削除され、現在の実行の内容のみが使用可能になります。

- アプリケーションをiOSデバイス・シミュレータ上で実行している場合、すべてのログ出力は通常、開発用コンピュータの`Application/Utilities`ディレクトリを通じてアクセスできるコンソールに送信されます。ただし、開発用コンピュータでMac OS 10.8.nを実行している場合、Javaロギング出力へのアクセスに使用できるファイルは、出力のリダイレクションに伴って生成された直後に、その名前と場所が通知されるファイルのみです。このファイルについてありえる場所の1つは、`/Users/``<userid>``/Library/Application Support/iPhone Simulator/6.0/Applications/``<AppID>``/Documents/logs/application.log`です。

  iOSデバイス上でアプリケーションを実行している場合、コンソール出力は、アプリケーションの`Documents/logs`ディレクトリにある`application.log`ファイルにリダイレクトされます。

  Androidでは、出力は、アプリケーションと同じ名前のテキスト・ファイルにフォワードされます。出力ファイルの場所は`/sdcard`です。この場所が存在していないか、読取り専用として構成されている場合、ログ出力は、アプリケーションの書込み可能データ・ディレクトリに再ルーティングされます。

- `logging.properties`ファイルは、自動的に作成され、アプリケーション・ファイル・システムの`<assembly project>``/META-INF`位置に配置されます(第31.4項「ロギングの使用方法および構成」を参照)。このファイルでは、すべてのロガーで`com.sun.util.logging.ConsoleHandler`および`SimpleFormatter`を使用することが定義され、ログ・レベルが`SEVERE`に設定されます。このファイルを編集して、別のロギング動作を指定できます(第31.4.1項「プロパティ・ファイルを使用したロギングの構成方法」を参照)。

  注意: MAFアプリケーションでは、`java.util.logging`パッケージからのロガーを使用することはできません。

MAFのロガーは、次のとおり`oracle.adfmf.util.Utility`クラスで宣言されます。

    public static final String APP_LOGNAME = "oracle.adfmf.application";
    public static final Logger ApplicationLogger = Logger.getLogger(APP_LOGNAME);

    public static final String FRAMEWORK_LOGNAME = "oracle.adfmf.framework";
    public static final Logger FrameworkLogger = Logger.getLogger(FRAMEWORK_LOGNAME);

MAFアプリケーションで使用するロガーは、`ApplicationLogger`です。

`oracle.adfmf.util.logging.Trace`クラスのメソッドを使用することもできます。

詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。

### 31.4.1 プロパティ・ファイルを使用したロギングの構成方法

次の例は、ロギングの構成で使用する`logging.properties`ファイルを示しています。

    # default - all loggers to use the ConsoleHandler
    .handlers=com.sun.util.logging.ConsoleHandler
    # default - all loggers to use the SimpleFormatter
    .formatter=com.sun.util.logging.SimpleFormatter

    oracle.adfmf.util.logging.ConsoleHandler.formatter=
                 oracle.adfmf.util.logging.PatternFormatter
    oracle.adfmf.util.logging.PatternFormatter.pattern=
                 [%LEVEL%-%LOGGER%-%CLASS%-%METHOD%]%MESSAGE%

    #configure the framework logger to only use the adfmf ConsoleHandler
    oracle.adfmf.framework.useParentHandlers=false
    oracle.adfmf.framework.handlers=oracle.adfmf.util.logging.ConsoleHandler
    oracle.adfmf.framework.level=SEVERE

    #configure the application logger to only use the adfmf ConsoleHandler
    oracle.adfmf.application.useParentHandlers=false
    oracle.adfmf.application.handlers=oracle.adfmf.util.logging.ConsoleHandler
    oracle.adfmf.application.level=SEVERE

`oracle.adfmf.util.logging.ConsoleHandler`は、カスタム・フォーマッタの受信者としての役割を果たします。

`oracle.adfmf.util.logging.PatternFormatter`では、ログ・メッセージの出力を可能にする、次の高度なフォーマット・トークンが許可されています。

- `%LEVEL%`: ロギング・レベル。

- `%LOGGER%`: 出力が書き込まれるロガーの名前。

- `%CLASS%`: ログに記録されるクラス。

- `%METHOD%`: ログに記録されるメソッド。

- `%TIME%`: ロギング・メッセージが送信された時間。

- `%MESSAGE%`: 実際のメッセージ。

使用可能なロギング・レベルは、次のとおりです。

- `SEVERE`: 重大な障害を示すメッセージ・レベルです。

- `WARNING`: 潜在的な問題を示すメッセージ・レベルです。

- `INFO`: 情報メッセージのメッセージ・レベルです。

- `FINE`: トレース情報を提供するメッセージ・レベルです。

- `FINER`: このレベルは、かなり詳細なトレース・メッセージを示します。

- `FINEST`: このレベルは、非常に詳細なトレース・メッセージを示します。

注意: ロギング・レベルの詳細度を選択するときは、`SEVERE`、`WARNING`および`INFO`レベルで出力の詳細度を上げると、アプリケーションのパフォーマンスに悪影響を及ぼすことに留意してください。

デバイスでアプリケーションを動作させているときに、OEPEには、iOSコンソールと、各デバイス(エミュレータを含む)ごとにAndroid用の追加コンソールという2つのコンソールがあります。両方のタイプのコンソールは、OEPEコンソールへの出力をフィルタ処理できる2つの追加`logging.properties`ファイル・プロパティを使用して、ロギングおよび標準出力をストリーム化できます。

    oepe.console.filter.android=<some string>
    oepe.sonsole.filter.ios=<some string>

コンソールのメニュー・バーの選択したコンソールの表示ボタンを使用すると、あるコンソールから別のコンソールへ切り替えることができます。使用可能なコンソールを切り替えるには、をクリックします。あるいは、第31.4.1項「コンソールの選択」に示すように、ボタンの横の下向き矢印をクリックして、リストから選択します。

図31-8 コンソールの選択

`logging.properties`ファイルで定義されているロガーは、`oracle.adfmf.util.Utility`クラスから取得されるロガーと一致します(第31.4項「ロギングの使用方法と構成」を参照)。ロギング・レベルも一致します。`INFO`よりも詳細なロギング・レベルを使用する場合は、`ConsoleHandler`のロギング・レベルを、次の例に示されているものと同じレベルに変更する必要があります。

    oracle.adfmf.util.logging.ConsoleHandler.formatter=
                 oracle.adfmf.util.logging.PatternFormatter
    oracle.adfmf.util.logging.ConsoleHandler.level=FINEST
    oracle.adfmf.util.logging.PatternFormatter.pattern=
                 [%LEVEL%-%LOGGER%-%CLASS%-%METHOD%]%MESSAGE%

### 31.4.2 JavaScriptのロギングの使用方法

JavaScriptは、`console.log` or`.error/.warn/.info`に出力を書き込みます。この出力は、`System.out`ユーティリティによってファイルにリダイレクトされます。

メッセージを指定することで、ログの出力をカスタマイズできます。次のJavaScriptコードでは、`"Message from JavaScript"`出力が生成されます。

    <script type="text/javascript" charset="utf-8">
       function test_function() { console.log("Message from JavaScript"); }
    </script>

ロギング・ファイルに定義されているプロパティを利用するには、`adf.mf.log`パッケージ、およびそれによって提供される`Application`ロガーを使用する必要があります。

使用可能なロギング・レベルは、次のとおりです。

- `adf.mf.log.level.SEVERE`

- `adf.mf.log.level.WARNING`

- `adf.mf.log.level.INFO`

- `adf.mf.log.level.CONFIG`

- `adf.mf.log.level.FINE`

- `adf.mf.log.level.FINER`

- `adf.mf.log.level.FINEST`

ロギングをトリガーするには、`adf.mf.log.Application`ロガーの`logp`メソッドを使用し、そのメソッドのパラメータで次のものを指定します。

- ロギング・レベル

- 文字列としての現在のクラス名

- 文字列としての現在のメソッド

- 文字列としてのメッセージ文字列

次の例は、MAFアプリケーションでの`logp`メソッドの使用方法を示しています。

    adf.mf.log.Application.logp(adf.mf.log.level.WARNING,
                                "myClass",
                                "myMethod",
                                "My Message");

`logp`メソッドを実行すると、次の出力が生成されます。

    [WARNING - oracle.adfmf.application - myClass - myMethod] My Message

### 31.4.3 埋込みロギングの使用方法

埋込みロギングでは、次の例に示されているとおり、`com.sun.util.logging.Logger`を使用します。`EmbeddedClass`は、プロジェクトで定義されているJavaクラスを表しています。

    import com.sun.util.logging.Level;
    import com.sun.util.logging.Logger;
    import oracle.adfmf.util.logging.*;
    ...
       Utility.ApplicationLogger.logp(Level.WARNING,
                                      EmbeddedClass.class.getName(),
                                      "onTestMessage",
                                      "embedded warning message 1");
       Logger.getLogger(Utility.APP_LOGNAME).logp(Level.WARNING,
                        this.getClass().getName(),
                        "onTestMessage",
                        "embedded warning message 2");
       Logger.getLogger("oracle.adfmf.application").logp(Level.WARNING,
                                                    this.getClass().getName(),
                                                    "onTestMessage",
                                                    "embedded warning message 3");

このコードによって生成される出力は、次のとおりです。

    [WARNING - oracle.adfmf.application - EmbeddedClass - onTestMessage] embedded warning message 1
    [WARNING - oracle.adfmf.application - EmbeddedClass - onTestMessage] embedded warning message 2
    [WARNING - oracle.adfmf.application - EmbeddedClass - onTestMessage] embedded warning message 3

### 31.4.4 iOSプラットフォームでのデバッグおよびロギングにXcodeを使用する方法

MAFプロジェクトの操作にXcodeを使用することは、OEPEを使用した次回のデプロイメント中に一部またはすべての変更を失う可能性があるため推奨されませんが、例外的な状況ではこれを使用できます。

始める前に:

アプリケーションをOEPEからiOSシミュレータにデプロイします。

生成されたプロジェクトを直接Xcodeで開く手順は次のとおりです。

1. `workspace_directory``\deploy\``デプロイメント・プロファイル名``\temporary_xcode_project\`に移動します。

2. `Oracle_ADFmc_Container_Template.xcodeproj`というXcodeプロジェクトを開きます。

開発コンピュータでMac OS 10.8.nを実行し、Xcodeを使用してMAFアプリケーションをデバッグしている場合、IDE内(OEPEコンソールまたはXcodeコンソール上)にはJava出力を表示できません。この出力は、ファイルにリダイレクトされます(第31.4項「ロギングの使用方法と構成」を参照)。アプリケーションのスキーマに次の引数を追加すると、この動作を無効にし、iOSデバイスまたはそのシミュレータ上でデバッグを実行するときに、XcodeからJava、JavaScriptおよびObjective-Cのログ出力にリアルタイムでアクセスできるようになります。

`-consoleRedirect=FALSE`

### 31.4.5 アプリケーション・ログへのアクセス方法

次のAPIを使用すると、アプリケーション・ログ情報にアクセスできます。

- `oracle.adfmf.framework.api.PerfMon`

- `oracle.adfmf.framework.api.LogEntry`

- `oracle.adfmf.util.HOTS`

詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。

### 31.4.6 ロギングを無効にする方法

ロギング出力がアプリケーション・ログ・ファイルに転送されないように設定できます(この場合、ログ・ファイルは、空白のままになるか、まったく作成されません)。ロギングが無効になると、トレース文はアプリケーション・ログから失われ、`stderr`および`stdout`に転送された出力は、すべて`null`の場所またはエンド・ユーザーがアクセスできない別の場所にリダイレクトされます。

すべてのロギングを無効にするには、次のようにアプリケーションの`adf-config.xml`ファイルで`disableLogging`プロパティを`true`に設定します。

    <adf-property name="disableLogging" value="true"/>

デフォルトでは、MAFアプリケーションのロギングは有効で、`disableLogging`プロパティは`false`に設定されています。

`adf-config.xml`ファイルの詳細は、付録C「MAFアプリケーションとプロジェクト・ファイルの概要」を参照してください。