@@ -393,8 +393,8 @@ def get_recent_logs(experiment: str) -> ResponseReturnValue:
393393 return jsonify (recent_logs )
394394
395395
396- @api .route ("/experiments/<experiment>/ logs" , methods = ["GET" ])
397- def get_exp_logs ( experiment : str ) -> ResponseReturnValue :
396+ @api .route ("/logs" , methods = ["GET" ])
397+ def get_logs ( ) -> ResponseReturnValue :
398398 """Shows event logs from all units, uses pagination."""
399399
400400 skip = int (request .args .get ("skip" , 0 ))
@@ -403,21 +403,15 @@ def get_exp_logs(experiment: str) -> ResponseReturnValue:
403403 recent_logs = query_app_db (
404404 f"""SELECT l.timestamp, level, l.pioreactor_unit, message, task, l.experiment
405405 FROM logs AS l
406- JOIN experiment_worker_assignments_history h
407- on h.pioreactor_unit = l.pioreactor_unit
408- and h.assigned_at <= l.timestamp
409- and DATETIME(l.timestamp) <= DATETIME(coalesce(h.unassigned_at, STRFTIME('%Y-%m-%dT%H:%M:%f000Z', 'NOW')), '+5 seconds')
410- WHERE (l.experiment=? )
411- AND ({ get_level_string (min_level )} )
412- ORDER BY l.timestamp DESC LIMIT 50 OFFSET { skip } ;""" ,
413- (experiment ,),
406+ WHERE ({ get_level_string (min_level )} )
407+ ORDER BY l.timestamp DESC LIMIT 50 OFFSET { skip } ;"""
414408 )
415409
416410 return jsonify (recent_logs )
417411
418412
419- @api .route ("/logs" , methods = ["GET" ])
420- def get_logs ( ) -> ResponseReturnValue :
413+ @api .route ("/experiments/<experiment>/ logs" , methods = ["GET" ])
414+ def get_exp_logs ( experiment : str ) -> ResponseReturnValue :
421415 """Shows event logs from all units, uses pagination."""
422416
423417 skip = int (request .args .get ("skip" , 0 ))
@@ -426,8 +420,14 @@ def get_logs() -> ResponseReturnValue:
426420 recent_logs = query_app_db (
427421 f"""SELECT l.timestamp, level, l.pioreactor_unit, message, task, l.experiment
428422 FROM logs AS l
429- WHERE ({ get_level_string (min_level )} )
430- ORDER BY l.timestamp DESC LIMIT 50 OFFSET { skip } ;"""
423+ JOIN experiment_worker_assignments_history h
424+ on h.pioreactor_unit = l.pioreactor_unit
425+ and h.assigned_at <= l.timestamp
426+ and DATETIME(l.timestamp) <= DATETIME(coalesce(h.unassigned_at, STRFTIME('%Y-%m-%dT%H:%M:%f000Z', 'NOW')), '+5 seconds')
427+ WHERE (l.experiment=? )
428+ AND ({ get_level_string (min_level )} )
429+ ORDER BY l.timestamp DESC LIMIT 50 OFFSET { skip } ;""" ,
430+ (experiment ,),
431431 )
432432
433433 return jsonify (recent_logs )
@@ -460,7 +460,7 @@ def get_recent_logs_for_unit_and_experiment(
460460
461461@api .route ("/workers/<pioreactor_unit>/experiments/<experiment>/logs" , methods = ["GET" ])
462462def get_logs_for_unit_and_experiment (pioreactor_unit : str , experiment : str ) -> ResponseReturnValue :
463- """Shows event logs from all units , uses pagination."""
463+ """Shows event logs from specific unit and experiment , uses pagination."""
464464
465465 skip = int (request .args .get ("skip" , 0 ))
466466 min_level = request .args .get ("min_level" , "INFO" )
@@ -482,6 +482,26 @@ def get_logs_for_unit_and_experiment(pioreactor_unit: str, experiment: str) -> R
482482 return jsonify (recent_logs )
483483
484484
485+ @api .route ("/units/<pioreactor_unit>/system_logs" , methods = ["GET" ])
486+ def get_system_logs_for_unit (pioreactor_unit : str ) -> ResponseReturnValue :
487+ """Shows system logs from specific unit uses pagination."""
488+
489+ skip = int (request .args .get ("skip" , 0 ))
490+ min_level = request .args .get ("min_level" , "INFO" )
491+
492+ recent_logs = query_app_db (
493+ f"""SELECT l.timestamp, l.level, l.pioreactor_unit, l.message, l.task, l.experiment
494+ FROM logs AS l
495+ WHERE (l.experiment="$experiment")
496+ AND (l.pioreactor_unit=? or l.pioreactor_unit=?)
497+ AND ({ get_level_string (min_level )} )
498+ ORDER BY l.timestamp DESC LIMIT 50 OFFSET { skip } ;""" ,
499+ (pioreactor_unit , UNIVERSAL_IDENTIFIER ),
500+ )
501+
502+ return jsonify (recent_logs )
503+
504+
485505@api .route ("/units/<pioreactor_unit>/logs" , methods = ["GET" ])
486506def get_logs_for_unit (pioreactor_unit : str ) -> ResponseReturnValue :
487507 """Shows event logs from all units, uses pagination."""
0 commit comments