| // Copyright 2025 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIB_SYSLOG_CPP_LOG_SETTINGS_INTERNAL_H_ |
| #define LIB_SYSLOG_CPP_LOG_SETTINGS_INTERNAL_H_ |
| |
| #include <lib/syslog/cpp/log_settings.h> |
| #include <lib/syslog/cpp/logging_backend_fuchsia_globals.h> |
| #include <lib/syslog/structured_backend/cpp/raw_log_settings.h> |
| |
| namespace fuchsia_logging::internal { |
| |
| template <typename T> |
| auto WithRawSettings(const fuchsia_logging::LogSettings& settings, T callback) { |
| std::vector<const char*> tags; |
| tags.reserve(settings.tags.size()); |
| for (const std::string& tag : settings.tags) { |
| tags.push_back(tag.c_str()); |
| } |
| |
| RawLogSettings raw_settings{ |
| .min_log_level = settings.min_log_level, |
| .log_sink = settings.log_sink, |
| .tags = tags.data(), |
| .tags_count = settings.tags.size(), |
| .dispatcher = settings.single_threaded_dispatcher, |
| .severity_change_callback = settings.severity_change_callback, |
| .severity_change_callback_context = settings.severity_change_callback_context, |
| }; |
| return callback(raw_settings); |
| } |
| |
| } // namespace fuchsia_logging::internal |
| |
| #endif // LIB_SYSLOG_CPP_LOG_SETTINGS_INTERNAL_H_ |