ユーザ環境でアプリが予期せぬエラーで終了したり、実行中に発生するエラーを分析するためにログファイルを作成することができます。
ログ機能はWindows、macOS、AndroidのNRE環境のみサポートします。
アプリ実行の際、ログ管理者が実行される前に発生するエラーはログに残すことができません。アプリ実行の際、alertウィンドウの形式でユーザーに表示されます。
ログファイルの生成に関する設定
ログファイルを生成する機能は別途設定を行う必要があります。 nexacro studio上で設定する方法とconfigファイルで設定する方法があります。
アプリの実行時には、configファイルの設定内容が優先的に適用されます。configファイルがある場合はEnvironmentでの設定値は無視されます。
Environmentでのログファイル生成の設定
nexacro studio上でプロパティを設定することでログ機能を利用できます。該当のプロパティはnexacro studio上でのみ設定でき、アプリ実行中に変更することはできません。
ログファイルの作成有無の設定(tracemodeプロパティ)
nexacro studioのプロパティリストからEnvironmentのtracemodeプロパティを設定します。 デフォルト値の「none」の場合はログ機能を処理せず、「new」もしくは「append」に設定した場合にログファイルを生成します。
ログレベルと生成タイミングの設定
nexacro studio上のプロパティリストからEnvironmentのloglevel、tracedurationプロパティを設定します。loglevelプロパティではログで出力する情報の基準を設定し、tracedurationプロパティではログファイルを生成するタイミングを設定します。
configファイルの設定
Environmentのプロパティは設定せずに、設定したconfigファイルをユーザー実行環境にコピーするか、ビルド時に含めることができます。
-NCオプションの設定
Windowsでnexacro.exeファイルを実行する際に「-NC」オプションを指定することができます。実行するnexacro.exeファイルと同じ位置にあるconfigファイルを設定することができます。
例えば、nexacro.exeファイルの位置が下記のような警告-NCオプション値に「log_config.xml」ファイルを指定した場合、同じ位置に「log_config.xml」ファイルが必要です。
C:\Program Files\nexacro\17.1\TEST_LOG\nexacro.exe C:\Program Files\nexacro\17.1\TEST_LOG\log_config.xml
-NCオプションを使用しない場合は、基本パスにあるnexacro_config.xmlファイルを探し出し、該当のファイルを参照します。
nexacro_config.xmlファイルの設定
-NCオプションの設定は、ファイル名を指定できますが、別途オプションを指定する必要があります。nexacro_config.xmlファイルは、指定したパスに決められた名前を持つファイルを置くと、アプリ実行時に自動的にこれを認識して処理します。
Windows
Windowsはnexacro_config.xmlファイルを含め、アプリを配布する機能が含まれていません。下記のパスにnexacro_config.xmlファイルを作成し、アプリ実行時に参照できます。
%USERAPP%\Config\[Key]\nexacro_config.xml
「Key」はnexacro.exe実行オプションに指定する-KオプションもしくはBuild App段階で指定するApp Titleです。
Android、macOS
Android StudioもしくはmacOSでプロジェクトビルド時にnexacro_config.xmlファイルを設定できます。下記の内容を参照してください。
アプリ開発と実行(Android)> Config設定 アプリ開発と実行(iOS/iPadOS)> Config設定
nexacro_config.xmlファイルの属性
設定ファイル(nexacro_config.xml)もしくは-NCオプションで指定するファイルは下記のような形式で作成します。
<?xml version="1.0" encoding="UTF-8"?> <nexacro-config os="windows"> <application file-logging="true" loglevel="debug" tracemode="new" traceduration="-1"/> <log filepath="%USERAPP%\Log\nre_log_test.log" filesize="408960" backupfilecount="5"/> </nexacro-config>
nexacro_config.xmlファイルに指定する属性の中で、ログファイル作成に関する項目は下記の通りです。
タグ/属性 | 説明 |
---|---|
nexacro-config | |
os | OSを設定します。 - windows:Windows OS - Android:Android OS - osx:macOS |
application | |
file-logging | 初期ロードのエラー情報を保存するかどうかを設定します。 %USERAPP%パスにnexacro_startError.logファイルに記録される情報と同じです。 |
loglevel | ログ出力レベルを設定します。 fatal | error | warn | info | debug fatalからinfoまではフレームワーク内で処理するログ情報であり、traceメソッドを使用するか、スクリプトエラーが発生した場合は、debugで処理されます。 |
tracemode | ログファイルの処理方法を設定します。 new:以前の記録を削除し、新たにログを記録 append:以前の記録の次にログを記録 |
traceduration | ログファイルを日別に生成するオプションを設定します。 デフォルト値は「-1」です。 |
log | |
filepath | ログ ファイルのパスとファイル名を設定します。 パスを指定しない場合、下記のパスにファイルを生成します。- Windows: %USERAPP% - Android: %SD_CARD%/Android/data/[package name]/files/nexacro/17.1/Log - macOS: %USERAPP%/Log ファイル名を設定しない場合、下記のような形式でファイルを生成します。 - nexacro_[プロトコル+url+port][ブートストラップファイル名].logex) nexacro_httplocalhost8080startjson.log |
filesize | ログファイルの最大サイズを設定します。 デフォルト値は204,800バイト(byte)です。 |
backupfilecount | ログファイルの最大数を設定します。 ログファイルのサイズがfilesizeより大きくなる場合、バックアップファイルとして残せるファイル数です。デフォルト値は5つです。 |
os属性値が「windows」である場合、filepath属性値は脆弱性対策により下記のような制約事項を適用します。
許可されたパス、もしくは許可されたパスの配下ではない場合には強制的にデフォルトのパスに変更されます。
許可されたパスはsystem.convertRealPathメソッドでAliasを使用して指定することができるパスです。
スタートアップのアプリのパスを設定している場合にはデフォルトのパスに変更されます。
拡張子が下記の通りである場合には強制的に「.log」に変更されます。
bat, bin, cmd, com, cpl, exe, gadget, inf1, ins, inx, isu, job, jse, lnk, msc, msi, msp, mst, paf, pif, ps1, reg, rgs, scr, sct, shb, shs, u3p, vb, vbe, vbs, vbscript, js, ws, wsf, wsh, dll, hta
属性別ファイル作成例
backupfilecount
生成されたログファイルのサイズがfilesize属性値より大きくなると、バックアップファイルを追加で生成します。
ファイル名の後に番号をつけてファイルを生成します。backupfilecount属性で指定した値に到達すると、最初に生成したファイルを削除して再びログを記録します。
1時間ごとにアプリが実行され、アプリ実行時に300KBのログを記録すると、ログファイルは下記のように生成されます。
<log filepath="%USERAPP%nrelog.log" filesize="200" backupfilecount="3"/>
ログファイル名 | ファイルサイズ | ファイル生成/変更時間 | 作業手順 |
---|---|---|---|
2020/05/26 13:00 | |||
nrelog.log | 100KB | 2020/05/26 13:00 | 終了ログ |
nrelog.log.1 | 200KB | 2020/05/26 13:00 | 開始ログ |
2020/05/26 14:00 | |||
nrelog.log | 10KB | 2020/05/26 14:00 | 終了ログ |
nrelog.log.1 | 200KB | 2020/05/26 14:00 | |
nrelog.log.2 | 200KB | 2020/05/26 14:00 | |
nrelog.log.3 | 200KB | 2020/05/26 13:00 | 開始ログ |
2020/05/26 15:00 | |||
nrelog.log | 180KB | 2020/05/26 15:00 | 終了ログ |
nrelog.log.1 | 200KB | 2020/05/26 14:00 | |
nrelog.log.2 | 200KB | 2020/05/26 14:00 | |
nrelog.log.3 | 200KB | 2020/05/26 15:00 | 開始ログ / roll over |
traceduration
ログファイルが生成される日を基準に、traceduration属性値より以前に生成されたファイルは削除します。
ファイル名の後に日付("_yyyymmdd")をつけてファイルを生成します。日付比較はOSのシステム時間を基準に処理します。
一日一回アプリが実行され、週末には実行されない場合、ログファイルは下記のように生成・削除されます。 週末にはアプリが実行されないため、既に生成されたログファイルが削除されず、月曜日にアプリが実行されてtraceduration属性値の以前のログファイルを削除します。
<nexacro-config os="windows"> <application file-logging="true" quiet="false" loglevel="debug" tracemode="new" traceduration="2"/> <log filepath="%USERAPP%nrelog.log" filesize="408960" backupfilecount="3"/> </nexacro-config>
ログファイル名 | ファイル生成日 | 作業 |
---|---|---|
2020/05/21(木) | ||
nrelog_20200521.log | 2020/05/21 | ファイル生成 |
2020/05/22(金) | ||
nrelog_20200521.log | 2020/05/21 | 維持 |
nrelog_20200522.log | 2020/05/22 | ファイル生成 |
2020/05/23(土) | ||
nrelog_20200521.log | 2020/05/21 | 維持 |
nrelog_20200522.log | 2020/05/22 | 維持 |
2020/05/24(日) | ||
nrelog_20200521.log | 2020/05/21 | 維持 |
nrelog_20200522.log | 2020/05/22 | 維持 |
2020/05/25(月) | ||
| 2020/05/21 | ファイル削除 |
| 2020/05/22 | ファイル削除 |
nrelog_20200525.log | 2020/05/25 | ファイル生成 |
2020/05/26(火) | ||
nrelog_20200525.log | 2020/05/25 | 維持 |
nrelog_20200526.log | 2020/05/26 | ファイル生成 |
2020/05/27(水) | ||
| 2020/05/25 | ファイル削除 |
nrelog_20200526.log | 2020/05/26 | 維持 |
nrelog_20200527.log | 2020/05/27 | ファイル生成 |
ログファイルの読み込み
該当OSのファイル探索プログラムを使用してログファイルを確認することができます。
アプリ内でログファイルを確認する機能を実装するには、ログファイルが保存されたパスを読み込んで、VirtualFileオブジェクトを使用してファイルを読み込むことができます。
ログファイルの読み込みスクリプト例題
ボタンをクリックすると、該当パスに保存された最初のファイルを取得してTextAreaコンポーネントに表示する例題です。
this.Button01_onclick = function(obj:Button, e:nexacro.ClickEventInfo) { var strLogpath = nexacro.getLogFilePath(); this.VirtualFile00.getFileList( strLogpath, ".log", VirtualFile.findFileOnly ); } this.VirtualFile00_onsuccess = function(obj:VirtualFile, e:nexacro.VirtualFileEventInfo) { switch (e.reason) { case 1: // open this.VirtualFile00.read(); break; case 3: // read this.TextArea00.set_value(e.textdata); break; case 8: // getFileList var logfilename = logpath + e.fileattributelist[0].filename; this.VirtualFile00.open(logfilename, VirtualFile.openText); break; } }
Windows OSの実行時の制約
Windows OSでログファイルにアクセスするには、Environment filesecurelevelプロパティ値を「all」に指定する必要があり、最初実行時にサンドボックスウィンドウが表示されます。
Android OSの実行時の制約
Android OSでログファイルにアクセスするには、ファイルアクセス権限を設定する必要があります。
1
AndroidManifest.xmlにファイルアクセス権限(WRITE_EXTERNAL_STORAGE)を設定し、Providerを追加します。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ... <provider android:name="android.support.v4.content.FileProvider" android:authorities="nexacro.launcher.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> </provider>
2
file_paths.xmlファイルをres/xmlパスの下に追加します。
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-cache-path name="cache" path="."/> <external-files-path name="files" path="./"/> </paths>