If the app terminates unexpectedly or encounters an error while running in the user’s environment, a log file can be created for analysis and to check the problem.
The log function is supported in the NRE of Windows, macOS, and Android OS only.
Errors that occur when running the app before the log manager runs are not logged. When the app is launched, it is displayed to the user as an alert window.
Create log file settings
The create log file feature is not a default setting and requires additional setup. Log file creation settings can be set in Nexacro Studio or in a config file.
When the app is run, the settings in the config file are applied first. If there is a config file, the value set in the Environment item is ignored.
Create log file settings in Environment
The property values and log functions can be set in Nexacro Studio. Related property values can only be set in Nexacro Studio and cannot be changed while the app is running.
Setting log file creation in the tracemode property
Select Environment in Nexacro Studio and change the tracemode. If the default value is "none", the log function is not processed, and if the property value is set to "new" or "append", a log file is created.
Setting logging level and frequency
You can select Environment in Nexacro Studio and set the loglevel and traceduration properties. The loglevel property sets the situation for the logging and the traceduration property sets the cycle for log file creation.
Config file settings
The log feature can be set in the config file. The Environment property can be set without editing by copying the config file into the user's execution environment or by including it in the build.
Setting -NC options
The "-NC" option can be used when running the nexacro.exe file in the Windows operating system. The config file can be set in the same location as the nexacro.exe file to be run.
For example, if the location of the nexacro.exe file has specified the "log_config.xml" file as the warning -NC value as below, the "log_config.xml" file must exist in the same path.
C:\Program Files\TOBESOFT\Nexacro N\21\TEST_LOG\nexacro.exe C:\Program Files\TOBESOFT\Nexacro N\21\TEST_LOG\log_config.xml
If the -NC option is not used, the nexacro_config.xml file will be searched for in the default path and it will be referred to if it exists.
Setting nexacro_config.xml file
For -NC option settings, a file name can be specified, but a separate option must be specified. The nexacro_config.xml file automatically recognizes and processes a file with a given name in the specified location when running the app.
Windows operating systems
In the Windows OS, the feature for distributing the apps by including the nexacro_config.xml file is not included. The nexacro_config.xml file can be created in the path below and referred to it when running the app.
%USERAPP%\Config\[Key]\nexacro_config.xml
[Key] is the -K option specified in the nexacro.exe execution option or the App Title specified in the Build App stage.
Android, macOS operating systems
The nexacro_config.xml file can be set when building a project in the Android Studio or macOS. Refer to the contents below.
App Development and Execution (Android) > Set Config App Development and Execution (iOS) > Set Config
nexacro_config.xml file properties
The configuration file (nexacro_config.xml) or the file specified with the -NC option is written in the format shown below.
<?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>
Among the properties specified in the nexacro_config.xml file, only those related to the log file creation are explained below.
Tags/Properties | Explanation |
---|---|
nexacro-config | |
os | This property sets the operating system. - windows: Windows operating system - Android: Android operating system - osx: macOS operating system |
application | |
file-logging | This property sets whether to save the initial loading error information. This is the same as the information recorded in the nexacro_startError.log file in the %USERAPP% path |
loglevel | This property sets the log output level. fatal | error | warn | info | debug Fatal, error, warn, and info are log information processed inside the framework. If the trace method is used or a script error occurs, it is processed as debug. |
tracemode | This property sets how log files are processed. new: delete the previous record and record a new log append: record the log after the previous record |
traceduration | This property sets options for creating daily log files. The default value is -1. |
log | |
filepath | This property sets the log file path and file name. If no path is specified, the file is created in the path below. - Windows: %USERAPP% - Android: %SD_CARD%/Android/data/[package name]/files/nexacro/21/Log/ - macOS: %USERAPP%/Log If the file name is not set, the file is created in the format shown below. - nexacro_[protocol+url+port][bootstrapfilename].log ex) nexacro_httplocalhost8080startjson.log |
filesize | This property sets the maximum size of the log file. The default value is 204,800 bytes. If you set a value less than the default, the default is applied. |
backupfilecount | This property sets the maximum number of the log files. This is the number of files that can be left as backup when the log file size becomes larger than the filesize. The default value is 1. |
If the os property value is "windows", the filepath property value may cause security issues, so the following restrictions are applied.
If this property value is not an allowed path or a subpath of an allowed path, it is changed forcibly to the default path.
The path that can be specified using Alias in the system.convertRealPath method is the allowed path.
If the path is the same as the startup program path, it is changed forcibly to the default path.
If the file extension is as below, the extension is changed forcibly to "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
Example of file creation by property
backupfilecount
If the size of the created log file exceeds the value of the filesize property, backup files are additionally created.
Create files by adding numbers to the end of the file names. When the value specified by the backupfilecount property is reached, the first created file is deleted and the log is recorded.
If the app runs every hour and records a 300KB log run, the log files are created as follows.
<log filepath="%USERAPP%nrelog.log" filesize="200" backupfilecount="3"/>
Log file name | File size | Time of file creation/change | Task order |
---|---|---|---|
2020/05/26 13:00 | |||
nrelog.log | 100KB | 2020/05/26 13:00 | Final log |
nrelog.log.1 | 200KB | 2020/05/26 13:00 | Start log |
2020/05/26 14:00 | |||
nrelog.log | 10KB | 2020/05/26 14:00 | Final log |
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 | Start log |
2020/05/26 15:00 | |||
nrelog.log | 180KB | 2020/05/26 15:00 | Final log |
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 | Start log / roll over |
traceduration
Based on the date of log file creation, files created before the value of the traceduration property are deleted.
A file is created and the date ("_yyyymmdd") is added to the end of the file name. Date comparison is processed according to the operating system system time.
If the app is run once a day and not on weekends, log files are created and deleted as follows. Since the app is not run on weekends (Saturday and Sunday), previously created log files are not deleted. When the app is run on Monday, log files before the traceduration property value are deleted.
<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>
Log file name | Date of file creation | Task |
---|---|---|
2020/05/21 (Thursday) | ||
nrelog_20200521.log | 2020/05/21 | Create file |
2020/05/22 (Friday) | ||
nrelog_20200521.log | 2020/05/21 | Maintain |
nrelog_20200522.log | 2020/05/22 | Create file |
2020/05/23 (Saturday) | ||
nrelog_20200521.log | 2020/05/21 | Maintain |
nrelog_20200522.log | 2020/05/22 | Maintain |
2020/05/24 (Sunday) | ||
nrelog_20200521.log | 2020/05/21 | Maintain |
nrelog_20200522.log | 2020/05/22 | Maintain |
2020/05/25 (Monday) | ||
| 2020/05/21 | Delete file |
| 2020/05/22 | Delete file |
nrelog_20200525.log | 2020/05/25 | Create file |
2020/05/26 (Tuesday) | ||
nrelog_20200525.log | 2020/05/25 | Maintain |
nrelog_20200526.log | 2020/05/26 | Create file |
2020/05/27 (Wednesday) | ||
| 2020/05/25 | Delete file |
nrelog_20200526.log | 2020/05/26 | Maintain |
nrelog_20200527.log | 2020/05/27 | Create file |
Reading log files
The log files can be viewed using the appropriate operating system file explorer.
To implement the feature for viewing the log files within the app, obtain the path of the log file and read the contents of the file using the VirtualFile object.
Reading log files script example
This is an example of getting the first file stored in the corresponding path when the Button is clicked and displaying it in the TextArea component.
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; } }
Restrictions in the Windows operating system
To access the log file in the Windows operating system, the environment filesecurelevel property value must be set to "all”. The sandbox window is displayed upon the initial run.
Restrictions in the Android operating system
To access log files in the Android operating system, file access privileges must be set.
1
Set file access privileges (WRITE_EXTERNAL_STORAGE) in AndroidManifest.xml and add 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
Add the file_paths.xml file under the res/xml path.
<?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>