Proje: Okul B2B App · Hub: Okul B2B App — Conventions
Crash Reporting ve Loglama
CrashlyticsService
Firebase Crashlytics ile otomatik crash raporlama:
// Login sonrası kullanıcı context'i set et
await CrashlyticsService.initialize();
await CrashlyticsService.setUserId(user.id.toString());
await CrashlyticsService.setAttribute('company_id', user.customer_id.toString());
await CrashlyticsService.setAttribute('user_role', user.role);- Sadece
ENABLE_CRASH_REPORTING=trueve non-dev build’larda aktif (!__DEV__) - Expo Go’da graceful fallback (try/catch ile require)
setCrashlyticsCollectionEnabled(false)development’ta crash raporlamayı devre dışı bırakır
Logger
utils/Logger.ts singleton:
import { logger } from '@/utils/Logger';
logger.error('Error', error); // LogLevel.ERROR
logger.warn('Warning', data); // LogLevel.WARN
logger.info('Info', data); // LogLevel.INFO
logger.logDebug('Debug', data); // LogLevel.DEBUG (alias)
logger.logWarning('Warn', data); // LogLevel.WARN (alias)
logger.logError('Error', error); // LogLevel.ERROR (alias)Log level konfigürasyonu: EXPO_PUBLIC_LOG_LEVEL=error|warn|info|debug
- Production:
error(sadece gerçek hatalar) - Development:
debug(hepsi)
Test Yapısı
__tests__/
SimpleErrorHandler.test.ts
templates/
services/__tests__/
MediaService.test.ts
Jest + @testing-library/react-native. jest-expo ~54.0.13.
Related
- firebase-native-module-kurali — Crashlytics Expo Go koruması
- error-handling-pattern — hata yakalama ve gösterme