Skip to content

Monolog logging (zmsslim)

ZMS applications use a single PSR-3 logger on the global App class: App::$log. It is configured in zmsslim by BO\Slim\Bootstrap and shared by all Slim-based modules (zmsapi, zmsadmin, zmscitizenapi, …).

The minimum log level is also centralized in zmsslim: you set DEBUGLEVEL once in the environment; zmsslim exposes it as ZMS_DEBUGLEVEL, and every module’s App::DEBUGLEVEL inherits that value for Bootstrap::configureLogger().

Quick reference

TopicDetail
Logger propertyApp::$log (Monolog\Logger, null before bootstrap)
Env variableDEBUGLEVEL (e.g. in .env, DDEV, deployment) — default INFO
zmsslim defineZMS_DEBUGLEVEL — set in Application.php from getenv('DEBUGLEVEL')
App constantApp::DEBUGLEVEL — each module inherits ZMS_DEBUGLEVEL from \BO\Slim\Application
Effective minimum levelWhichever of the above applies after bootstrap (App::DEBUGLEVEL at runtime)
Web bootstrap\BO\Slim\Bootstrap::init()
CLI / cron\BO\Slim\Bootstrap::ensureLogger() or initForCli() via script_bootstrap.php
OutputJSON lines to stderr (web) or stdout (CLI/cron)
Do not usePHP error_log(), print_r(), echo for application logging

Central debug level (ZMS_DEBUGLEVEL)

zmsslim owns the debug-level wiring for all Slim modules. You do not configure a separate log level per module in production; one environment variable applies everywhere that bootstraps through \BO\Slim\Bootstrap.

flowchart LR
  env["DEBUGLEVEL env"]
  zms["ZMS_DEBUGLEVEL\n(zmsslim Application.php)"]
  app["App::DEBUGLEVEL\n(each module App)"]
  boot["Bootstrap::configureLogger()"]
  mono["Monolog minimum level\n(App::$log)"]

  env --> zms --> app --> boot --> mono
  1. Operations set DEBUGLEVEL (for example INFO or WARNING) in .env, DDEV, or deployment config.
  2. When zmsslim/src/Slim/Application.php is loaded, it defines ZMS_DEBUGLEVEL from that env var (default INFO if unset).
  3. \BO\Slim\Application declares const DEBUGLEVEL = ZMS_DEBUGLEVEL. Each module’s class App extends \BO\Zmsapi\Application (etc.) inherits the same constant unless you override it locally.
  4. On bootstrap, Bootstrap::init() / ensureLogger() / initForCli() call configureLogger(App::DEBUGLEVEL, App::IDENTIFIER). The level is shared; only App::IDENTIFIER and App::MODULE_NAME differ per module in the JSON output.

So ZMS_DEBUGLEVEL is the single zmsslim source of truth for how verbose logging is across zmsapi, zmsadmin, zmscitizenapi, zmsmessaging, cron scripts, and the other Slim apps.

What you configure: DEBUGLEVEL in the environment (not a separate ZMS_DEBUGLEVEL env name).

What code reads at runtime: App::DEBUGLEVEL (backed by ZMS_DEBUGLEVEL).

Rare override: a module config.php may redefine const DEBUGLEVEL = 'WARNING'; for local experiments only — avoid this in shared deployment config.

CLI fallback: if App::DEBUGLEVEL is not defined yet, Bootstrap::initForCli() reads getenv('DEBUGLEVEL') directly.

Log levels

App::DEBUGLEVEL (from ZMS_DEBUGLEVEL) sets the minimum level written by Monolog. Messages below that level are dropped.

DEBUGLEVEL env / constantMonolog constantTypical use in ZMS
DEBUGLogger::DEBUGVerbose diagnostics (mail payloads, cache details)
INFOLogger::INFONormal operations (login, cron progress, cache hits)
NOTICELogger::NOTICENotable but expected events
WARNINGLogger::WARNINGRecoverable problems (rate limits, skipped entities)
ERRORLogger::ERRORFailures that need attention
CRITICALLogger::CRITICALSevere errors (unhandled exceptions in Twig handler)
ALERTLogger::ALERTRare; same scale as Monolog
EMERGENCYLogger::EMERGENCYRare; same scale as Monolog

