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) методы записывают результаты в файл журнала.
WriteМетоды Failи WriteLine методы вызывают запись данных трассировки только в теDefaultTraceListener. Чтобы записать сведения трассировки для всех прослушивателей в Trace.Listeners коллекции, используйте FailWriteметоды и WriteLine методы Trace класса.
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, обратитесь к документации для компилятора.
Чтобы включить отладку в C#, добавьте
/d:DEBUGфлаг в командную строку компилятора при компиляции кода или добавьте#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, String) |
Выводит или отображает подробные сообщения и трассировку стека для утверждения, которое всегда завершается ошибкой. |
| Fail(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, String, Object[]) |
Записывает сведения трассировки, форматированный массив объектов и сведений о событиях в конкретный выходной объект прослушивателя. (Унаследовано от TraceListener) |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String) |
Записывает сведения трассировки, сообщение и сведения о событии в конкретный выход прослушивателя. (Унаследовано от TraceListener) |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32) |
Записывает данные трассировки и события в конкретный выход прослушивателя. (Унаследовано от TraceListener) |
| TraceTransfer(TraceEventCache, String, Int32, String, Guid) |
Записывает сведения трассировки, сообщение, связанное удостоверение действия и сведения о событиях прослушивателя в определенные выходные данные прослушивателя. (Унаследовано от TraceListener) |
| Write(Object, String) |
Записывает имя категории и значение метода объекта ToString() в прослушиватель, который вы создаете при реализации TraceListener класса. (Унаследовано от TraceListener) |
| Write(Object) |
Записывает значение метода объекта ToString() в прослушиватель, который вы создаете при реализации TraceListener класса. (Унаследовано от TraceListener) |
| Write(String, String) |
Записывает имя категории и сообщение прослушивателя, создаваемого TraceListener при реализации класса. (Унаследовано от TraceListener) |
| Write(String) |
Записывает выходные данные в |
| WriteIndent() |
Записывает отступ в прослушиватель, который вы создаете при реализации этого класса, и сбрасывает свойство |
| WriteLine(Object, String) |
Записывает имя категории и значение метода объекта ToString() в прослушиватель, который вы создаете при реализации TraceListener класса, за которым следует терминатор строки. (Унаследовано от TraceListener) |
| WriteLine(Object) |
Записывает значение метода объекта ToString() в прослушиватель, который создается при реализации TraceListener класса, за которым следует терминатор строки. (Унаследовано от TraceListener) |
| WriteLine(String, String) |
Записывает имя категории и сообщение прослушивателю, созданному при реализации TraceListener класса, за которым следует терминатор строки. (Унаследовано от TraceListener) |
| WriteLine(String) |
Записывает выходные данные в |
Применяется к
Потокобезопасность
Этот класс является потокобезопасной.