QPR ProcessAnalyzer Logs

From QPR ProcessAnalyzer Wiki
Jump to navigation Jump to search

QPR ProcessAnalyzer writes log of all operations it's performing. The logs can be used for monitoring, auditing, troubleshooting and many other purposes. The main types of logs are task log, script log and server file log. The task log and reports based on it can be used routinely to monitor the system usage and collect statistics. The script logs are collected for each script that are running. The server file log is not normally needed, but if there are exceptional situations, such as system malfunctioning, the server file log is very helpful in understanding what has happened.

Task Log

All user requests are recorded as tasks, such as login, logout, modifying data, running queries etc. The Task Log can be browsed in the UI by opening the System Reports in the navigation menu (available only for system administrators). There are two task reports available: Running tasks (all tasks currently being executed) and Recent tasks (list of recent tasks in the order of start time). There are also summary level reports available for, e.g. which models have been used, when the system have been used, and who has used the system.

Executing tasks can be stopped by the administrator both in the Running tasks and Recent tasks reports by selecting the task(s) and in the right click context menu select End tasks.

Note that loading of a model is visible as a separate task in the task log, in addition to the task that initiated the model loading.

Task log have for example the following use cases:

  • To see the most active and idle times of the system to plan the optimal time for system updates and maintenance
  • In case of performance issues, how much load the is in the system in different times
  • How active the usage of the system is and how many users are using the system
  • Which content and models are browsed by the users in the system

Task Log Settings

The following settings are available for the task log (in the Analyze tab):

  • Start time from and Start time to: Choose the time range in which to show the task log. By default, the latest 6 months it shown.
  • Maximum Text Length: Defines the maximum number of characters shown in the 'Additional Data' column.
  • Only logins: Show only log entries of successful authentications by users.
  • Maximum rows: Maximum number of rows shown by the log (default max. 1000).

The following columns can be selected for the task log (in the Columns tab):

  • Task type: Type of the task, e.g. run expression, run script, etc.
  • User: Login name of the user performing the task.
  • User Id: User id performing the task.
  • Model: Model name for which the task was performed.
  • Model Id: Model id in which the task was performed.
  • Start Time: Start time of the task.
  • End Time: Endi time of the task. This field is empty if the task is still in progress.
  • Duration: Duration of the task in seconds. Shown only if the task has completed.
  • Task end called: Whether an administrator has requested to stop this task (note that the task may still be in progress).
  • Additional Data: Shows parameters related to this task.
  • Task Id: Id of the task.
  • Session Id: User session id that made the task.

Script Log

The script log is collected for each script and separate log is stored for each run of the script. The script log contains errors in the script run and also log write messages that are added to the code of the script. See more in Managing Scripts how to use the script log.

Script logs contain following information:

  • All errors occurring during the script run (script run also stops when an error occurs).
  • All log writes made by commands in the script code (in expression scripts WriteLog function calls, and in SQL scripts --#WriteLog and PRINT commands).
  • For SQL scripts, all executed scripting commands (commands starting with --#).

Server File Log

The server file log contains information about all operations performed by the QPR ProcessAnalyzer server in a detailed level. The server file log is stored in the location defined by the LogFilePath setting in the appsettings.json file. The Web.config file also contains several other settings that affect the logging behavior, e.g. maximum log file size and file rotation.

All log entries are classified to the following logging levels based on their importance for the system administrator:

  • FATAL: (currently not in use) For failures that are likely application wide, and the entire application may have stopped working. Thus it requires immediate attention from the system administrator.
  • ERROR: For failures that cause handling of the current request to fail, but the failure is not application wide, and the application should continue responding to other requests. System administrator should soon investigate the reason for these log entries. If the failed requests serve important functionality in the system, these failures might be critical to users.
  • WARN: Abnormal or unexpected event has occurred in the application, but handling of the current request did not fail. No immediate resolution is required, but the system administrator should investigate the reason for these log entries when suitable.
  • INFO: Tracks the successful progress of the request handling or other flow in the application. Normally these log entries can be ignored by the system administrator, unless an unknown failure has occurred and more detailed information is needed.
  • DEBUG: These are technical details for application developers, so these log entries don't have any use for system administrators.

The following log entries for security auditing purposes are made to the server file log (using Information log level):

  • When specifying a non-existing username, the following log entry is made: User is not found: <username>
  • When specifying wrong password for an existing user account, the following log entry is made: User password is invalid: <username>
  • When trying to log in with an inactivated user account, the following log entry is made: User account is invalid: <username>