Implementation mapping lives in zmsslim/src/Slim/Bootstrap.php ($debuglevels and parseDebugLevel()).

Example configuration

bash
# .env / deployment / DDEV — applies to all Slim modules via zmsslim
DEBUGLEVEL=INFO

Definition in zmsslim/src/Slim/Application.php:

php
define('ZMS_DEBUGLEVEL', getenv('DEBUGLEVEL') ? getenv('DEBUGLEVEL') : 'INFO');
const DEBUGLEVEL = ZMS_DEBUGLEVEL;

Invalid values fall back to DEBUG (permissive) in Bootstrap::parseDebugLevel().

How to log

After bootstrap.php or script_bootstrap.php:

php
\App::$log->info('Login successful', [
    'account' => $accountName,
]);

\App::$log->warning('Could not remove availability', [
    'availabilityId' => $availabilityId,
]);

\App::$log->error('SQL import failed', [
    'file' => basename($file),
    'exception' => $e->getMessage(),
]);

Use lowercase PSR-3 method names: debug, info, notice, warning, error, critical, alert, emergency.

Context arrays

Prefer structured context (second argument) over string concatenation. The JSON processor adds standard fields:

  • time_local, client_ip, remote_addr
  • application (App::IDENTIFIER)
  • module (App::MODULE_NAME)
  • cron, cron_name when ZMS_CRON_LOG / ZMS_CRON_NAME are set in cron shell scripts

Cron logging

Cron entrypoints export ZMS_CRON_LOG=1 and ZMS_CRON_NAME=zmsapi_hourly (example). Bootstrap::isCronLogging() adds searchable cron / cron_name fields to each JSON line.

Helpers such as zmsdb’s VerboseCronLogTrait use Bootstrap::normalizeLogLevelName() for configurable cron verbosity.

Libraries without full bootstrap

Shared packages (zmsdldb, zmsclient) may run without App. Use optional logging only when the class exists:

php
if (class_exists('\App', false) && isset(\App::$log)) {
    \App::$log->error('…', ['context' => $value]);
}

Do not use isset(\App::$log) alone — PHP will fatal if App is not loaded.

JSON log shape (example)

json
{
  "time_local": "2026-05-26T12:00:00+02:00",
  "client_ip": "127.0.0.1",
  "application": "zmsapi",
  "module": "zmsapi",
  "cron": true,
  "cron_name": "zmsapi_hourly",
  "message": "Migration check finished",
  "level": "INFO",
  "context": { "pending": 0 },
  "extra": []
}

Repository log inventory

The table below is generated automatically from App::$log->… calls in module PHP sources (excluding vendor/ and tests/). Regenerate locally:

bash
cd docs && npm run docs:log-inventory

It updates when you run npm run docs:dev or docs:build (VitePress config runs the generator first). Use the dropdown filters, search box, or click a column header to sort (toggle ascending/descending).

Generated: · 185 call(s) · Production PHP only (module src/cron/bin). Excludes vendor, tests, and test_mysql-style dev scripts under Importer/.

Showing 185 of 185 entries · sorted by module (asc)

