Лог и трассировка - System. Diagnostics 

Page / - Изменено Alexandr Fokin в 2022/12/30 00:19 

System. Diagnostics 
Изменено Alexandr Fokin
в 2022/12/30 00:19

Оглавление

System.Diagnostics
Open Telemetry
System.Diagnostics Пространство имен
https://learn.microsoft.com/ru-ru/dotnet/api/system.diagnostics?view=net-7.0

Замечания:
 1.	ActivitySource не создает экземпляры Activity (возвращает null), если нет ни одного активного ActivityListener.
 2.	!!! Нижеприведенный код после публикации сборки (и в Release и в Debug) может никогда не выполниться, в случае, если к полю _Listener (и к классу FakeListener) нет других обращений.
И Activity не будут создаваться.
private static readonly FakeListener _Listener = new FakeListener();

internal class FakeListener
{
 public FakeListener()
 {
  ActivityListener = new ActivityListener()
  {
   ShouldListenTo = (source) => true,
   SampleUsingParentId = (ref ActivityCreationOptions<string> activityOptions) => ActivitySamplingResult.AllData,
   Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) => ActivitySamplingResult.AllData
  };
  ActivitySource.AddActivityListener(
   ActivityListener
   );
 }
}

Metric	System.Diagnostics.Metrics
https://learn.microsoft.com/ru-ru/dotnet/api/system.diagnostics.metrics?view=net-7.0
NonObservable	Хранит значение метрики самостоятельно	
Observable	Использует внешний делегат, для получения текущего значения метрики.
Предполагается, что внешний код будет периодически снимать показания.	
Наблюдаемые инструменты	Instrument
ObservableInstrument	Базовый класс	 	
	Counter
ObservableCounter	Допускает неотрицательные числовые значения.
Выполняет агрегацию поступающих значений, суммируя их.	Add	
	Histogram	Допускает числовые значения.
Без агрегации, просто фиксирует само значение.	Record	
	UpDownCounter
ObservableUpDownCounter	Допускает числовые значения.
Выполняет агрегацию поступающих значений, вычисляя дельты (изменения) значения (в сравнении с предыдущим).	Add	
	ObservableGauge	 	 	
Инфраструктура	Meter	Создание и отслеживание	 	
	MeterListener	Прослушивание	 	
	
Tracing	DiagnosticSource	System.Diagnostics.DiagnosticSource
DiagnosticSource	
DiagnosticListener	
	
	Activity	ActivitySource	 	
Activity	1	OperationName	Имя	
	Duration	Длительность	
2	Tags	Key-value коллекция	
	Baggage	Key-value коллекция элементов, передаваемых дочерним Activity	
	Events	Набор событий ActivityEvent.	
	Context	Набор атрибутов, идентифицирующих Activity. 	
	Links	Набор ссылок ActivityLink.	
 	Custom properties	Коллекция прикрепленных объектов	
В момент вызова Dispose activity фиксирует остановку и выполняется оповещение:
(Activity -> ActivitySource -> ActivityListener -> OpenTelemetry.SpanProcessor -> OpenTelemetry.Exporter).	
ActivityListener	 	
ActivityEvent	 	
ActivityLink