log_node_param_helper.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License").
5  * You may not use this file except in compliance with the License.
6  * A copy of the License is located at
7  *
8  * http://aws.amazon.com/apache2.0
9  *
10  * or in the "license" file accompanying this file. This file is distributed
11  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12  * express or implied. See the License for the specific language governing
13  * permissions and limitations under the License.
14  */
15 
18 #include <aws/core/utils/logging/LogMacros.h>
20 
22 
23 namespace Aws {
24 namespace CloudWatchLogs {
25 namespace Utils {
26 
28  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
29  double & publish_frequency)
30 {
31  Aws::AwsError ret =
32  parameter_reader->ReadParam(ParameterPath(kNodeParamPublishFrequencyKey), publish_frequency);
33  switch (ret) {
34  case Aws::AwsError::AWS_ERR_NOT_FOUND:
35  publish_frequency = kNodePublishFrequencyDefaultValue;
36  AWS_LOGSTREAM_INFO(__func__,
37  "Publish frequency configuration not found, setting to default value: "
39  break;
40  case Aws::AwsError::AWS_ERR_OK:
41  AWS_LOGSTREAM_INFO(__func__, "Publish frequency is set to: " << publish_frequency);
42  break;
43  default:
44  publish_frequency = kNodePublishFrequencyDefaultValue;
45  AWS_LOGSTREAM_ERROR(__func__,
46  "Error " << ret << " retrieving publish frequency, setting to default value: "
48 
49  }
50  return ret;
51 }
52 
53 Aws::AwsError ReadLogGroup(const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
54  std::string & log_group)
55 {
56  Aws::AwsError ret = parameter_reader->ReadParam(ParameterPath(kNodeParamLogGroupNameKey), log_group);
57  switch (ret) {
58  case Aws::AwsError::AWS_ERR_NOT_FOUND:
60  AWS_LOGSTREAM_INFO(__func__,
61  "Log group name configuration not found, setting to default value: "
63  break;
64  case Aws::AwsError::AWS_ERR_OK:
65  AWS_LOGSTREAM_INFO(__func__, "Log group name is set to: " << log_group);
66  break;
67  default:
69  AWS_LOGSTREAM_ERROR(__func__,
70  "Error " << ret << "retrieving log group name configuration, setting to default value: "
72  }
73  return ret;
74 }
75 
76 Aws::AwsError ReadLogStream(const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
77  std::string & log_stream)
78 {
79  Aws::AwsError ret = parameter_reader->ReadParam(ParameterPath(kNodeParamLogStreamNameKey), log_stream);
80  switch (ret) {
81  case Aws::AwsError::AWS_ERR_NOT_FOUND:
82  log_stream = kNodeLogStreamNameDefaultValue;
83  AWS_LOGSTREAM_INFO(__func__,
84  "Log stream name configuration not found, setting to default value: "
86  break;
87  case Aws::AwsError::AWS_ERR_OK:
88  AWS_LOGSTREAM_INFO(__func__, "Log stream name is set to: " << log_stream);
89  break;
90  default:
91  log_stream = kNodeLogStreamNameDefaultValue;
92  AWS_LOGSTREAM_ERROR(__func__,
93  "Error " << ret << "retrieving log stream name configuration, setting to default value: "
95  }
96  return ret;
97 }
98 
100  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
101  bool & subscribe_to_rosout)
102 {
103  Aws::AwsError ret =
104  parameter_reader->ReadParam(ParameterPath(kNodeParamSubscribeToRosoutKey), subscribe_to_rosout);
105  switch (ret) {
106  case Aws::AwsError::AWS_ERR_NOT_FOUND:
107  subscribe_to_rosout = kNodeSubscribeToRosoutDefaultValue;
108  AWS_LOGSTREAM_INFO(
109  __func__,
110  "Whether to subscribe to rosout_agg topic configuration not found, setting to default value: "
112  break;
113  case Aws::AwsError::AWS_ERR_OK:
114  AWS_LOGSTREAM_INFO(
115  __func__, "Whether to subscribe to rosout_agg topic is set to: " << subscribe_to_rosout);
116  break;
117  default:
118  subscribe_to_rosout = kNodeSubscribeToRosoutDefaultValue;
119  AWS_LOGSTREAM_ERROR(
120  __func__,
121  "Error " << ret
122  << "retrieving parameter for whether to subscribe to rosout_agg topic configuration "
123  << ", setting to default value: " << kNodeSubscribeToRosoutDefaultValue);
124  }
125  return ret;
126 }
127 
129  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
130  int8_t & min_log_verbosity)
131 {
132  min_log_verbosity = kNodeMinLogVerbosityDefaultValue;
133 
134  std::string specified_verbosity;
135  Aws::AwsError ret =
136  parameter_reader->ReadParam(ParameterPath(kNodeParamMinLogVerbosityKey), specified_verbosity);
137  switch (ret) {
138  case Aws::AwsError::AWS_ERR_NOT_FOUND:
139  AWS_LOGSTREAM_INFO(__func__, "Log verbosity configuration not found, setting to default value: "
141  break;
142  case Aws::AwsError::AWS_ERR_OK:
143  if ("DEBUG" == specified_verbosity) {
144  min_log_verbosity = rosgraph_msgs::Log::DEBUG;
145  AWS_LOG_INFO(__func__, "Log verbosity is set to DEBUG.");
146  } else if ("INFO" == specified_verbosity) {
147  min_log_verbosity = rosgraph_msgs::Log::INFO;
148  AWS_LOG_INFO(__func__, "Log verbosity is set to INFO.");
149  } else if ("WARN" == specified_verbosity) {
150  min_log_verbosity = rosgraph_msgs::Log::WARN;
151  AWS_LOG_INFO(__func__, "Log verbosity is set to WARN.");
152  } else if ("ERROR" == specified_verbosity) {
153  min_log_verbosity = rosgraph_msgs::Log::ERROR;
154  AWS_LOG_INFO(__func__, "Log verbosity is set to ERROR.");
155  } else if ("FATAL" == specified_verbosity) {
156  min_log_verbosity = rosgraph_msgs::Log::FATAL;
157  AWS_LOG_INFO(__func__, "Log verbosity is set to FATAL.");
158  } else {
159  ret = AwsError::AWS_ERR_PARAM;
160  AWS_LOGSTREAM_INFO(__func__,
161  "Log verbosity configuration not valid, setting to default value: "
163  }
164  break;
165  default:
166  AWS_LOGSTREAM_ERROR(__func__,
167  "Error " << ret << " retrieving log verbosity configuration, setting to default value: "
169  }
170  return ret;
171 }
172 
174  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
175  bool & publish_topic_names)
176 {
177  Aws::AwsError ret =
178  parameter_reader->ReadParam(ParameterPath(kNodeParamPublishTopicNamesKey), publish_topic_names);
179 
180  switch (ret) {
181  case Aws::AwsError::AWS_ERR_NOT_FOUND:
182  publish_topic_names = kNodePublishTopicNamesDefaultValue;
183  AWS_LOGSTREAM_INFO(
184  __func__,
185  "Whether to publish topic names to Cloudwatch Logs configuration not found, setting to default value: "
187  break;
188  case Aws::AwsError::AWS_ERR_OK:
189  AWS_LOGSTREAM_INFO(
190  __func__, "Whether to publish topic names to Cloudwatch Logs is set to: " << publish_topic_names);
191  break;
192  default:
193  publish_topic_names = kNodePublishTopicNamesDefaultValue;
194  AWS_LOGSTREAM_ERROR(
195  __func__,
196  "Error " << ret
197  << "retrieving parameter for whether to publish topic names to Cloudwatch Logs"
198  << ", setting to default value: " << kNodePublishTopicNamesDefaultValue);
199  }
200 
201  return ret;
202 }
203 
205  const bool subscribe_to_rosout,
206  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
207  const boost::function<void(const rosgraph_msgs::Log::ConstPtr &)>& callback,
208  ros::NodeHandle & nh,
209  std::vector<ros::Subscriber> & subscriptions)
210 {
211  std::vector<std::string> topics;
212  Aws::AwsError ret = parameter_reader->ReadParam(ParameterPath(kNodeParamLogTopicsListKey), topics);
213 
214  for (const std::string& topic : topics) {
215  ros::Subscriber sub = nh.subscribe(topic, kNodeSubQueueSize, callback);
216  AWS_LOGSTREAM_INFO(__func__, "Subscribing to topic: " << topic);
217  subscriptions.push_back(sub);
218  }
219  if (subscribe_to_rosout) {
221  AWS_LOG_INFO(__func__, "Subscribing to rosout_agg");
222  subscriptions.push_back(sub);
223  }
224  return ret;
225 }
226 
228  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
229  std::unordered_set<std::string> & ignore_nodes)
230 {
231  std::vector<std::string> ignore_list;
232  Aws::AwsError ret = parameter_reader->ReadParam(ParameterPath(kNodeParamIgnoreNodesKey), ignore_list);
233  switch (ret) {
234  case Aws::AwsError::AWS_ERR_NOT_FOUND:
235  break;
236  case Aws::AwsError::AWS_ERR_OK:
237  for (const std::string & node_name : ignore_list) {
238  ignore_nodes.emplace(node_name);
239  }
240  break;
241  default:
242  AWS_LOGSTREAM_ERROR(__func__,
243  "Error " << ret << " retrieving retrieving list of nodes to ignore.");
244  }
245 
246  return ret;
247 }
248 
250  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
251  Aws::CloudWatchLogs::CloudWatchOptions & cloudwatch_options) {
252 
253  Aws::DataFlow::UploaderOptions uploader_options{};
254  Aws::FileManagement::FileManagerStrategyOptions file_manager_strategy_options;
255 
256  ReadUploaderOptions(parameter_reader, uploader_options);
257  ReadFileManagerStrategyOptions(parameter_reader, file_manager_strategy_options);
258 
259  cloudwatch_options = {
260  uploader_options,
261  file_manager_strategy_options
262  };
263 }
264 
266  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
267  Aws::DataFlow::UploaderOptions & uploader_options) {
268 
269  ReadOption(
270  parameter_reader,
272  Aws::DataFlow::kDefaultUploaderOptions.file_upload_batch_size,
273  uploader_options.file_upload_batch_size
274  );
275 
276  ReadOption(
277  parameter_reader,
279  Aws::DataFlow::kDefaultUploaderOptions.file_max_queue_size,
280  uploader_options.file_max_queue_size
281  );
282 
283  ReadOption(
284  parameter_reader,
286  Aws::DataFlow::kDefaultUploaderOptions.batch_max_queue_size,
287  uploader_options.batch_max_queue_size
288  );
289 
290  ReadOption(
291  parameter_reader,
293  Aws::DataFlow::kDefaultUploaderOptions.batch_trigger_publish_size,
294  uploader_options.batch_trigger_publish_size
295  );
296 
297  ReadOption(
298  parameter_reader,
300  Aws::DataFlow::kDefaultUploaderOptions.stream_max_queue_size,
301  uploader_options.stream_max_queue_size
302  );
303 }
304 
306  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
307  Aws::FileManagement::FileManagerStrategyOptions & file_manager_strategy_options) {
308 
309  ReadOption(
310  parameter_reader,
313  file_manager_strategy_options.storage_directory);
314 
315  ReadOption(
316  parameter_reader,
319  file_manager_strategy_options.file_prefix);
320 
321  ReadOption(
322  parameter_reader,
325  file_manager_strategy_options.file_extension);
326 
327  ReadOption(
328  parameter_reader,
331  file_manager_strategy_options.maximum_file_size_in_kb);
332 
333  ReadOption(
334  parameter_reader,
337  file_manager_strategy_options.storage_limit_in_kb);
338 
339  ReadOption(
340  parameter_reader,
343  file_manager_strategy_options.delete_stale_data);
344 }
345 
347  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
348  const std::string & option_key,
349  const std::string & default_value,
350  std::string & option_value) {
351  Aws::AwsError ret = parameter_reader->ReadParam(ParameterPath(option_key), option_value);
352  switch (ret) {
353  case Aws::AwsError::AWS_ERR_NOT_FOUND:
354  option_value = default_value;
355  AWS_LOGSTREAM_INFO(__func__,
356  option_key << " parameter not found, setting to default value: " << default_value);
357  break;
358  case Aws::AwsError::AWS_ERR_OK:
359  AWS_LOGSTREAM_INFO(__func__, option_key << " is set to: " << option_value);
360  break;
361  default:
362  option_value = default_value;
363  AWS_LOGSTREAM_ERROR(__func__,
364  "Error " << ret << " retrieving option " << option_key << ", setting to default value: " << default_value);
365  }
366 }
367 
369  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
370  const std::string & option_key,
371  const size_t & default_value,
372  size_t & option_value) {
373  int return_value = 0;
374  Aws::AwsError ret = parameter_reader->ReadParam(ParameterPath(option_key), return_value);
375  switch (ret) {
376  case Aws::AwsError::AWS_ERR_NOT_FOUND:
377  option_value = default_value;
378  AWS_LOGSTREAM_INFO(__func__,
379  option_key << " parameter not found, setting to default value: " << default_value);
380  break;
381  case Aws::AwsError::AWS_ERR_OK:
382  option_value = static_cast<size_t>(return_value);
383  AWS_LOGSTREAM_INFO(__func__, option_key << " is set to: " << option_value);
384  break;
385  default:
386  option_value = default_value;
387  AWS_LOGSTREAM_ERROR(__func__,
388  "Error " << ret << " retrieving option " << option_key << ", setting to default value: " << default_value);
389  }
390 }
391 
393  const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
394  const std::string & option_key,
395  const bool & default_value,
396  bool & option_value)
397 {
398  Aws::AwsError ret = parameter_reader->ReadParam(ParameterPath(option_key), option_value);
399  switch (ret) {
400  case Aws::AwsError::AWS_ERR_NOT_FOUND:
401  option_value = default_value;
402  AWS_LOGSTREAM_INFO(__func__,
403  option_key << " parameter not found, setting to default value: " << default_value);
404  break;
405  case Aws::AwsError::AWS_ERR_OK:
406  AWS_LOGSTREAM_INFO(__func__, option_key << " is set to: " << option_value);
407  break;
408  default:
409  option_value = default_value;
410  AWS_LOGSTREAM_ERROR(__func__,
411  "Error " << ret << " retrieving option " << option_key << ", setting to default value: " << default_value);
412  }
413 }
414 
415 } // namespace Utils
416 } // namespace CloudWatchLogs
417 } // namespace Aws
Aws::AwsError ReadIgnoreNodesSet(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, std::unordered_set< std::string > &ignore_nodes)
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
Aws::AwsError ReadSubscribeToRosout(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, bool &subscribe_to_rosout)
Aws::AwsError ReadMinLogVerbosity(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, int8_t &min_log_verbosity)
Aws::AwsError ReadPublishFrequency(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, double &publish_frequency)
Aws::AwsError ReadSubscriberList(bool subscribe_to_rosout, const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, const boost::function< void(const rosgraph_msgs::Log::ConstPtr &)> &callback, ros::NodeHandle &nh, std::vector< ros::Subscriber > &subscriptions)
void ReadFileManagerStrategyOptions(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, Aws::FileManagement::FileManagerStrategyOptions &file_manager_strategy_options)
constexpr char kNodeParamFileMaxQueueSize[]
static constexpr UploaderOptions kDefaultUploaderOptions
constexpr char kNodeParamMinLogVerbosityKey[]
constexpr char kNodeParamPublishFrequencyKey[]
constexpr int8_t kNodeMinLogVerbosityDefaultValue
constexpr char kNodeParamSubscribeToRosoutKey[]
static const FileManagerStrategyOptions kDefaultFileManagerStrategyOptions
void ReadUploaderOptions(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, Aws::DataFlow::UploaderOptions &uploader_options)
Aws::AwsError ReadLogStream(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, std::string &log_stream)
constexpr bool kNodeSubscribeToRosoutDefaultValue
Aws::AwsError ReadPublishTopicNames(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, bool &publish_topic_names)
constexpr char kNodeRosoutAggregatedTopicName[]
constexpr char kNodeParamBatchTriggerPublishSize[]
constexpr bool kNodePublishTopicNamesDefaultValue
constexpr double kNodePublishFrequencyDefaultValue
Aws::AwsError ReadLogGroup(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, std::string &log_group)
constexpr char kNodeParamBatchMaxQueueSize[]
constexpr char kNodeParamLogGroupNameKey[]
constexpr char kNodeParamDeleteStaleData[]
void ReadCloudWatchOptions(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, Aws::CloudWatchLogs::CloudWatchOptions &cloudwatch_options)
constexpr char kNodeParamPublishTopicNamesKey[]
constexpr char kNodeLogStreamNameDefaultValue[]
constexpr char kNodeParamMaximumFileSize[]
constexpr char kNodeParamLogTopicsListKey[]
constexpr char kNodeParamIgnoreNodesKey[]
void ReadOption(const std::shared_ptr< Aws::Client::ParameterReaderInterface > &parameter_reader, const std::string &option_key, const std::string &default_value, std::string &option_value)
constexpr char kNodeParamFileExtension[]
constexpr char kNodeParamLogStreamNameKey[]
constexpr char kNodeParamStorageLimit[]
constexpr char kNodeParamFileUploadBatchSize[]
constexpr char kNodeParamStreamMaxQueueSize[]
constexpr char kNodeLogGroupNameDefaultValue[]
constexpr char kNodeParamStorageDirectory[]


cloudwatch_logger
Author(s): AWS RoboMaker
autogenerated on Sat Mar 6 2021 03:55:46