UTILLib 2.0
Common C++ library with utilities.
Loading...
Searching...
No Matches
syslogmessage.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 Ingemar Hedvall
3 * SPDX-License-Identifier: MIT
4 */
11#pragma once
12#include <cstdint>
13#include <string>
14#include <vector>
15
16#include "logmessage.h"
17#include "structureddata.h"
18namespace util::syslog {
19
24enum class SyslogSeverity : uint8_t {
26 Alert = 1,
28 Error = 3,
29 Warning = 4,
30 Notice = 5,
32 Debug = 7
33};
34
39enum class SyslogFacility : uint8_t {
40 Kernel = 0,
41 UserLevel = 1,
42 Mail = 2,
43 SystemDaemon = 3,
44 Security = 4,
45 Internal = 5,
46 Printer = 6,
47 Network = 7,
48 UUCP = 8,
49 Clock = 9,
50 Authorization = 10,
51 FTP = 11,
52 NTP = 12,
53 LogAudit = 13,
54 LogAlert = 14,
55 ClockDaemon = 15,
56 Local0 = 16,
57 Local1 = 17,
58 Local2 = 18,
59 Local3 = 19,
60 Local4 = 20,
61 Local5 = 21,
62 Local6 = 22,
63 Local7 = 23
64};
65
73 public:
80
81 SyslogMessage(const SyslogMessage&) = default;
82
90 SyslogMessage(const util::log::LogMessage& log, bool show_location);
91
92 virtual ~SyslogMessage() = default;
93
101 void Index(int64_t index) {index_ = index;}
102
103 [[nodiscard]] int64_t Index() const {return index_;}
104
105 void Severity(SyslogSeverity severity) {
106 severity_ = severity;
107 }
108 [[nodiscard]] SyslogSeverity Severity()
109 const {
110 return severity_;
111 }
112
113 void Facility(SyslogFacility facility) {
114 facility_ = facility;
115 }
116
117 [[nodiscard]] SyslogFacility Facility()
118 const {
119 return facility_;
120 }
121
122 [[nodiscard]] uint8_t Version() const {
123 return version_;
124 }
125
126 void Timestamp(uint64_t ns1970) {
127 timestamp_ = ns1970;
128 }
129
130 [[nodiscard]] uint64_t Timestamp()
131 const {
132 return timestamp_;
133 }
134
135 void Hostname(const std::string& name);
136 [[nodiscard]] const std::string& Hostname()
137 const {
138 return hostname_;
139 }
140
141 void ApplicationName(const std::string& name);
142 [[nodiscard]] const std::string& ApplicationName()
143 const {
144 return application_name_;
145 }
146
147 void ProcessId(const std::string& pid);
148 [[nodiscard]] const std::string& ProcessId() const {
149 return process_id_;
150 }
151
152 void MessageId(const std::string& msg_id);
153 [[nodiscard]] const std::string& MessageId()
154 const {
155 return message_id_;
156 }
157
163 void Message(const std::string& msg);
164
170 [[nodiscard]] const std::string& Message() const { return message_; }
171
173 const StructuredData& data) {
174 sd_list_.push_back(data);
175 }
176
177 [[nodiscard]] const std::vector<StructuredData>& DataList()
178 const {
179 return sd_list_;
180 }
181
182 [[nodiscard]] std::string GenerateMessage()
183 const;
184 bool ParseMessage(const std::string& msg);
185
187 const std::string&
188 identity);
189 void AppendParameter(const std::string& name,
190 const std::string& value);
192 void Version(uint8_t version) {
193 version_ = version;
194 }
195
202 void IsoTime(const std::string& iso_time);
203
204 protected:
205 private:
206 int64_t index_ = 0;
208 SyslogFacility facility_ = SyslogFacility::Local0;
209 uint8_t version_ = 1;
210 uint64_t timestamp_ = 0;
211 std::string hostname_;
212 std::string application_name_;
213 std::string process_id_;
214 std::string message_id_;
215
216 std::string message_;
217
218 std::vector<StructuredData> sd_list_;
219};
220
221} // namespace util::syslog
Defines a simple interface against structured data item.
Definition structureddata.h:25
void Hostname(const std::string &name)
Sets the host name.
void ProcessId(const std::string &pid)
Sets the PID.
void IsoTime(const std::string &iso_time)
Sets the timestamp by converting a ISO time string.
void AddData(const StructuredData &data)
Definition syslogmessage.h:172
SyslogSeverity Severity() const
Definition syslogmessage.h:108
SyslogFacility Facility() const
Definition syslogmessage.h:117
const std::string & Hostname() const
Definition syslogmessage.h:136
void AddStructuredData(const std::string &identity)
Adds a structured data item without any parameters.
void Message(const std::string &msg)
Sets the message test.
int64_t Index() const
Unique index.
Definition syslogmessage.h:103
const std::string & ApplicationName() const
Definition syslogmessage.h:142
void AppendParameter(const std::string &name, const std::string &value)
const std::string & Message() const
Returns the message text.
Definition syslogmessage.h:170
void Index(int64_t index)
Index used to identify the message.
Definition syslogmessage.h:101
SyslogMessage()
Standard constructor.
void Version(uint8_t version)
Definition syslogmessage.h:192
virtual ~SyslogMessage()=default
Default destructor.
uint8_t Version() const
Definition syslogmessage.h:122
void ApplicationName(const std::string &name)
Sets the application name.
void MessageId(const std::string &msg_id)
Sets the message ID.
const std::vector< StructuredData > & DataList() const
Definition syslogmessage.h:177
void Facility(SyslogFacility facility)
Definition syslogmessage.h:113
SyslogMessage(const util::log::LogMessage &log, bool show_location)
Constructor that converts a log message,.
const std::string & ProcessId() const
Definition syslogmessage.h:148
void Severity(SyslogSeverity severity)
Definition syslogmessage.h:105
const std::string & MessageId() const
Definition syslogmessage.h:153
uint64_t Timestamp() const
Definition syslogmessage.h:130
std::string GenerateMessage() const
Generates a syslog message.
bool ParseMessage(const std::string &msg)
Parses a syslog message.
void Timestamp(uint64_t ns1970)
Definition syslogmessage.h:126
SyslogMessage(const SyslogMessage &)=default
Default copy constructor.
The log namespace is used for log related classes and functions.
Definition idirectory.h:18
The syslog namespace is used for the syslog interface.
Definition isyslogserver.h:23
SyslogSeverity
Syslog severity codes.
Definition syslogmessage.h:24
@ Warning
Warning condition.
Definition syslogmessage.h:29
@ Notice
Normal but significant condition.
Definition syslogmessage.h:30
@ Critical
Critical condition.
Definition syslogmessage.h:27
@ Informational
Informational message.
Definition syslogmessage.h:31
@ Error
Error condition.
Definition syslogmessage.h:28
@ Emergency
System is unusable.
Definition syslogmessage.h:25
@ Debug
Debug message.
Definition syslogmessage.h:32
@ Alert
Action must be taken immediately.
Definition syslogmessage.h:26
SyslogFacility
Syslog facility codes.
Definition syslogmessage.h:39
Syslog structured data interface.
Definition logmessage.h:26