My Schedule Nutzungsprotokoll

Aus Asprova Hilfe
Version vom 19. April 2026, 10:06 Uhr von GK (Diskussion | Beiträge) (Konfiguration)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Asprova My Schedule

Achtung, dies ist derzeit eine experimentelle Funktion, deren Verhalten sich in zukünftigen Versionen ändern kann!

Asprova My Schedule bzw. Asprova WS können Benutzerereignisse wie Einloggen, Ausloggen und Datenzugriffe protokollieren. Die Protokollierung kann ggf. die Geschwindigkeit des Servers beeinträchtigen.

Konfiguration

Standardmäßig ist die Protokollierung deaktiviert. Über die Konfigurationsdatei config.json können Sie die Protokollierung aktivieren und steuern.

Parameter Standardwert Beschreibung
enable_usage_log false Protokollierung ein- oder ausschalten
usage_log_retention "30d" Aufbewahrungsfrist bevor Protokolle automatisch gelöscht werden.

Um die Protokollierung zu aktivieren, so setzen Sie in der Datei folgendes:

{
  "enable_usage_log": true
}

Logdateien

Die Dateien der Nutzungsprotokolle werden im \data Unterverzeichnis des Serververzeichnisses (i.d.R. C:\ProgramData\Asprova\Asprova My Schedule\WS) abgelegt. Für jeden Tag wird eine neue Datei (NDJSON bzw. line-delimited JSON) mit Dateinamen usage-YYYY-MM-DD.log angelegt. Alte Dateien werden nach Ablauf der Aufbewahrungsfrist automatisch gelöscht.

Jede Zeile ist ein JSON-Objekt mit den folgenden Eigenschaften:

Schlüssel Beschreibung
eventType Ereignistyp
user Benutzer, welcher das Ereignis ausgelöst hat (falls zutreffend)
userId Benutzer-ID
username Benutzername
req Informationen zum HTTP-Request, welcher das Ereignis ausgelöst hat (falls zutreffend)
method HTTP-Methode (z.B. POST)
path Der angefragt Pfad (z.B. /api/auth/login)
ip IP-Adresse des Clients
details Weitere Informationen zum im Kontext des Ereignisses
timestamp Zeitstempel des Ereignisses
level Schwere des Ereignisses (derzeit nur "info")
Hinweis 
Die Reihenfolge der Schlüssel ist (derzeit noch) nicht fest vorgegeben.

Ereignisse

Die folgenden Ereignisse werden protokolliert:

Ereignistyp Beschreibung Zusätzlicher Hinweis Details Beschreibung der Details
ws:server:start Server (bzw. Dienst) wurde gestartet port Horchender Port
https HTTPS-Aktivierungsstatus
ws:user:created Benutzer wurde hinzugefügt ID ID des neuen Benutzers
username Benutzername des neuen Benutzers
type Authentifizierungsart des neuen Benutzers
roles Berechtigungen des neuen Benutzers
ws:user:login:success Benutzer hat sich erfolgreich eingeloggt Nicht zutreffend
ws:user:login:failure Einloggen des Benutzers ist fehlgeschlagen user wird hier nicht gesetzt username Benutzername des Einlogversuchs
reason Grund des Fehlschlagens
ws:user:removed Benutzer wurde gelöscht user ist hier der löschende Benutzer ID ID des gelöschten Benutzers
username Benutzername des gelöschten Benutzers
ws:user:logout Benutzer hat sich ausgeloggt Nicht zutreffend
my-schedule:license:ccu:added Neue CCU-Verbindung wurde akzeptiert "CCU" = Concurrent User pool CCU-Pool (Plan) dem Benutzer hinzugefügt wurde
currentCount Anzahl gleichzeitiger Benutzer nachdem diese Verbindung akzeptiert wurde
maxCount Maximal erlaubte Anzahl gleichzeitiger Benutzer in diesem Plan
my-schedule:license:ccu:max-reached Verbindung wurde verweigert, da maximal erlaubte Anzahl gleichzeitiger Benutzer bereits erreicht ist pool CCU-Pool dessen maximale Anzahl erreicht wurde
currentCount Gegenwärtige Anzahl gleichzeitiger Benutzer in diesem Plan
maxCount Maximal erlaubte Anzahl gleichzeitiger Benutzer in diesem Plan
my-schedule:license:ccu:released-with-logout CCU-Verbindung wurde durch Logout freigegeben pool CCU-Pool aus dem Benutzer entfernt wurde
currentCount Gegenwärtige Anzahl gleichzeitiger Benutzer in diesem Plan
maxCount Maximal erlaubte Anzahl gleichzeitiger Benutzer in diesem Plan
my-schedule:license:ccu:expired CCU-Verbindung wurde wegen Inaktivität freigegeben pool CCU-Pool aus dem Benutzer entfernt wurde
currentCount Gegenwärtige Anzahl gleichzeitiger Benutzer in diesem Plan
maxCount Maximal erlaubte Anzahl gleichzeitiger Benutzer in diesem Plan
my-schedule:license:maintenance-mode:entered Aufgrund unzureichender freier Lizenzen ist Server in Wartungsmodus gewechselt Nicht zutreffend
my-schedule:license:maintenance-mode:left Server hat Wartungsmodus verlassen Nicht zutreffend
my-schedule:view:accessed Benutzer hat auf Ansicht zugegriffen Ereignis wird dedupliziert (d.h. innerhalb eines kleinen Zeitfensters wird je Benutzer, Projekt und Ansicht nur ein Ereignis protokolliert) projectId Projekt-ID
viewName Ansichtsname (z.B. "ResGantt" oder "DispatchingView")
my-schedule:view:uploaded Für Ansicht wurden Daten hochgeladen projectId Projekt-ID
viewName Ansichtsname (z.B. "ResGantt" oder "DispatchingView")

Analyse mit DuckDB

Dieser Abschnitt beschreibt die beispielhafte und optionale Analyse der Nutzungsprotokolle mittels der kostenfreien Software DuckDB. Weder ist dies der von uns empfohlene Weg, noch können wir für DuckDB Unterstützung leisten.

Vorbereitung

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell
  2. Starten Sie DuckDB
  3. Setzen Sie in DuckDB das Protokollverzeichnis von Asprova WS als Arbeitsverzeichnis
  4. Erstellen Sie eine View:

Um das Nutzungsprotokoll eines bestimmten Tages abzufragen:

CREATE VIEW usage_logs AS SELECT * FROM read_json_auto('usage-2026-04-10.log');

Um alle Nutzungsprotokolle abzufragen:

CREATE VIEW usage_logs AS SELECT * FROM read_json_auto('usage-*.log', filename=true);

Beispiele

Ereignisse nach Ereignistyp zählen

SELECT eventType, count(*) AS count
FROM usage_logs
GROUP BY eventType
ORDER BY count DESC;

Fehlgeschlagene Einlogversuche

SELECT timestamp, details.username, req.ip
FROM usage_logs
WHERE eventType = 'ws:user:login:failure'
ORDER BY timestamp;

Ansichtszugriffe aktiver Benutzer

SELECT "user".username, details.projectId, details.viewName, count(*) AS accesses
FROM usage_logs
WHERE eventType = 'my-schedule:view:accessed'
GROUP BY "user".username, details.projectId, details.viewName
ORDER BY accesses DESC;

CCU-Nutzung im Zeitverlauf

SELECT timestamp, eventType, details.pool, details.currentCount, details.maxCount
FROM usage_logs
WHERE eventType LIKE 'my-schedule:license:ccu:%'
ORDER BY timestamp;

Asprova My Schedule