Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::file_notifier Class Reference

Writes alerts to a file. More...

#include <alert_notifiers.h>

Inheritance diagram for kcenon::monitoring::file_notifier:
Inheritance graph
Collaboration diagram for kcenon::monitoring::file_notifier:
Collaboration graph

Public Member Functions

 file_notifier (std::string file_path, std::shared_ptr< alert_formatter > formatter=nullptr)
 Construct file notifier.
 
std::string name () const override
 Get notifier name.
 
common::VoidResult notify (const alert &a) override
 Send a notification for an alert.
 
common::VoidResult notify_group (const alert_group &group) override
 Send a notification for an alert group.
 
bool is_ready () const override
 Check if notifier is ready.
 
- Public Member Functions inherited from kcenon::monitoring::alert_notifier
virtual ~alert_notifier ()=default
 

Private Member Functions

common::VoidResult write_to_file (const std::string &content)
 

Private Attributes

std::string file_path_
 
std::shared_ptr< alert_formatterformatter_
 
std::mutex mutex_
 

Detailed Description

Writes alerts to a file.

Appends alert notifications to a specified file, useful for logging or audit trails.

Definition at line 299 of file alert_notifiers.h.

Constructor & Destructor Documentation

◆ file_notifier()

kcenon::monitoring::file_notifier::file_notifier ( std::string file_path,
std::shared_ptr< alert_formatter > formatter = nullptr )
inlineexplicit

Construct file notifier.

Parameters
file_pathPath to output file
formatterAlert formatter (default: text)
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h.

Definition at line 306 of file alert_notifiers.h.

308 : file_path_(std::move(file_path))
309 , formatter_(formatter ? formatter : std::make_shared<text_alert_formatter>()) {}
std::shared_ptr< alert_formatter > formatter_

Member Function Documentation

◆ is_ready()

bool kcenon::monitoring::file_notifier::is_ready ( ) const
inlineoverridevirtual

Check if notifier is ready.

Returns
True if ready to send notifications

Implements kcenon::monitoring::alert_notifier.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h.

Definition at line 323 of file alert_notifiers.h.

323 {
324 return !file_path_.empty();
325 }

References file_path_.

◆ name()

std::string kcenon::monitoring::file_notifier::name ( ) const
inlineoverridevirtual

Get notifier name.

Returns
Notifier name

Implements kcenon::monitoring::alert_notifier.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h.

Definition at line 311 of file alert_notifiers.h.

311 {
312 return "file:" + file_path_;
313 }

References file_path_.

◆ notify()

common::VoidResult kcenon::monitoring::file_notifier::notify ( const alert & a)
inlineoverridevirtual

Send a notification for an alert.

Parameters
aAlert to notify about
Returns
Result indicating success or failure

Implements kcenon::monitoring::alert_notifier.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h.

Definition at line 315 of file alert_notifiers.h.

315 {
316 return write_to_file(formatter_->format(a));
317 }
common::VoidResult write_to_file(const std::string &content)

References formatter_, and write_to_file().

Here is the call graph for this function:

◆ notify_group()

common::VoidResult kcenon::monitoring::file_notifier::notify_group ( const alert_group & group)
inlineoverridevirtual

Send a notification for an alert group.

Parameters
groupAlert group to notify about
Returns
Result indicating success or failure

Implements kcenon::monitoring::alert_notifier.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h.

Definition at line 319 of file alert_notifiers.h.

319 {
320 return write_to_file(formatter_->format_group(group));
321 }

References formatter_, and write_to_file().

Here is the call graph for this function:

◆ write_to_file()

common::VoidResult kcenon::monitoring::file_notifier::write_to_file ( const std::string & content)
inlineprivate
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h.

Definition at line 328 of file alert_notifiers.h.

328 {
329 std::lock_guard<std::mutex> lock(mutex_);
330
331 std::ofstream file(file_path_, std::ios::app);
332 if (!file) {
333 return common::VoidResult::err(static_cast<int>(monitoring_error_code::storage_write_failed),
334 "Failed to open file: " + file_path_);
335 }
336
337 auto now = std::chrono::system_clock::now();
338 auto time_t_now = std::chrono::system_clock::to_time_t(now);
339
340 char time_buf[26];
341#ifdef _MSC_VER
342 ctime_s(time_buf, sizeof(time_buf), &time_t_now);
343#else
344 std::strncpy(time_buf, std::ctime(&time_t_now), sizeof(time_buf) - 1);
345 time_buf[sizeof(time_buf) - 1] = '\0';
346#endif
347 file << "=== " << time_buf;
348 file << content << "\n\n";
349
350 return common::ok();
351 }

References file_path_, mutex_, and kcenon::monitoring::storage_write_failed.

Referenced by notify(), and notify_group().

Here is the caller graph for this function:

Member Data Documentation

◆ file_path_

std::string kcenon::monitoring::file_notifier::file_path_
private

◆ formatter_

std::shared_ptr<alert_formatter> kcenon::monitoring::file_notifier::formatter_
private

◆ mutex_

std::mutex kcenon::monitoring::file_notifier::mutex_
private

The documentation for this class was generated from the following file: