diff --git a/app.py b/app.py index 1c27263..149fcf2 100644 --- a/app.py +++ b/app.py @@ -585,6 +585,19 @@ def schedule_auto_export_job(): cron_used = s.export_cron if s.export_cron else "0 */12 * * *" print(f"[DEBUG] schedule_auto_export_job -> cron_schedule={cron_used}") +def cleanup_old_logs(): + with app.app_context(): + s = get_settings() + cutoff_date = datetime.utcnow() - timedelta(days=s.log_retention_days) + old_logs = OperationLog.query.filter(OperationLog.timestamp < cutoff_date).all() + deleted_count = len(old_logs) + for log in old_logs: + db.session.delete(log) + db.session.commit() + log_operation(f"Automatyczna retencja logów: usunięto {deleted_count} logów starszych niż {s.log_retention_days} dni.") + + + ############################################################################### # Konfiguracja APScheduler - harmonogram zadań ############################################################################### @@ -619,6 +632,7 @@ def reschedule_jobs(): schedule_auto_export_job() schedule_retention_job() schedule_auto_binary_backup_job() + scheduler.add_job(func=cleanup_old_logs, trigger='interval', days=1, id="cleanup_logs_job", replace_existing=True) ############################################################################### # Filtr Jinja2 - basename @@ -1388,6 +1402,8 @@ if __name__ == '__main__': schedule_retention_job() schedule_auto_export_job() schedule_auto_binary_backup_job() + scheduler.add_job(func=cleanup_old_logs, trigger='interval', days=1, id="cleanup_logs_job") + scheduler.start() atexit.register(lambda: scheduler.shutdown()) app.run(host='0.0.0.0', port=5581, use_reloader=False, debug=True)