| /* |
| * Copyright 2026 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkLog_DEFINED |
| #define SkLog_DEFINED |
| |
| #include <cstdarg> |
| |
| #include "include/private/SkAPI.h" |
| #include "include/private/SkAttributes.h" |
| #include "include/private/SkLoadUserConfig.h" // IWYU pragma: keep |
| #include "include/private/SkLogPriority.h" |
| |
| #if !defined(SkLog) |
| // To be implemented per platform. |
| void SkLogVAList(SkLogPriority priority, const char format[], va_list args) SK_PRINTF_LIKE(2, 0); |
| void SK_SPI SkLog(SkLogPriority priority, const char format[], ...) SK_PRINTF_LIKE(2, 3); |
| #endif |
| |
| /** |
| * TODO (b/469441457): SKGPU_GRAPHITE_LOWEST_ACTIVE_LOG_PRIORITY Was the config used to set the log |
| * priority, so we check for that define as well. Eventually, we should move clients using this |
| * define to the new one. |
| */ |
| #if defined(SKGPU_GRAPHITE_LOWEST_ACTIVE_LOG_PRIORITY) |
| static constexpr SkLogPriority MapGraphitePriority(skgpu::graphite::LogPriority priority) { |
| switch (priority) { |
| case skgpu::graphite::LogPriority::kError: return SkLogPriority::kError; |
| case skgpu::graphite::LogPriority::kWarning: return SkLogPriority::kWarning; |
| case skgpu::graphite::LogPriority::kInfo: return SkLogPriority::kInfo; |
| case skgpu::graphite::LogPriority::kDebug: return SkLogPriority::kDebug; |
| default: return SkLogPriority::kDebug; |
| } |
| } |
| #define SKIA_LOWEST_ACTIVE_LOG_PRIORITY MapGraphitePriority(SKGPU_GRAPHITE_LOWEST_ACTIVE_LOG_PRIORITY) |
| #endif |
| |
| #if !defined(SKIA_LOWEST_ACTIVE_LOG_PRIORITY) |
| #ifdef SK_DEBUG |
| #define SKIA_LOWEST_ACTIVE_LOG_PRIORITY SkLogPriority::kDebug |
| #else |
| #define SKIA_LOWEST_ACTIVE_LOG_PRIORITY SkLogPriority::kInfo |
| #endif |
| #endif |
| |
| #define SKIA_LOG(priority, fmt, ...) \ |
| do { \ |
| if constexpr (priority <= SKIA_LOWEST_ACTIVE_LOG_PRIORITY) { \ |
| SkLog(priority, "[skia] " fmt "\n", ##__VA_ARGS__); \ |
| } \ |
| } while (0) |
| |
| #define SKIA_LOG_E(fmt, ...) SKIA_LOG(SkLogPriority::kError, "** ERROR ** " fmt, ##__VA_ARGS__) |
| #define SKIA_LOG_W(fmt, ...) SKIA_LOG(SkLogPriority::kWarning, "WARNING - " fmt, ##__VA_ARGS__) |
| #define SKIA_LOG_I(fmt, ...) SKIA_LOG(SkLogPriority::kInfo, fmt, ##__VA_ARGS__) |
| #define SKIA_LOG_D(fmt, ...) SKIA_LOG(SkLogPriority::kDebug, fmt, ##__VA_ARGS__) |
| |
| #endif // SkLog_DEFINED |