🎉 Fix for JOBS_UNDEFINED and LOG_EXPORT issues, updated documentation 📚 in backend/docs.
This commit is contained in:
@ -5842,6 +5842,84 @@ def api_logs():
|
||||
'error': f'Fehler beim Abrufen der Log-Daten: {str(e)}'
|
||||
}), 500
|
||||
|
||||
@app.route('/api/admin/logs/export', methods=['GET'])
|
||||
@login_required
|
||||
@admin_required
|
||||
def export_admin_logs():
|
||||
"""
|
||||
Exportiert System-Logs als ZIP-Datei
|
||||
|
||||
Sammelt alle verfügbaren Log-Dateien und komprimiert sie in eine herunterladbare ZIP-Datei
|
||||
"""
|
||||
try:
|
||||
import os
|
||||
import zipfile
|
||||
import tempfile
|
||||
from datetime import datetime
|
||||
|
||||
# Temporäre ZIP-Datei erstellen
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
zip_filename = f"myp_logs_{datetime.now().strftime('%Y%m%d_%H%M%S')}.zip"
|
||||
zip_path = os.path.join(temp_dir, zip_filename)
|
||||
|
||||
log_dir = os.path.join(os.path.dirname(__file__), 'logs')
|
||||
|
||||
# Prüfen ob Log-Verzeichnis existiert
|
||||
if not os.path.exists(log_dir):
|
||||
app_logger.warning(f"Log-Verzeichnis nicht gefunden: {log_dir}")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": "Log-Verzeichnis nicht gefunden"
|
||||
}), 404
|
||||
|
||||
# ZIP-Datei erstellen und Log-Dateien hinzufügen
|
||||
files_added = 0
|
||||
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
|
||||
for root, dirs, files in os.walk(log_dir):
|
||||
for file in files:
|
||||
if file.endswith('.log'):
|
||||
file_path = os.path.join(root, file)
|
||||
try:
|
||||
# Relativen Pfad für Archiv erstellen
|
||||
arcname = os.path.relpath(file_path, log_dir)
|
||||
zipf.write(file_path, arcname)
|
||||
files_added += 1
|
||||
app_logger.debug(f"Log-Datei hinzugefügt: {arcname}")
|
||||
except Exception as file_error:
|
||||
app_logger.warning(f"Fehler beim Hinzufügen der Datei {file_path}: {str(file_error)}")
|
||||
continue
|
||||
|
||||
# Prüfen ob Dateien hinzugefügt wurden
|
||||
if files_added == 0:
|
||||
# Leere ZIP-Datei löschen
|
||||
try:
|
||||
os.remove(zip_path)
|
||||
os.rmdir(temp_dir)
|
||||
except:
|
||||
pass
|
||||
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": "Keine Log-Dateien zum Exportieren gefunden"
|
||||
}), 404
|
||||
|
||||
app_logger.info(f"System-Logs exportiert: {files_added} Dateien in {zip_filename}")
|
||||
|
||||
# ZIP-Datei als Download senden
|
||||
return send_file(
|
||||
zip_path,
|
||||
as_attachment=True,
|
||||
download_name=zip_filename,
|
||||
mimetype='application/zip'
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler beim Exportieren der Logs: {str(e)}")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": f"Fehler beim Exportieren: {str(e)}"
|
||||
}), 500
|
||||
|
||||
# ===== FEHLENDE ADMIN API-ENDPUNKTE =====
|
||||
|
||||
@app.route("/api/admin/database/status", methods=['GET'])
|
||||
|
Reference in New Issue
Block a user