---
title: Không dùng mức log error cho lỗi không nghiêm trọng
impact: LOW
impactDescription: Lạm dụng .error hay .fault làm nhiễu hệ thống monitoring, khiến việc triage sự cố thực sự mất nhiều thời gian hơn.
tags: swift, ios, logging, os-log, error-level, code-quality
---

## Không dùng mức log error cho lỗi không nghiêm trọng

Khi dùng `os_log` hoặc `Logger` (iOS 14+), hãy chọn mức log phù hợp với mức độ nghiêm trọng. `.error` và `.fault` chỉ nên dùng khi có lỗi thực sự ảnh hưởng đến tính năng. Lỗi mạng có thể retry, không có session, hay validation thất bại nên dùng `.warning` hoặc `.info`.

**Incorrect (lạm dụng .error):**

```swift
import OSLog

let logger = Logger(subsystem: "com.app.network", category: "API")

func fetchUserProfile(userId: String) async {
    do {
        let profile = try await apiService.fetchProfile(userId: userId)
        logger.error("Fetched profile: \(userId)") // .error cho thành công??
    } catch URLError.notConnectedToInternet {
        logger.error("No internet - will retry") // nên là .warning
    } catch let DecodingError.keyNotFound(key, _) {
        logger.error("Missing key: \(key)") // có thể là .warning
    }
}
```

**Correct (dùng đúng mức log):**

```swift
import OSLog

let logger = Logger(subsystem: "com.app.network", category: "API")

func fetchUserProfile(userId: String) async {
    do {
        let profile = try await apiService.fetchProfile(userId: userId)
        logger.info("Fetched profile for userId: \(userId)")
    } catch URLError.notConnectedToInternet {
        logger.warning("No internet connection, retry scheduled")
    } catch let DecodingError.keyNotFound(key, _) {
        logger.warning("API response missing expected key: \(key.stringValue)")
    } catch {
        // Lỗi thực sự không lường trước - dùng .error
        logger.error("Unexpected failure fetching profile userId=\(userId): \(error.localizedDescription)")
    }
}
```

**Mức log và khi nào dùng:**

| Mức | Khi nào dùng |
|-----|-------------|
| `.debug` | Thông tin chi tiết chỉ cần lúc development |
| `.info` | Sự kiện bình thường trong flow nghiệp vụ |
| `.warning` | Lỗi có thể recover, retry được |
| `.error` | Lỗi ảnh hưởng tính năng, cần điều tra |
| `.fault` | Lỗi nghiêm trọng - bug trong hệ thống |

**Tools:** `os.Logger`, OSLog framework