zmsadmininfoLogin successfulzmsadmin/src/Zmsadmin/Index.php:87
zmsadmininfoLogin failed - invalid credentialszmsadmin/src/Zmsadmin/Index.php:105
zmsadmininfoUser already logged in - reusing existing sessionzmsadmin/src/Zmsadmin/Index.php:114
zmsadmininfoLogin failed - other errorzmsadmin/src/Zmsadmin/Index.php:130
zmsadmininfoUser logged outzmsadmin/src/Zmsadmin/Logout.php:34
zmsadminerrorOIDC Login errorzmsadmin/src/Zmsadmin/Oidc.php:52
zmsapiinfoDeleted availabilityzmsapi/src/Zmsapi/AvailabilityDelete.php:36
zmsapiinfoUpdated availabilityzmsapi/src/Zmsapi/AvailabilityListUpdate.php:112
zmsapiinfoCreated new availabilityzmsapi/src/Zmsapi/AvailabilityListUpdate.php:126
zmsapiwarningAvailabilityListUpdateFailed: Validation failedzmsapi/src/Zmsapi/AvailabilityListUpdate.php:57
zmsapiwarningNo input data providedzmsapi/src/Zmsapi/AvailabilityListUpdate.php:231
zmsapiwarningInvalid availabilityListzmsapi/src/Zmsapi/AvailabilityListUpdate.php:236
zmsapiwarningMissing scope id in availabilityzmsapi/src/Zmsapi/AvailabilityListUpdate.php:255
zmsapiwarningInconsistent scopes in availability listzmsapi/src/Zmsapi/AvailabilityListUpdate.php:261
zmsapicritical(dynamic)zmsapi/src/Zmsapi/Helper/ErrorHandler.php:69
zmsapidebugSend mailzmsapi/src/Zmsapi/ProcessConfirmationMail.php:64
zmsapidebugSend mailzmsapi/src/Zmsapi/ProcessDeleteMail.php:65
zmsapierrorExpected ProcessListCollection, received different typezmsapi/src/Zmsapi/ProcessListByClusterAndDate.php:87
zmsapidebugSend mailzmsapi/src/Zmsapi/ProcessPreconfirmationMail.php:62
zmsapiinfoProcess redirectedzmsapi/src/Zmsapi/ProcessRedirect.php:45
zmsapiinfoProcess parkedzmsapi/src/Zmsapi/WorkstationProcessParked.php:46
zmscitizenapiinfoMethod not allowedzmscitizenapi/bootstrap.php:72
zmscitizenapiwarningInvalid Office skippedzmscitizenapi/src/Zmscitizenapi/Models/Collections/OfficeList.php:26
zmscitizenapiwarningInvalid OfficeServiceRelation skippedzmscitizenapi/src/Zmscitizenapi/Models/Collections/OfficeServiceRelationList.php:27
zmscitizenapiwarningInvalid Service skippedzmscitizenapi/src/Zmscitizenapi/Models/Collections/ServiceList.php:26
zmscitizenapiwarningInvalid ThinnedScope skippedzmscitizenapi/src/Zmscitizenapi/Models/Collections/ThinnedScopeList.php:26
zmscitizenapidynamic(via $level)zmscitizenapi/src/Zmscitizenapi/Services/Core/LoggerService.php:209
zmscitizenapierror(expression)zmscitizenapi/src/Zmscitizenapi/Services/Core/LoggerService.php:127
zmscitizenapiinfo(expression)zmscitizenapi/src/Zmscitizenapi/Services/Core/LoggerService.php:143
zmscitizenapinoticeCache not available for rate limitingzmscitizenapi/src/Zmscitizenapi/Services/Core/LoggerService.php:46
zmscitizenapiwarningRate limiting errorzmscitizenapi/src/Zmscitizenapi/Services/Core/LoggerService.php:87
zmscitizenapiwarning(expression)zmscitizenapi/src/Zmscitizenapi/Services/Core/LoggerService.php:135
zmsclientinfoAuth session setzmsclient/src/Zmsclient/Auth.php:25
zmsclientinfoAuth session removedzmsclient/src/Zmsclient/Auth.php:61
zmsclienterrorOIDC Login invalid statezmsclient/src/Zmsclient/OidcHandler.php:61
zmsclienterrorOIDC Login workstation errorzmsclient/src/Zmsclient/OidcHandler.php:120
zmsclientinfoOIDC Login state validationzmsclient/src/Zmsclient/OidcHandler.php:51
zmsclientinfoOIDC Login workstation accesszmsclient/src/Zmsclient/OidcHandler.php:91
zmsclientinfoOIDC Login department checkzmsclient/src/Zmsclient/OidcHandler.php:103
zmsdberrorSQL import failedzmsdb/src/Zmsdb/Cli/Db.php:44
zmsdbinfoImporting SQL filezmsdb/src/Zmsdb/Cli/Db.php:32
zmsdbinfoSQL import finishedzmsdb/src/Zmsdb/Cli/Db.php:59
zmsdbinfoUsing database connectionzmsdb/src/Zmsdb/Cli/Db.php:87
zmsdbinfoPending migrationzmsdb/src/Zmsdb/Cli/Db.php:127
zmsdbinfoMigration check finishedzmsdb/src/Zmsdb/Cli/Db.php:138
zmsdbinfoCluster cache setzmsdb/src/Zmsdb/Cluster.php:40
zmsdbinfoCluster cache invalidatedzmsdb/src/Zmsdb/Cluster.php:352
zmsdbinfoDepartment cache setzmsdb/src/Zmsdb/Department.php:35
zmsdbinfoDepartment cache invalidatedzmsdb/src/Zmsdb/Department.php:351
zmsdberrorAnonymization process failedzmsdb/src/Zmsdb/Helper/AnonymizeStatisticDataByCron.php:53
zmsdbinfoUsing retention period from admin system configzmsdb/src/Zmsdb/Helper/AnonymizeStatisticDataByCron.php:25
zmsdbinfoUsing default retention periodzmsdb/src/Zmsdb/Helper/AnonymizeStatisticDataByCron.php:30
zmsdbinfoBeginning anonymizationzmsdb/src/Zmsdb/Helper/AnonymizeStatisticDataByCron.php:40
zmsdbinfoAnonymization process completed successfullyzmsdb/src/Zmsdb/Helper/AnonymizeStatisticDataByCron.php:49
zmsdbnoticeAnonymization dry run — no database changeszmsdb/src/Zmsdb/Helper/AnonymizeStatisticDataByCron.php:58
zmsdbinfoDeleting quota older than given periodzmsdb/src/Zmsdb/Helper/ApiQuotaDeleteByCron.php:17
zmsdbinfoProcessing quotazmsdb/src/Zmsdb/Helper/ApiQuotaDeleteByCron.php:29
zmsdbinfoNo expired quota was foundzmsdb/src/Zmsdb/Helper/ApiQuotaDeleteByCron.php:36
zmsdbinfoQuota successfully removedzmsdb/src/Zmsdb/Helper/ApiQuotaDeleteByCron.php:47
zmsdbinfoKeep quotazmsdb/src/Zmsdb/Helper/ApiQuotaDeleteByCron.php:53
zmsdbwarningCould not remove quotazmsdb/src/Zmsdb/Helper/ApiQuotaDeleteByCron.php:50
zmsdbinfoReading availability listzmsdb/src/Zmsdb/Helper/AvailabilityDeleteByCron.php:25
zmsdbinfoWould remove availabilityzmsdb/src/Zmsdb/Helper/AvailabilityDeleteByCron.php:31
zmsdbinfoAvailability successfully removedzmsdb/src/Zmsdb/Helper/AvailabilityDeleteByCron.php:40
zmsdbwarningCould not remove availabilityzmsdb/src/Zmsdb/Helper/AvailabilityDeleteByCron.php:43
zmsdbinfoCalculateDailyWaitingStatisticByCron startedzmsdb/src/Zmsdb/Helper/CalculateDailyWaitingStatisticByCron.php:19
zmsdbinfoCalculateDailyWaitingStatisticByCron finishedzmsdb/src/Zmsdb/Helper/CalculateDailyWaitingStatisticByCron.php:25
zmsdbinfo[DRY RUN] update scope statisticszmsdb/src/Zmsdb/Helper/CalculateDailyWaitingStatisticByCron.php:195
zmsdbinfo(expression)zmsdb/src/Zmsdb/Helper/CalculateSlots.php:29
zmsdbinfo(expression)zmsdb/src/Zmsdb/Helper/CalculateSlots.php:42
zmsdbinfo(expression)zmsdb/src/Zmsdb/Helper/CleanProcessArchivedToday.php:24
zmsdbinfoExecuting archived process cleanup with commitzmsdb/src/Zmsdb/Helper/CleanProcessArchivedToday.php:32
zmsdbinfoArchived process cleanup completedzmsdb/src/Zmsdb/Helper/CleanProcessArchivedToday.php:34
zmsdbinfo(expression)zmsdb/src/Zmsdb/Helper/EventLogCleanUpByCron.php:28
zmsdbinfo(expression)zmsdb/src/Zmsdb/Helper/LogCleanUp.php:29
zmsdbinfoStarting log cleanup processzmsdb/src/Zmsdb/Helper/LogCleanUp.php:35
zmsdbinfoLog cleanup config loadedzmsdb/src/Zmsdb/Helper/LogCleanUp.php:40
zmsdbinfoExecuting log cleanup with commitzmsdb/src/Zmsdb/Helper/LogCleanUp.php:47
zmsdbinfoLog cleanup completedzmsdb/src/Zmsdb/Helper/LogCleanUp.php:49
zmsdbinfoWorkstation logoutzmsdb/src/Zmsdb/Helper/LogoutWorkstations.php:32
zmsdbinfo(expression)zmsdb/src/Zmsdb/Helper/ReservedDataDeleteByCron.php:81
zmsdbinfo(expression)zmsdb/src/Zmsdb/Helper/SendMailReminder.php:53
zmsdbinfoSend process list of current day to scope adminzmsdb/src/Zmsdb/Helper/SendProcessListToScopeAdmin.php:20
zmsdbinfoProcessing scopezmsdb/src/Zmsdb/Helper/SendProcessListToScopeAdmin.php:35
zmsdbinfoSend processList to scope adminzmsdb/src/Zmsdb/Helper/SendProcessListToScopeAdmin.php:47
zmsdbwarningProcesslist empty for scopezmsdb/src/Zmsdb/Helper/SendProcessListToScopeAdmin.php:52
zmsdbwarningMail writing in queue not successfulzmsdb/src/Zmsdb/Helper/SendProcessListToScopeAdmin.php:62
zmsdbinfoDeleting expired ticketprinter older than 30 dayszmsdb/src/Zmsdb/Helper/TicketprinterDeleteByCron.php:20
zmsdbinfoProcessing ticketprinterzmsdb/src/Zmsdb/Helper/TicketprinterDeleteByCron.php:31
zmsdbinfoTicketprinter successfully removedzmsdb/src/Zmsdb/Helper/TicketprinterDeleteByCron.php:43
zmsdbwarningCould not remove ticketprinterzmsdb/src/Zmsdb/Helper/TicketprinterDeleteByCron.php:45
zmsdberrorError during log cleanupzmsdb/src/Zmsdb/Log.php:247
zmsdberrorFreeProcesszmsdb/src/Zmsdb/Query/SlotList.php:220
zmsdbinfoScope cache setzmsdb/src/Zmsdb/Scope.php:41
zmsdbinfoScope cache setzmsdb/src/Zmsdb/Scope.php:136
zmsdbinfoScope cache setzmsdb/src/Zmsdb/Scope.php:187
zmsdbinfoScope cache setzmsdb/src/Zmsdb/Scope.php:254
zmsdbinfoScope cache setzmsdb/src/Zmsdb/Scope.php:334
zmsdbinfoScope cache invalidatedzmsdb/src/Zmsdb/Scope.php:720
zmsdberrorFailed to optimize table with query: $query. Error: zmsdb/src/Zmsdb/Slot.php:501
zmsdbinfoavailability: zmsdb/src/Zmsdb/Slot.php:223
zmsdbinfoUseraccount cache hitzmsdb/src/Zmsdb/Useraccount.php:272
zmsdbinfoUseraccount cache setzmsdb/src/Zmsdb/Useraccount.php:295
zmsdbinfoUseraccount list cache hitzmsdb/src/Zmsdb/Useraccount.php:333
zmsdbinfoUseraccount list cache setzmsdb/src/Zmsdb/Useraccount.php:374
zmsdbinfoUseraccount department list cache hitzmsdb/src/Zmsdb/Useraccount.php:596
zmsdbinfoUseraccount department list cache setzmsdb/src/Zmsdb/Useraccount.php:638
zmsdbinfo(expression)zmsdb/src/Zmsdb/Useraccount.php:851
zmsdbinfo(expression)zmsdb/src/Zmsdb/Useraccount.php:865
zmsdbinfoUseraccount role list cache hitzmsdb/src/Zmsdb/Useraccount.php:1014
zmsdbinfoUseraccount role list cache setzmsdb/src/Zmsdb/Useraccount.php:1045
zmsdbinfoUseraccount role and department list cache hitzmsdb/src/Zmsdb/Useraccount.php:1075
zmsdbinfoUseraccount role and department list cache setzmsdb/src/Zmsdb/Useraccount.php:1108
zmsdbinfoUseraccount caches invalidated after mutationzmsdb/src/Zmsdb/Useraccount.php:1159
zmsdbwarningTemporary user_role assignment failedzmsdb/src/Zmsdb/Useraccount.php:692
zmsdbwarninguser_role update on useraccount save failedzmsdb/src/Zmsdb/Useraccount.php:768
zmsdldberrorSpecified rollback day does not exist in backupszmsdldb/bin/dldb-helpers.php:94
zmsdldberrorFailed to rollback filezmsdldb/bin/dldb-helpers.php:105
zmsdldberrorFailed to backup filezmsdldb/bin/dldb-helpers.php:152
zmsdldbinfoRetention period set in admin system configzmsdldb/bin/dldb-helpers.php:48
zmsdldbinfoUsing default retention periodzmsdldb/bin/dldb-helpers.php:55
zmsdldbinfoRollback day set in admin system configzmsdldb/bin/dldb-helpers.php:65
zmsdldbinfoUsing default no rollbackzmsdldb/bin/dldb-helpers.php:69
zmsdldbinfoRollback requestedzmsdldb/bin/dldb-helpers.php:79
zmsdldbinfoRolling back using backupzmsdldb/bin/dldb-helpers.php:99
zmsdldbinfoRolled back filezmsdldb/bin/dldb-helpers.php:108
zmsdldbinfoChecking if backup is requiredzmsdldb/bin/dldb-helpers.php:117
zmsdldbinfoBackup is requiredzmsdldb/bin/dldb-helpers.php:141
zmsdldbinfoBackup createdzmsdldb/bin/dldb-helpers.php:155
zmsdldbinfoFetching the backup retention periodzmsdldb/bin/dldb-helpers.php:163
zmsdldbinfoDeleted old backupzmsdldb/bin/dldb-helpers.php:177
zmsdldbwarningInvalid retention value, falling back to 7 dayszmsdldb/bin/dldb-helpers.php:51
zmsdldbwarningNo backups directoryzmsdldb/bin/dldb-helpers.php:84
zmsdldberrorDLDB access locale missingzmsdldb/src/Zmsdldb/AbstractAccess.php:146
zmsdldbwarningUnexpected array in service meta hash during importzmsdldb/src/Zmsdldb/Importer/MySQL/Entity/Service.php:276
zmsmessagingdebugMail send detailszmsmessaging/bin/mail_queue.php:34
zmsmessagingerrorMail queue transmission errorzmsmessaging/bin/mail_queue.php:22
zmsmessaginginfoMail sent from queuezmsmessaging/bin/mail_queue.php:28
zmsmessagingnoticeUse with --send to send emails.zmsmessaging/bin/mail_queue.php:14
zmsmessagingnoticeMail queue emptyzmsmessaging/bin/mail_queue.php:20
zmsmessagingdebug(expression)zmsmessaging/src/Zmsmessaging/BaseController.php:173
zmsmessaginginfo(expression)zmsmessaging/src/Zmsmessaging/BaseController.php:175
zmsmessagingwarning(expression)zmsmessaging/src/Zmsmessaging/BaseController.php:68
zmsmessaginginfoMail processed from queuezmsmessaging/src/Zmsmessaging/Mail.php:166
zmsmessaginginfoMail queue batch finishedzmsmessaging/src/Zmsmessaging/Mail.php:200
zmsmessagingwarning(expression)zmsmessaging/src/Zmsmessaging/Mail.php:226
zmsmessagingwarning(expression)zmsmessaging/src/Zmsmessaging/Mail.php:230
zmsslimwarningCould not write router cache filezmsslim/src/Slim/Bootstrap.php:310
zmsslimerrorFailed to fetch changelog: zmsslim/src/Slim/Helper/BaseChangelogHelper.php:31
zmsslimerrorOIDC login failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:57
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:106
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:114
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:122
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:140
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:150
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:161
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:175
zmsslimerrorToken validation failedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:190
zmsslimerrorFailed to get access tokenzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:229
zmssliminfoOIDC login attemptzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:30
zmssliminfoClearing existing sessionzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:42
zmssliminfoOIDC login successfulzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:52
zmssliminfoValidating OIDC tokenzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:98
zmssliminfoToken validation successfulzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:200
zmssliminfoGetting access tokenzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:216
zmssliminfoAccess token obtainedzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:223
zmssliminfoWriting token to sessionzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:244
zmssliminfoDeleting sessionzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:258
zmssliminfoReading token from sessionzmsslim/src/Slim/Middleware/OAuth/KeycloakInstance.php:271
zmsslimerrorUnknown OIDC provider requestedzmsslim/src/Slim/Middleware/OAuthMiddleware.php:71
zmsslimerror[Human zmsslim/src/Slim/Middleware/Session/SessionHuman.php:60
zmsslimerror(dynamic)zmsslim/src/Slim/Middleware/Session/SessionHuman.php:66
zmsslimnotice(dynamic)zmsslim/src/Slim/Middleware/Session/SessionHuman.php:44
zmsslimnotice(dynamic)zmsslim/src/Slim/Middleware/Session/SessionHuman.php:51
zmsslimcriticalPHP-Exception #{$extendedInfo[zmsslim/src/Slim/TwigExceptionHandler.php:76
zmsslimcritical(dynamic)zmsslim/src/Slim/TwigExceptionHandler.php:78
zmsslimcriticalNot catchable exception while rendering error pagezmsslim/src/Slim/TwigExceptionHandler.php:97
zmsstatisticinfoLogin successfulzmsstatistic/src/Zmsstatistic/Index.php:91
zmsstatisticinfoLogin failed - invalid credentialszmsstatistic/src/Zmsstatistic/Index.php:109
zmsstatisticinfoUser already logged in - reusing existing sessionzmsstatistic/src/Zmsstatistic/Index.php:118
zmsstatisticinfoLogin failed - other errorzmsstatistic/src/Zmsstatistic/Index.php:134
zmsstatisticinfoUser logged outzmsstatistic/src/Zmsstatistic/Logout.php:37
zmsstatisticerrorOIDC Login errorzmsstatistic/src/Zmsstatistic/Oidc.php:52
zmsticketprinterdebugHOMEURLzmsticketprinter/src/Zmsticketprinter/Helper/HomeUrl.php:34
zmsticketprinterwarningError in getByHash, creating new organisation hashzmsticketprinter/src/Zmsticketprinter/Helper/Ticketprinter.php:41
  • zmsslim/src/Slim/Application.phpZMS_DEBUGLEVEL, DEBUGLEVEL, public static $log
  • zmsslim/src/Slim/Bootstrap.phpconfigureLogger(), ensureLogger(), normalizeLogLevelName()
  • zmsslim/README.md — Slim bootstrap overview