xtd 0.2.0
trace_source.hpp
Go to the documentation of this file.
1
4#pragma once
5#include <map>
6#include "../array.hpp"
7#include "../object.hpp"
9#include "source_levels.hpp"
10#include "source_switch.hpp"
11#include "trace_event_cache.hpp"
13
15namespace xtd {
17 namespace diagnostics {
43 public:
45
49 explicit trace_source(const xtd::string& name);
53 explicit trace_source(const xtd::string& name, xtd::diagnostics::source_levels default_levels);
55
57
63
67 void listeners(const xtd::diagnostics::trace_listener_collection& listeners) noexcept;
68
71 const xtd::string& name() const noexcept;
72
77 const xtd::diagnostics::source_switch& source_switch() const noexcept;
82 void source_switch(const xtd::diagnostics::source_switch& source_switch) noexcept;
84
86
90 void close();
91
94 void flush();
95
102 template<class object_t>
103 void trace_data(const xtd::diagnostics::trace_event_type& event_type, int32 id, const object_t& data) {
104 #if defined(TRACE)
105 if (source_switch_.should_trace(event_type))
106 for (auto listener : listeners_)
107 listener->trace_data(trace_event_cache(), name_, event_type, id, data);
108 #endif
109 }
110
117 template<class object_t>
119 #if defined(TRACE)
120 if (source_switch_.should_trace(event_type))
121 for (auto listener : listeners_)
122 listener->trace_data(trace_event_cache(), name_, event_type, id, data);
123 #endif
124 }
125
131 #if defined(TRACE)
132 if (source_switch_.should_trace(event_type))
133 for (auto listener : listeners_)
134 listener->trace_event(trace_event_cache(), name_, event_type, id);
135 #endif
136 }
137
142 void trace_event(const xtd::diagnostics::trace_event_type& event_type, int32 id, const xtd::string& message) {
143 #if defined(TRACE)
144 if (source_switch_.should_trace(event_type))
145 for (auto listener : listeners_)
146 listener->trace_event(trace_event_cache(), name_, event_type, id, message);
147 #endif
148 }
149
155 template<class ...objects>
156 void trace_event(const xtd::diagnostics::trace_event_type& event_type, int32 id, const xtd::string& format, const objects& ... args) {
157 #if defined(TRACE)
158 if (source_switch_.should_trace(event_type))
159 for (auto listener : listeners_)
160 listener->trace_event(trace_event_cache(), name_, event_type, id, xtd::string::format(format, args...));
161 #endif
162 }
163
168 void trace_information(const xtd::string& message);
169
175 template<class ...objects_t>
176 void trace_information(const xtd::string& format, const objects_t& ... args) {trace_event(trace_event_type::information, 0, format, args...);}
177
184 template<class guid_t>
185 void trace_transfer(int32 id, const xtd::string& message, const guid_t& related_activity_id) {
186 #if defined(TRACE)
187 for (auto listener : listeners_)
188 listener->trace_transfer(trace_event_cache(), name_, id, message, related_activity_id);
189 #endif
190 }
192
193 private:
194 std::map<xtd::string, xtd::string> attributes_;
195 xtd::string name_;
198 xtd::diagnostics::trace_listener_collection listeners_ {xtd::new_sptr<xtd::diagnostics::default_trace_listener>()};
199 xtd::diagnostics::source_switch source_switch_ {""};
200 };
201 }
202}
Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the ba...
Definition array.hpp:61
Represents text as a sequence of character units.
Definition basic_string.hpp:71
Provides a multilevel switch to control tracing and debug output without recompiling your code.
Definition source_switch.hpp:31
Provides trace event data specific to a thread and a process.
Definition trace_event_cache.hpp:29
Represents a collection of xtd::diagnostics::trace_listener.
Definition trace_listener_collection.hpp:29
Provides a set of methods and properties that enable applications to trace the execution of code and ...
Definition trace_source.hpp:42
xtd::diagnostics::trace_listener_collection & listeners() noexcept
Gets the collection of trace listeners for the trace source.
void trace_event(const xtd::diagnostics::trace_event_type &event_type, int32 id)
Writes a trace event message to the trace listeners in the listeners collection using the specified e...
Definition trace_source.hpp:130
void trace_event(const xtd::diagnostics::trace_event_type &event_type, int32 id, const xtd::string &format, const objects &... args)
Writes a trace event message to the trace listeners in the listeners collection using the specified e...
Definition trace_source.hpp:156
trace_source(const xtd::string &name, xtd::diagnostics::source_levels default_levels)
Initializes a new instance of the Trace_Source class, using the specified name for the source.
void trace_information(const xtd::string &format, const objects_t &... args)
Writes an informational message to the trace listeners in the listeners collection using the specifie...
Definition trace_source.hpp:176
trace_source(const xtd::string &name)
Initializes a new instance of the Trace_Source class, using the specified name for the source.
void trace_transfer(int32 id, const xtd::string &message, const guid_t &related_activity_id)
Writes a trace transfer message to the trace listeners in the listeners collection using the specifie...
Definition trace_source.hpp:185
void trace_event(const xtd::diagnostics::trace_event_type &event_type, int32 id, const xtd::string &message)
Writes a trace event message to the trace listeners in the listeners collection using the specified e...
Definition trace_source.hpp:142
void trace_information(const xtd::string &message)
Writes an informational message to the trace listeners in the listeners collection using the specifie...
void trace_data(const xtd::diagnostics::trace_event_type &event_type, int32 id, const xtd::array< object_t > &data)
Writes trace data to the trace listeners in the Listeners collection using the specified event type,...
Definition trace_source.hpp:118
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:43
Contains xtd::diagnostics::default_trace_listener class.
static basic_string format(const basic_string< char > &fmt, args_t &&... args)
Writes the text representation of the specified arguments list, to string using the specified format ...
xtd::string format(const xtd::string &fmt, args_t &&... args)
Writes the text representation of the specified arguments list, to string using the specified format ...
Definition format.hpp:20
#define core_export_
Define shared library export.
Definition core_export.hpp:13
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
trace_event_type
Identifies the type of event that has caused the trace.
Definition trace_event_type.hpp:25
source_levels
Specifies the levels of trace messages filtered by the source switch and event type filter....
Definition source_levels.hpp:25
@ off
Does not allow any events through.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10
Contains xtd::diagnostics::source_levels enum class.
Contains xtd::diagnostics::source_switch class.
Contains xtd::diagnostics::trace_event_cache class.
Contains xtd::diagnostics::trace_listener_collection class.