DefaultTraceListener Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет методы вывода по умолчанию и поведение для трассировки.
public ref class DefaultTraceListener : System::Diagnostics::TraceListener
public class DefaultTraceListener : System.Diagnostics.TraceListener
[System.Runtime.InteropServices.ComVisible(false)]
public class DefaultTraceListener : System.Diagnostics.TraceListener
type DefaultTraceListener = class
inherit TraceListener
[<System.Runtime.InteropServices.ComVisible(false)>]
type DefaultTraceListener = class
inherit TraceListener
Public Class DefaultTraceListener
Inherits TraceListener
- Наследование
- Наследование
- Атрибуты
Примеры
В следующем примере кода вычисляются биномиальные коэффициенты, которые представляют собой значения, используемые в вероятности и статистике. В этом примере используется DefaultTraceListener для трассировки результатов и ведения журнала ошибок. Он создает новый DefaultTraceListenerобъект , добавляет его в коллекцию Trace.Listeners и задает свойству LogFileName файл журнала, указанный в аргументах командной строки.
Если при обработке входного параметра обнаружена ошибка или функция CalcBinomial
создает исключение, Fail метод регистрирует и выводит сообщение об ошибке. AssertUiEnabled Если свойство имеет значение false
, сообщение об ошибке также записывается в консоль. Когда результат вычисляется успешно, методы Write(String) и WriteLine(String) записывают результаты в файл журнала.
Методы Fail, Writeи WriteLine приводят к тому, что сведения трассировки записываются только в DefaultTraceListener. Чтобы записать данные трассировки во все прослушиватели в Trace.Listeners коллекции, используйте Failметоды Trace , Writeи WriteLine класса .
using System;
using System.Diagnostics;
using Microsoft.VisualBasic;
class Binomial
{
// args(0) is the number of possibilities for binomial coefficients.
// args(1) is the file specification for the trace log file.
public static void Main(string[] args)
{
decimal possibilities;
decimal iter;
// Remove the original default trace listener.
Trace.Listeners.RemoveAt(0);
// Create and add a new default trace listener.
DefaultTraceListener defaultListener;
defaultListener = new DefaultTraceListener();
Trace.Listeners.Add(defaultListener);
// Assign the log file specification from the command line, if entered.
if (args.Length>=2)
{
defaultListener.LogFileName = args[1];
}
// Validate the number of possibilities argument.
if (args.Length>=1)
// Verify that the argument is a number within the correct range.
{
try
{
const decimal MAX_POSSIBILITIES = 99;
possibilities = Decimal.Parse(args[0]);
if (possibilities<0||possibilities>MAX_POSSIBILITIES)
{
throw new Exception(String.Format("The number of possibilities must " +
"be in the range 0..{0}.", MAX_POSSIBILITIES));
}
}
catch(Exception ex)
{
string failMessage = String.Format("\"{0}\" " +
"is not a valid number of possibilities.", args[0]);
defaultListener.Fail(failMessage, ex.Message);
if (!defaultListener.AssertUiEnabled)
{
Console.WriteLine(failMessage+ "\n" +ex.Message);
}
return;
}
}
else
{
// Report that the required argument is not present.
const string ENTER_PARAM = "Enter the number of " +
"possibilities as a command line argument.";
defaultListener.Fail(ENTER_PARAM);
if (!defaultListener.AssertUiEnabled)
{
Console.WriteLine(ENTER_PARAM);
}
return;
}
for(iter=0; iter<=possibilities; iter++)
{
decimal result;
string binomial;
// Compute the next binomial coefficient and handle all exceptions.
try
{
result = CalcBinomial(possibilities, iter);
}
catch(Exception ex)
{
string failMessage = String.Format("An exception was raised when " +
"calculating Binomial( {0}, {1} ).", possibilities, iter);
defaultListener.Fail(failMessage, ex.Message);
if (!defaultListener.AssertUiEnabled)
{
Console.WriteLine(failMessage+ "\n" +ex.Message);
}
return;
}
// Format the trace and console output.
binomial = String.Format("Binomial( {0}, {1} ) = ", possibilities, iter);
defaultListener.Write(binomial);
defaultListener.WriteLine(result.ToString());
Console.WriteLine("{0} {1}", binomial, result);
}
}
public static decimal CalcBinomial(decimal possibilities, decimal outcomes)
{
// Calculate a binomial coefficient, and minimize the chance of overflow.
decimal result = 1;
decimal iter;
for(iter=1; iter<=possibilities-outcomes; iter++)
{
result *= outcomes+iter;
result /= iter;
}
return result;
}
}
Imports System.Diagnostics
Module Binomial
' args(0) is the number of possibilities for binomial coefficients.
' args(1) is the file specification for the trace log file.
Sub Main(ByVal args() As String)
Dim possibilities As Decimal
Dim iter As Decimal
' Remove the original default trace listener.
Trace.Listeners.RemoveAt(0)
' Create and add a new default trace listener.
Dim defaultListener As DefaultTraceListener
defaultListener = New DefaultTraceListener
Trace.Listeners.Add(defaultListener)
' Assign the log file specification from the command line, if entered.
If args.Length >= 2 Then
defaultListener.LogFileName = args(1)
End If
' Validate the number of possibilities argument.
If args.Length >= 1 Then
' Verify that the argument is a number within the correct range.
Try
Const MAX_POSSIBILITIES As Decimal = 99
possibilities = Decimal.Parse(args(0))
If possibilities < 0 Or possibilities > MAX_POSSIBILITIES Then
Throw New Exception( _
String.Format("The number of possibilities must " & _
"be in the range 0..{0}.", MAX_POSSIBILITIES))
End If
Catch ex As Exception
Dim failMessage As String = String.Format("""{0}"" " & _
"is not a valid number of possibilities.", args(0))
defaultListener.Fail(failMessage, ex.Message)
If Not defaultListener.AssertUiEnabled Then
Console.WriteLine(failMessage & vbCrLf & ex.Message)
End If
Return
End Try
Else
' Report that the required argument is not present.
Const ENTER_PARAM As String = "Enter the number of " & _
"possibilities as a command line argument."
defaultListener.Fail(ENTER_PARAM)
If Not defaultListener.AssertUiEnabled Then
Console.WriteLine(ENTER_PARAM)
End If
Return
End If
For iter = 0 To possibilities
Dim result As Decimal
Dim binomial As String
' Compute the next binomial coefficient and handle all exceptions.
Try
result = CalcBinomial(possibilities, iter)
Catch ex As Exception
Dim failMessage As String = String.Format( _
"An exception was raised when " & _
"calculating Binomial( {0}, {1} ).", _
possibilities, iter)
defaultListener.Fail(failmessage, ex.Message)
If Not defaultListener.AssertUiEnabled Then
Console.WriteLine(failMessage & vbCrLf & ex.Message)
End If
Return
End Try
' Format the trace and console output.
binomial = String.Format("Binomial( {0}, {1} ) = ", _
possibilities, iter)
defaultListener.Write(binomial)
defaultListener.WriteLine(result.ToString)
Console.WriteLine("{0} {1}", binomial, result)
Next
End Sub
Function CalcBinomial(ByVal possibilities As Decimal, _
ByVal outcomes As Decimal) As Decimal
' Calculate a binomial coefficient, and minimize the chance of overflow.
Dim result As Decimal = 1
Dim iter As Decimal
For iter = 1 To possibilities - outcomes
result *= outcomes + iter
result /= iter
Next
Return result
End Function
End Module
Комментарии
Экземпляр этого класса автоматически добавляется в Debug.Listeners коллекции и Trace.Listeners . Явное добавление секунды DefaultTraceListener приводит к дублированию сообщений в окне вывода отладчика и дублированию окон сообщений для утверждений.
По умолчанию методы Write и WriteLine выдают сообщение функции Win32 OutputDebugString и методу Debugger.Log .
Метод Fail по умолчанию отображает окно сообщения, когда приложение выполняется в режиме пользовательского интерфейса; он также выдает сообщение с помощью WriteLine.
Примечание
Отображение окна сообщения для Assert вызовов методов и Fail зависит от наличия DefaultTraceListener. DefaultTraceListener Если отсутствует в Listeners коллекции, окно сообщения не отображается. Можно DefaultTraceListener удалить, вызвав Clear метод для Listeners свойства (System.Diagnostics.Trace.Listeners.Clear()
). Для платформа .NET Framework приложений можно также использовать <элемент clear> и <элемент remove> в файле конфигурации приложения.
Для использования прослушивателя трассировки необходимо включить трассировку или отладку. Следующий синтаксис зависит от компилятора. Если вы используете компиляторы, отличные от C# или Visual Basic, обратитесь к документации по компилятору.
Чтобы включить отладку
/d:DEBUG
в C#, добавьте флаг в командную строку компилятора при компиляции кода или в#define DEBUG
начало файла. В Visual Basic добавьте/d:DEBUG=True
флаг в командную строку компилятора.Чтобы включить трассировку в C#, добавьте
/d:TRACE
флаг в командную строку компилятора при компиляции кода или в#define TRACE
начало файла. В Visual Basic добавьте/d:TRACE=True
флаг в командную строку компилятора.
Для платформа .NET Framework приложений можно добавить прослушиватель трассировки, изменив файл конфигурации, соответствующий имени приложения. В этом файле можно добавить прослушиватель, задать его тип и параметры, удалить прослушиватель или очистить все прослушиватели, заданные ранее приложением. Файл конфигурации должен иметь формат, аналогичный следующему примеру:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove name="Default" />
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myListener.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Конструкторы
DefaultTraceListener() |
Инициализирует новый экземпляр класса DefaultTraceListener со значением "Default" в качестве значения его свойства Name. |
Свойства
AssertUiEnabled |
Получает или задает значение, указывающее, выполняется ли приложение в режиме пользовательского интерфейса. |
Attributes |
Возвращает настраиваемые атрибуты прослушивателя трассировки, определенные в файле конфигурации приложения. (Унаследовано от TraceListener) |
Filter |
Получает или задает фильтр трассировки для прослушивателя трассировки. (Унаследовано от TraceListener) |
IndentLevel |
Возвращает или задает уровень отступа. (Унаследовано от TraceListener) |
IndentSize |
Возвращает или задает число пробелов в отступе. (Унаследовано от TraceListener) |
IsThreadSafe |
Возвращает значение, указывающее, является ли прослушиватель трассировки потокобезопасным. (Унаследовано от TraceListener) |
LogFileName |
Получает или задает имя файла журнала, в который осуществляется запись сообщений при трассировке или отладке. |
Name |
Возвращает или задает имя для данного TraceListener. (Унаследовано от TraceListener) |
NeedIndent |
Возвращает или задает значение, указывающее, нужен ли отступ в выходных данных. (Унаследовано от TraceListener) |
TraceOutputOptions |
Возвращает или задает параметры выходных данных трассировки. (Унаследовано от TraceListener) |
Методы
Close() |
Если переопределено в производном классе, закрывает выходной поток, который, таким образом, больше не принимает выходные данные трассировки и отладки. (Унаследовано от TraceListener) |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
Dispose() |
Освобождает все ресурсы, занятые модулем TraceListener. (Унаследовано от TraceListener) |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом TraceListener, а при необходимости освобождает также управляемые ресурсы. (Унаследовано от TraceListener) |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Fail(String) |
Выдает или отображает сообщение и запись изменений стека для утверждения, в котором всегда возникает ошибка. |
Fail(String, String) |
Выдает или отображает подробные сообщения и запись изменений стека для утверждения, в котором возникает ошибка. |
Flush() |
Если переопределено в производном классе, очищает выходной буфер. (Унаследовано от TraceListener) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetLifetimeService() |
Устаревшие..
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. (Унаследовано от MarshalByRefObject) |
GetSupportedAttributes() |
Возвращает настраиваемые атрибуты, поддерживаемые прослушивателем трассировки. (Унаследовано от TraceListener) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
MemberwiseClone(Boolean) |
Создает неполную копию текущего объекта MarshalByRefObject. (Унаследовано от MarshalByRefObject) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
TraceData(TraceEventCache, String, TraceEventType, Int32, Object) |
Записывает сведения трассировки, объект данных и сведения о событиях в специальные выходные данные прослушивателя. (Унаследовано от TraceListener) |
TraceData(TraceEventCache, String, TraceEventType, Int32, Object[]) |
Записывает сведения трассировки, массив объектов данных и сведения о событии в специальные выходные данные прослушивателя. (Унаследовано от TraceListener) |
TraceEvent(TraceEventCache, String, TraceEventType, Int32) |
Записывает сведения трассировки и сведения о событиях в специальные выходные данные прослушивателя. (Унаследовано от TraceListener) |
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String) |
Записывает сведения трассировки, сообщение и сведения о событиях в специальные выходные данные прослушивателя. (Унаследовано от TraceListener) |
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[]) |
Записывает сведения трассировки, форматированный массив объектов данных и сведения о событиях в специальные выходные данные прослушивателя. (Унаследовано от TraceListener) |
TraceTransfer(TraceEventCache, String, Int32, String, Guid) |
Записывает сведения трассировки, сообщение, идентификатор сопутствующего действия и сведения о событиях в специальные выходные данные прослушивателя. (Унаследовано от TraceListener) |
Write(Object) |
Записывает значение метода ToString() объекта в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
Write(Object, String) |
Записывает имя категории и значение метода ToString() объекта в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
Write(String) |
Записывает вывод в функцию |
Write(String, String) |
Записывает имя категории и сообщение в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
WriteIndent() |
Записывает отступ в прослушиватель, создаваемый при реализации этого класса, и восстанавливает для свойства NeedIndent значение |
WriteLine(Object) |
Записывает значение метода ToString() объекта, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
WriteLine(Object, String) |
Записывает имя категории и значение метода ToString() объекта, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
WriteLine(String) |
Записывает вывод в функцию |
WriteLine(String, String) |
Записывает имя категории и сообщение, заканчивающееся знаком завершения строки, в прослушиватель, создаваемый при реализации класса TraceListener. (Унаследовано от TraceListener) |
Применяется к
Потокобезопасность
Этот класс является потокобезопасным.