52 const auto inner_sink_names_node = table.at_path(
"inner_sink_names");
53 if (!inner_sink_names_node) {
55 "Configuration inner_sink_names in num_collect.logging.sinks "
56 "element with type \"combined\" is required.");
58 const auto* inner_sink_names_array = inner_sink_names_node.as_array();
59 if (inner_sink_names_array ==
nullptr) {
61 "Configuration inner_sink_names in num_collect.logging.sinks "
62 "element with type \"combined\" must be an array of strings.");
65 for (
const auto& inner_sink_name_node : *inner_sink_names_array) {
66 const auto inner_sink_name =
67 inner_sink_name_node.value<std::string>();
68 if (!inner_sink_name) {
70 "Configuration inner_sink_names in "
71 "num_collect.logging.sinks element with type \"combined\" "
72 "must be an array of strings.");
77 const auto output_log_level_strs_node =
78 table.at_path(
"output_log_levels");
79 if (!output_log_level_strs_node) {
81 "Configuration output_log_levels in num_collect.logging.sinks "
82 "element with type \"combined\" is required.");
84 const auto* output_log_level_strs_array =
85 output_log_level_strs_node.as_array();
86 if (output_log_level_strs_array ==
nullptr) {
88 "Configuration output_log_levels in num_collect.logging.sinks "
89 "element with type \"combined\" must be an array of strings.");
92 for (
const auto& output_log_level_str_node :
93 *output_log_level_strs_array) {
94 const auto output_log_level_str =
95 output_log_level_str_node.value<std::string>();
96 if (!output_log_level_str) {
98 "Configuration output_log_levels in "
99 "num_collect.logging.sinks element with type \"combined\" "
100 "must be an array of strings.");
108 "inner_sink_names and output_log_levels in "
109 "num_collect.logging.sinks element with type \"combined\" must "
110 "have the same number of elements.");