Sie können eine Klasse konfigurieren, die einen internen Cronjob (ohne Profil) erstellt, der alte Dateien löscht. Dafür gibt es eine ältere Klasse und eine leistungsfähigere neue Klasse. Gelöschte Dateien werden dauerhaft entfernt.
Legacy-Klasse
Bitte verwenden Sie für neue Entwicklungen die neue Klasse.
Aktivieren Sie folgenden Abschnitt in der Konfigurationsdatei ./etc/cron.xml. Hiermit wird ein Cronjob definiert, der alle 10 Minuten alte Dateien löscht.
...
<Call name="addJob">
<Arg>
<New class="com.ebd.hub.services.cron.CronJob">
<Arg>Remove files</Arg>
<Arg>
<New class="com.ebd.hub.services.cron.DeleteFilesCronJob">
<Set name="configFilename">./conf/sample_delete_cron_old.properties</Set>
</New>
</Arg>
<Call name="setTimeSchedule">
<Arg>
<New class="com.ebd.hub.services.cron.Schedule">
<Arg type="long">600000</Arg>
</New>
</Arg>
</Call>
</New>
</Arg>
</Call>
...Im Parameter configFilename ist der Pfad zu einer Properties-Datei anzugeben, die die spezifischen Einstellungen zum Löschen enthält.
# sample config for cron job to delete files within named directory
# define the entry folder to look for
directory=./tmp
# do this for sub folders within named directory as well
recursive=true
# define file pattern for selecting files
file.pattern=*.tmp
# files older than 7 days are being removed
retain.days=7Neue Klasse (DeleteFilesCronJobWithPathSupport)
Fügen Sie den folgenden Abschnitt in die Konfigurationsdatei ./etc/cron.xml ein.
...
<Call name="addJob">
<Arg>
<New class="com.ebd.hub.services.cron.CronJob">
<Arg>Remove files</Arg>
<Arg>
<New class="com.ebd.hub.services.cron.DeleteFilesCronJobWithWildCardSupport">
<Set name="configFilename">./conf/sample_wildcard_delete_cron.properties</Set>
</New>
</Arg>
<Call name="setTimeSchedule">
<Arg>
<New class="com.ebd.hub.services.cron.Schedule">
<Arg type="long">600000</Arg>
</New>
</Arg>
</Call>
</New>
</Arg>
</Call>
...Cron-Job-Name
Der Name des Cron-Jobs wird in der Klasse CronJob festgelegt. In diesem Fall lautet der Name “Remove files“.
Cron-Job-Intervall
Das Cron-Intervall wird in der Klasse Schedule in Millisekunden festgelegt. In diesem Fall: 600000 Millisekunden 10 Minuten.
Konfigurationsdatei
Die detaillierten Parameter der Klasse werden in einer Properties-Datei festgelegt, die im Parameter configFilename angegeben ist.
Beispiel 1:
directory=./var/logs
file.pattern=*.log
exclude.pattern=*.tmp;important/*
retain.days=30
recursive=true
verbose=falseDiese einfache Konfiguration ist abwärtskompatibel, was bedeutet, dass Sie die Properties-Dateien verwenden können, die Sie mit der alten Klasse verwendet haben.
Beispiel 2:
# Default/Global settings (optional fallback)
retain.days=30
recursive=true
verbose=true
# Path configuration 1
path.1.directory=./var/logs/application
path.1.pattern=*.log;*.txt
path.1.exclude=important/*;*backup*
path.1.retain.days=7
path.1.recursive=true
# Path configuration 2
path.2.directory=./var/logs/system
path.2.pattern=*.log
path.2.exclude=critical/*;audit/*
path.2.retain.days=90
path.2.recursive=false
# Path configuration 3
path.3.directory=./tmp/cache;/tmp/temp
path.3.pattern=*.*
path.3.retain.days=1Wie Sie sehen können, können Sie in den erweiterten Einstellungen mehrere Löschpfade (mit spezifischen Parametern) definieren. Wenn ein optionaler Parameter für einen Pfad nicht festgelegt ist, gilt der jeweilige globale Defaultwert.
Parameter (globale Default-Werte)
Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
directory | String | Kein Default-Wert. | (Pflicht) Durch Semikolons getrennte Liste der zu überwachenden Verzeichnisse. Nicht vorhandene Verzeichnisse werden übersprungen. |
file.pattern | String | *.* | (optional) Durch Semikolons getrennte Dateieinbindungsmuster. |
exclude.pattern | String | Kein Default-Wert. | (optional) Durch Semikolons getrennte Dateiausschlussmuster. |
retain.days | Integer | 7 | (optional) Anzahl der Tage, die die Dateien aufbewahrt werden sollen. Muss ≥ 1 sein (bei Null oder negativen Werten wird die Ausführung übersprungen). |
recursive | Boolean | false | (optional) Unterverzeichnisse rekursiv scannen? |
verbose | Boolean | false | (optional) Detailliertes Logging aktivieren? |
Parameter (Pfad-spezifisch)
Der Platzhalter N kann zwischen 1 und 100 liegen.
Parameter | Typ | Beschreibung |
|---|---|---|
path.N.directory | String | (Pflicht) Durch Semikolons getrennte Liste der zu überwachenden Verzeichnisse. Nicht vorhandene Verzeichnisse werden übersprungen. |
path.N.pattern | String | (optional) Durch Semikolons getrennte Dateieinbindungsmuster. Überschreibt den globalen Parameter file.pattern. |
path.N.exclude | String | (optional) Durch Semikolons getrennte Dateiausschlussmuster. Überschreibt den globalen Parameter exclude.pattern. |
path.N.retain.days | Integer | (optional) Anzahl der Tage, die die Dateien aufbewahrt werden sollen. Überschreibt den globalen Parameter retain.days. |
path.N.recursive | Boolean | (optional) Unterverzeichnisse rekursiv scannen? Überschreibt den globalen Parameter recursive. |
Pattern Matching
Pattern | Beschreibung | Match |
|---|---|---|
* | Matcht beliebige Zeichen. | *.log matches all .log files |
*.* | Matcht jede Datei mit Dateiendung. | Matches all files with dots |
test* | Matcht Dateien, die mit "test" beginnen. | test.log and test123.txt matches |
*backup* | Matcht Dateien, die "backup" enthalten. | mybackup.sql and backup_old.zip matches |
Muster, die / enthalten, werden mit dem vollständigen relativen Pfad abgeglichen.
Pattern | Beschreibung | Match |
|---|---|---|
logs/*/*.tmp | Temp-Dateien in Unterverzeichnissen. | logs/app/cache.tmp |
*/temp/* | Alle Dateien in Temp-Ordnern. | data/temp/file.txt |
important/* | Alle Dateien in Verzeichnis “important”. | important/data.xml |
*backup*/* | Alle Dateien in Verzeichnissen, die im Namen "backup" enthalten. | mybackup/file.txt |
Verwenden Sie das Präfix regex: für komplexe Muster. Falsche Regex-Muster führen zu Fehlern.
file.pattern=regex:.*\.(log|txt)$
exclude.pattern=regex:.*_(backup|archive)_.*Wo kann ich meinen Cronjob sehen?
Um Ihren Cron-Job anzuzeigen, navigieren Sie zu “Control Center → Jobs → Cron jobs“, wählen Sie “Kalenderdarstellung“ aus und aktivieren Sie die Option “Alle Cron-Jobs anzeigen“ (da es sich um einen internen Cron-Job und nicht um einen Profil-Cron-Job handelt).

