Feature Wiki

Information about planned and released features

Tabs

Direct Access to Error Log Files

1 Initial Problem

It is often unnecessarily complicated for the support team to access error log files.

Also, the path to the error log files is not always accessible to the people who administrate the platform. 

2 Conceptual Summary

A setting should make it possible for users with the global role ‘Administrator’ to be able to access this log file from ILIAS directly after an error has occurred and when a corresponding error message with error code is displayed.

For users with this role, a button is added to the message box to enable the download. (See Chapter 3.2)

The Button ‘Back to Repository’ is also transferred to the Message Box and changed functional to 'Back to Personal Starting Point'. This is more predictable in regard to access. Users who are not logged in are directed to the login screen.

The other Contents of the Message Box (Note, Log File Code and, depending on the configuration, the eMail Address of a potentially helpful Person) are not changed or differentiated by Role.

The administrative setting is activated by default.

3 User Interface Modifications

3.1 List of Affected Views

  • Screens with an Error Message and Errol Log File Code

3.2 User Interface Details

Message Box

ILIAS 10

 
 » » »

Trunk (MockUp)

Form in Administration

3.3 New User Interface Concepts

Nothing new.

3.4 Accessibility Implications

Nothing specific. We use only Kitchen Sink Elements.

4 Additional Information

4.1 Involved Authorities

If this request is related to multiple components, please list both authorities for all related components.

4.2 Technical Aspects

When ILIAS runs in productive mode, errors are processed by \ilErrorHandling::defaultHandler. This handler uses the configured CallbackHandler to:

  • Generate the log file containing detailed error information (error message, PHP call stack, etc.)
  • Generate the legacy HTML message with a button for further user interaction.

if ($DIC->isDependencyAvailable('ui') && isset($DIC['tpl']) && $DIC->isDependencyAvailable('ctrl')) {
    $DIC->ui()->mainTemplate()->setOnScreenMessage('failure', $message, true);
    $DIC->ctrl()->redirectToURL('error.php');
} else {
    ilSession::set('failure', $message);
    header('Location: error.php');
    exit;
}

To improve the user experience by using the KS/UI framework, specifically the MessageBox > Error component, the error UI should be rendered in error.php (or in scripts it includes). To enable this, key data - such as the error message, the path to the generated error log file, and optionally its content - must be persisted temporarily across the HTTP redirect that occurs after the error is logged.

This temporary persistence could be achieved via:

  • A session variable
  • A one-time token referencing a temporary file or cache entry
  • Another secure and ephemeral mechanism

Because the content of the log file contain sensitive information, it must be ensured that the user can access only the specific error log file generated for their request. Any possibility of:

  • Accessing arbitrary files
  • Reusing links/tokens across sessions

...must be explicitly prevented. Proper validation, access control, and/or file/path sanitization to mitigate these risks must be ensured.

4.3 Privacy

Data that is provided as part of an error report is thus potentially accessible to all administrators of the platform.

4.4 Security

None.

4.5 Contact

Person to be contacted in case of questions about the feature or for funding offers: Samoila, Oliver [oliver.samoila] 

4.6 Funding

Funding status and funding parties are listed in the block 'Status of Feature' in the right column of this page.

If you are interested to give funding for this feature, please get into contact with the person mentioned above as 'Contact'.

5 Discussion

6 Implementation

Feature has been implemented by {Please add related profile link of this person}

6.1 Description and Screenshots

{ Description of the final implementation and screenshots if possible. }

6.2 Test Cases

Test cases completed at {date} by {user}

  • {Test case number linked to Testrail} : {test case title}

6.3 Privacy

Information in privacy.md of component: updated at {date} by {user} | no change required

6.4 Approval

Approved at {date} by {user}.

Laatste wijziging: 5. Mei 2025, 14:31, Jansen, Michael [mjansen]