Provides the default output methods and behavior for tracing.
- Inheritance
- xtd::diagnostics::trace_listener → xtd::diagnostics::default_trace_listener
- Namespace
- xtd::diagnostics
- Library
- xtd.core
- Examples
- The following code example calculates binomial coefficients, which are values used in probability and statistics. This example uses a xtd::diagnostics::default_trace_listener to trace results and log errors. It creates a new xtd::diagnostics::default_trace_listener, adds it to the xtd::diagnostics::trace::listeners collection, and sets the xtd::diagnostics::default_trace_listener::log_file_name property to the log file specified in the command-line arguments.
If an error is detected while processing the input parameter, or if the calc_binomial function throws an exception, the xtd::diagnostics::default_trace_listener::fail method logs and displays an error message. If the xtd::diagnostics::default_trace_listener::assert_ui_enabled property is false, the error message is also written to the console. When the result is calculated successfully, the xtd::diagnostics::default_trace_listener::write and xtd::diagnostics::default_trace_listener::write_line methods write the results to the log file.
The xtd::diagnostics::default_trace_listener::fail, xtd::diagnostics::default_trace_listener::write, and xtd::diagnostics::default_trace_listener::write_line methods cause trace information to be written only to the xtd::diagnostics::default_trace_listener. To write trace information to all listeners in the xtd::diagnostics::trace::listeners collection, use the xtd::diagnostics::trace::fail, xtd::diagnostics::trace::write, and xtd::diagnostics::trace::write_line methods of the xtd::diagnostics::trace class. #include <xtd/xtd>
using namespace std;
class binomial {
public:
static void main(const vector<ustring>& args) {
shared_ptr<default_trace_listener> default_listener = make_shared<default_trace_listener>();
if (args.size() >= 2)
default_listener->log_file_name(args[1]);
if (args.size() >= 1) {
try {
const decimal MAX_POSSIBILITIES = 99;
possibilities = parse<decimal>(args[0]);
if (possibilities < 0 || possibilities > MAX_POSSIBILITIES)
default_listener->fail(fail_message, ex.
message());
if (!default_listener->assert_ui_enabled())
console::write_line(fail_message +
"\n" + ex.
message());
return;
}
} else {
const ustring ENTER_PARAM =
"Enter the number of possibilities as a command line argument.";
default_listener->fail(ENTER_PARAM);
if (!default_listener->assert_ui_enabled())
console::write_line(ENTER_PARAM);
return;
}
for (iter = 0; iter <= possibilities; iter++) {
try {
result = calc_binomial(possibilities, iter);
ustring fail_message =
ustring::format(
"An exception was raised when calculating Binomial( {}, {} ).", possibilities, iter);
default_listener->fail(fail_message, ex.
message());
if (!default_listener->assert_ui_enabled())
console::write_line(fail_message +
"\n" + ex.
message());
return;
}
binomial =
ustring::format(
"Binomial( {0}, {1} ) = ", possibilities, iter);
default_listener->write(binomial);
}
}
for (iter = 1; iter <= possibilities - outcomes; iter++) {
result *= outcomes + iter;
result /= iter;
}
return result;
}
};
|
| trace_listener ()=default |
| Initializes a new instance of the trace_listener class. More...
|
|
| trace_listener (const xtd::ustring &name) |
| Initializes a new instance of the trace_listener class using the specified name as the listener. More...
|
|
unsigned int | indent_level () const |
| Gets the indent level. More...
|
|
void | indent_level (unsigned int indent_level) |
| Sets the indent level. More...
|
|
unsigned int | indent_size () const |
| Gets the number of spaces in an indent. More...
|
|
void | indent_size (unsigned int indent_size) |
| Sets the number of spaces in an indent. More...
|
|
virtual bool | is_thread_safe () const |
| Gets a value indicating whether the trace listener is thread safe. More...
|
|
const xtd::ustring & | name () const |
| Gets or sets a name for this TraceListener. More...
|
|
void | name (const xtd::ustring &name) |
| Sets a name for this TraceListener. More...
|
|
const trace_options & | trace_output_options () const |
| Gets the trace output options. More...
|
|
void | trace_output_options (const trace_options &trace_output_options) |
| Sets the trace output options. More...
|
|
virtual void | fail (const xtd::ustring &message) |
| Emits an error message to the listener you create when you implement the TraceListener class. More...
|
|
virtual void | fail (const xtd::ustring &message, const xtd::ustring &detail_message) |
| Emits the specified error message. More...
|
|
template<typename object > |
void | trace_data (const xtd::diagnostics::trace_event_cache &event_cache, const xtd::ustring &source, const xtd::diagnostics::trace_event_type &event_type, int id, const object &data) |
| Writes trace information, a data object and event information to the listener specific output. More...
|
|
template<typename object > |
void | trace_data (const xtd::diagnostics::trace_event_cache &event_cache, const xtd::ustring &source, const xtd::diagnostics::trace_event_type &event_type, int id, const std::vector< object > &data) |
| Writes trace information, a data object and event information to the listener specific output. More...
|
|
template<typename ... objects> |
void | trace_data (const xtd::diagnostics::trace_event_cache &event_cache, const xtd::ustring &source, const xtd::diagnostics::trace_event_type &event_type, int id, const objects &... data) |
| Writes trace information, an array of data objects and event information to the listener specific output. More...
|
|
virtual void | trace_event (const xtd::diagnostics::trace_event_cache &event_cache, const xtd::ustring &source, const xtd::diagnostics::trace_event_type &event_type, int id) |
| Writes trace and event information to the listener specific output. More...
|
|
virtual void | trace_event (const xtd::diagnostics::trace_event_cache &event_cache, const xtd::ustring &source, const xtd::diagnostics::trace_event_type &event_type, int id, const xtd::ustring &message) |
| Writes trace information, a message, and event information to the listener specific output. More...
|
|
template<typename ... objects> |
void | trace_event (const xtd::diagnostics::trace_event_cache &event_cache, const xtd::ustring &source, const xtd::diagnostics::trace_event_type &event_type, int id, const xtd::ustring &format, const objects &... args) |
| Writes trace information, a formatted array of objects and event information to the listener specific output. More...
|
|
template<typename activity_id_type > |
void | trace_transfer (const xtd::diagnostics::trace_event_cache &event_cache, const xtd::ustring &source, int id, const xtd::ustring &message, const activity_id_type &related_activity_id) |
| Writes trace information, a message, a related activity identity and event information to the listener specific output. More...
|
|
template<typename object > |
void | write (const object &o) |
| Writes the value of the object's ToString method to the listener you create when you implement the TraceListener class. More...
|
|
template<typename object > |
void | write (const object &o, const xtd::ustring &category) |
| Writes a category name and the value of the object's ToString method to the listener you create when you implement the TraceListener class. More...
|
|
template<typename object > |
void | write_line (const object &o) |
| Writes the value of the object's ToString method to the listener you create when you implement the TraceListener class. More...
|
|
template<typename object > |
void | write_line (const object &o, const xtd::ustring &category) |
| Writes a category name and the value of the object's ToString method to the listener you create when you implement the TraceListener class. More...
|
|
bool | need_indent () const |
| Gets a value indicating whether to indent the output. More...
|
|
void | need_indent (bool need_indent) |
| Sets a value indicating whether to indent the output. More...
|
|
void | thread_safe (bool thread_safe) |
| Sets a value indicating whether the trace listener is thread safe. More...
|
|
virtual void | write_indent () |
| Writes the indent to the listener you create when you implement this class, and resets the NeedIndent property to false. More...
|
|