Eine weitere Möglichkeit besteht darin, zu “Verwaltung→ Admin-Konsole” und dann zu “Services → CronJobService” zu navigieren.

Logging
Um die Log-Nachrichten Ihres Cron-Jobs anzuzeigen, navigieren Sie zu „Verwaltung → Server logging → CronLogManager”.

Anwendungsbeispiele generell
Beispiel 1: Application-Logs bereinigen
# Clean logs older than 7 days, keep important logs
directory=./opt/app/logs
file.pattern=*.log;*.out
exclude.pattern=error.log;fatal.log;important/*
retain.days=7
recursive=true
verbose=trueBeispiel 2: Bereinigung mehrerer Verzeichnisse
# Default settings
retain.days=30
recursive=true
# Application logs - keep 7 days
path.1.directory=./var/log/myapp
path.1.pattern=*.log
path.1.exclude=audit/*;security/*
path.1.retain.days=7
# System logs - keep 90 days
path.2.directory=./var/log/system
path.2.pattern=*.log
path.2.retain.days=90
# Temp files - delete after 1 day
path.3.directory=./tmp/app;./tmp/cache
path.3.pattern=*.*
path.3.retain.days=1Beispiel 3: Fortgeschrittene Exclusions
directory=./data/uploads
file.pattern=*.*
exclude.pattern=*important*;*/archive/*;*/backup/*;permanent/*
retain.days=14
recursive=trueBeispiel 4: Regex-basierte Bereinigung
directory=./logs
file.pattern=regex:^(debug|trace)_.*\.log$
exclude.pattern=regex:.*_(critical|fatal)_.*
retain.days=3
recursive=true