refactor: Standardize error logging by using logger.error in state machine callbacks and capture_and_log in management commands.

This commit is contained in:
pacnpal
2026-01-04 18:45:22 -05:00
parent dd2d09b1c7
commit 30aa887d2a
5 changed files with 43 additions and 53 deletions

View File

@@ -16,6 +16,7 @@ from django.utils import timezone
from apps.parks.models import Park
from apps.rides.models import Ride
from apps.core.utils import capture_and_log
logger = logging.getLogger(__name__)
@@ -90,7 +91,7 @@ class Command(BaseCommand):
self.stdout.write(f" {item['name']} ({item['park']}) - opened: {item['date_opened']}")
except Exception as e:
logger.error(f"Error calculating new content: {e}", exc_info=True)
capture_and_log(e, 'Calculate new content', source='management', severity='high')
raise CommandError(f"Failed to calculate new content: {e}") from None
def _get_new_parks(self, cutoff_date: datetime, limit: int) -> list[dict[str, Any]]:

View File

@@ -16,6 +16,7 @@ from django.utils import timezone
from apps.core.analytics import PageView
from apps.parks.models import Park
from apps.rides.models import Ride
from apps.core.utils import capture_and_log
logger = logging.getLogger(__name__)
@@ -99,7 +100,7 @@ class Command(BaseCommand):
self.stdout.write(f" {item['name']} (score: {item.get('views_change', 'N/A')})")
except Exception as e:
logger.error(f"Error calculating trending content: {e}", exc_info=True)
capture_and_log(e, 'Calculate trending content', source='management', severity='high')
raise CommandError(f"Failed to calculate trending content: {e}") from None
def _calculate_trending_parks(
@@ -199,7 +200,7 @@ class Command(BaseCommand):
return final_score
except Exception as e:
logger.error(f"Error calculating score for {content_type} {content_obj.id}: {e}")
capture_and_log(e, f'Calculate score for {content_type} {content_obj.id}', source='management', severity='medium')
return 0.0
def _calculate_view_growth_score(

View File

@@ -75,8 +75,6 @@ from typing import Any, Optional
from django.db import models
from apps.core.utils import capture_and_log
logger = logging.getLogger(__name__)
@@ -499,11 +497,9 @@ class TransitionCallbackRegistry:
overall_success = False
if not callback.continue_on_error:
capture_and_log(
RuntimeError(f'Callback {callback.name} returned False'),
f'Aborting callback chain - continue_on_error=False',
source='state_machine',
severity='medium',
logger.error(
f"Aborting callback chain - {callback.name} failed "
f"and continue_on_error=False"
)
break
@@ -513,11 +509,9 @@ class TransitionCallbackRegistry:
overall_success = False
if not callback.continue_on_error:
capture_and_log(
e,
f'Aborting callback chain - {callback.name} raised exception',
source='state_machine',
severity='high',
logger.error(
f"Aborting callback chain - {callback.name} raised exception "
f"and continue_on_error=False"
)
break

View File

@@ -20,7 +20,6 @@ from .signals import (
pre_state_transition,
state_transition_failed,
)
from apps.core.utils import capture_and_log
logger = logging.getLogger(__name__)
@@ -85,12 +84,8 @@ def with_callbacks(
if not pre_success and pre_failures:
for callback, exc in pre_failures:
if not callback.continue_on_error:
capture_and_log(
exc or RuntimeError(f'Pre-transition callback {callback.name} failed'),
f'Aborting transition - pre-callback failed',
source='state_machine',
severity='high',
)
logger.error(f"Pre-transition callback {callback.name} failed, "
f"aborting transition")
if exc:
raise exc
raise RuntimeError(f"Pre-transition callback {callback.name} failed")

View File

@@ -12,6 +12,7 @@ from apps.rides.models import (
RollerCoasterStats,
)
from apps.rides.models.company import Company as RideCompany
from apps.core.utils import capture_and_log
class Command(BaseCommand):
@@ -111,9 +112,11 @@ class Command(BaseCommand):
self.stdout.write(self.style.SUCCESS("Successfully cleaned up existing sample data!"))
except Exception as e:
self.logger.error(
f"Error during data cleanup: {str(e)}",
exc_info=True,
capture_and_log(
e,
'Data cleanup error',
source='management',
severity='high',
)
self.stdout.write(self.style.ERROR(f"Failed to clean up existing data: {str(e)}"))
raise
@@ -152,7 +155,7 @@ class Command(BaseCommand):
self.stdout.write(self.style.SUCCESS("Successfully created comprehensive sample data!"))
except Exception as e:
self.logger.error(f"Error during sample data creation: {str(e)}", exc_info=True)
capture_and_log(e, 'Sample data creation error', source='management', severity='high')
self.stdout.write(self.style.ERROR(f"Failed to create sample data: {str(e)}"))
raise
@@ -333,7 +336,7 @@ class Command(BaseCommand):
}"
)
except Exception as e:
self.logger.error(f"Error creating park company {data['name']}: {str(e)}")
capture_and_log(e, f"Create park company {data['name']}", source='management', severity='medium')
raise
# Create companies in rides app (for manufacturers and designers)
@@ -356,11 +359,11 @@ class Command(BaseCommand):
}"
)
except Exception as e:
self.logger.error(f"Error creating ride company {data['name']}: {str(e)}")
capture_and_log(e, f"Create ride company {data['name']}", source='management', severity='medium')
raise
except Exception as e:
self.logger.error(f"Error in create_companies: {str(e)}")
capture_and_log(e, 'Create companies', source='management', severity='high')
raise
def create_parks(self):
@@ -518,19 +521,18 @@ class Command(BaseCommand):
park_location.set_coordinates(loc_data["latitude"], loc_data["longitude"])
park_location.save()
except Exception as e:
self.logger.error(
f"Error creating location for park {
park_data['name']
}: {str(e)}"
capture_and_log(
e, f"Create location for park {park_data['name']}",
source='management', severity='medium'
)
raise
except Exception as e:
self.logger.error(f"Error creating park {park_data['name']}: {str(e)}")
capture_and_log(e, f"Create park {park_data['name']}", source='management', severity='medium')
raise
except Exception as e:
self.logger.error(f"Error in create_parks: {str(e)}")
capture_and_log(e, 'Create parks', source='management', severity='high')
raise
def create_rides(self):
@@ -597,7 +599,7 @@ class Command(BaseCommand):
}"
)
except Exception as e:
self.logger.error(f"Error creating ride model {model_data['name']}: {str(e)}")
capture_and_log(e, f"Create ride model {model_data['name']}", source='management', severity='medium')
raise
# Create rides
@@ -822,19 +824,18 @@ class Command(BaseCommand):
stats_data = ride_data["coaster_stats"]
RollerCoasterStats.objects.create(ride=ride, **stats_data)
except Exception as e:
self.logger.error(
f"Error creating stats for ride {ride_data['name']}: {
str(e)
}"
capture_and_log(
e, f"Create stats for ride {ride_data['name']}",
source='management', severity='medium'
)
raise
except Exception as e:
self.logger.error(f"Error creating ride {ride_data['name']}: {str(e)}")
capture_and_log(e, f"Create ride {ride_data['name']}", source='management', severity='medium')
raise
except Exception as e:
self.logger.error(f"Error in create_rides: {str(e)}")
capture_and_log(e, 'Create rides', source='management', severity='high')
raise
def create_park_areas(self):
@@ -967,11 +968,11 @@ class Command(BaseCommand):
} in {park.name}"
)
except Exception as e:
self.logger.error(f"Error creating areas for park {area_group['park']}: {str(e)}")
capture_and_log(e, f"Create areas for park {area_group['park']}", source='management', severity='medium')
raise
except Exception as e:
self.logger.error(f"Error in create_park_areas: {str(e)}")
capture_and_log(e, 'Create park areas', source='management', severity='high')
raise
def create_reviews(self):
@@ -1043,10 +1044,9 @@ class Command(BaseCommand):
}"
)
except Exception as e:
self.logger.error(
f"Error creating park review for {review_data['park']}: {
str(e)
}"
capture_and_log(
e, f"Create park review for {review_data['park']}",
source='management', severity='medium'
)
raise
@@ -1102,15 +1102,14 @@ class Command(BaseCommand):
}"
)
except Exception as e:
self.logger.error(
f"Error creating ride review for {review_data['ride']}: {
str(e)
}"
capture_and_log(
e, f"Create ride review for {review_data['ride']}",
source='management', severity='medium'
)
raise
self.stdout.write(self.style.SUCCESS("Sample data creation completed!"))
except Exception as e:
self.logger.error(f"Error in create_reviews: {str(e)}")
capture_and_log(e, 'Create reviews', source='management', severity='high')
raise