﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Дерево логируемых классов</title>
  <id>~/topic/10812/derevo-logiruemyh-klassov/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-29T23:57:17Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=10812" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/47869/</id>
    <title type="text">Например, как в BaseLogReceiver https://github.com/StockSharp/StockSharp/blob/master/Logging/ILogRec...</title>
    <published>2019-06-21T15:01:46Z</published>
    <updated>2019-06-21T15:01:46Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Например, как в BaseLogReceiver &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Logging/ILogReceiver.cs#L44" title="https://github.com/StockSharp/StockSharp/blob/master/Logging/ILogReceiver.cs#L44"&gt;https://github.com/Stock...ging/ILogReceiver.cs#L44&lt;/a&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/47868/</id>
    <title type="text">Дополнительно требуется отнеследовать от интерфейса ILogReceiver. Родительские через метод AddLog по...</title>
    <published>2019-06-21T14:45:15Z</published>
    <updated>2019-06-21T14:45:15Z</updated>
    <author>
      <name>Константин</name>
      <uri>https://stocksharp.ru/users/98279/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Support &lt;a href="https://stocksharp.ru/posts/m/47865/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Дополнительно требуется отнеследовать от интерфейса ILogReceiver. Родительские через метод AddLog получает сообщения от дочерних элементов.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я не понимаю какая должна быть реализация метода AddLog что бы дочерние элементы появились в дереве. Каким образом нужно передавать LogMessage родителю?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/47865/</id>
    <title type="text">Дополнительно требуется отнеследовать от интерфейса ILogReceiver. Родительские через метод AddLog по...</title>
    <published>2019-06-21T13:07:50Z</published>
    <updated>2019-06-21T13:07:50Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Дополнительно требуется отнеследовать от интерфейса ILogReceiver. Родительские через метод AddLog получает сообщения от дочерних элементов.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/47862/</id>
    <title type="text">Добавлять дочерние источники не нужно: LogManager.Sources.Add(testSourceWindow); Как только ваш исто...</title>
    <published>2019-06-20T20:02:36Z</published>
    <updated>2019-06-20T20:02:36Z</updated>
    <author>
      <name>Константин</name>
      <uri>https://stocksharp.ru/users/98279/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Support &lt;a href="https://stocksharp.ru/posts/m/47859/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Добавлять дочерние источники не нужно:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;LogManager.Sources.Add(testSourceWindow);&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Как только ваш источник пошлёт первое сообщение он появится в дереве.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Если дочерний источник не добавлять то от него вывода нет вообще.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/47859/</id>
    <title type="text">Добавлять дочерние источники не нужно: LogManager.Sources.Add(testSourceWindow); Как только ваш исто...</title>
    <published>2019-06-20T16:25:26Z</published>
    <updated>2019-06-20T16:25:26Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Добавлять дочерние источники не нужно:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;LogManager.Sources.Add(testSourceWindow);&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Как только ваш источник пошлёт первое сообщение он появится в дереве.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/47848/</id>
    <title type="text">Здравствуйте! Как можно вложить логируемый класс в основной что бы в StockSharp.Xaml.Monitor он выво...</title>
    <published>2019-06-19T20:05:41Z</published>
    <updated>2019-06-19T20:05:41Z</updated>
    <author>
      <name>Константин</name>
      <uri>https://stocksharp.ru/users/98279/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Здравствуйте! Как можно вложить логируемый класс в основной что бы в StockSharp.Xaml.Monitor он выводился внутри дерева основного?&lt;br /&gt;Устанавливал значение Parent и IsRoot разными способами но никаких изменений нет.&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_3724d63cdf6f43078d20ee4dc12a3f9f');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_3724d63cdf6f43078d20ee4dc12a3f9f' style='display:none'&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&amp;lt;Window x:Class=&amp;quot;WpfApp2.MainWindow&amp;quot;&lt;br /&gt;        xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;br /&gt;        xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;br /&gt;        xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;br /&gt;        xmlns:mc=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;br /&gt;        xmlns:local=&amp;quot;clr-namespace:WpfApp2&amp;quot;&lt;br /&gt;        xmlns:xaml=&amp;quot;http://schemas.stocksharp.com/xaml&amp;quot;&lt;br /&gt;        mc:Ignorable=&amp;quot;d&amp;quot;&lt;br /&gt;        Title=&amp;quot;MainWindow&amp;quot; Height=&amp;quot;350&amp;quot; Width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;Grid&amp;gt;&lt;br /&gt;            &amp;lt;Grid.RowDefinitions&amp;gt;&lt;br /&gt;                &amp;lt;RowDefinition/&amp;gt;&lt;br /&gt;                &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/Grid.RowDefinitions&amp;gt;&lt;br /&gt;        &amp;lt;xaml:Monitor Name=&amp;quot;Monitor&amp;quot;/&amp;gt;&lt;br /&gt;        &amp;lt;Button Content=&amp;quot;Start&amp;quot; Click=&amp;quot;Button_Click&amp;quot; Grid.Row=&amp;quot;1&amp;quot; Margin=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/Grid&amp;gt;&lt;br /&gt;&amp;lt;/Window&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;using System;&lt;br /&gt;using System.Windows;&lt;br /&gt;using StockSharp.Logging;&lt;br /&gt;using StockSharp.Xaml;&lt;br /&gt;&lt;br /&gt;namespace WpfApp2&lt;br /&gt;{&lt;br /&gt;    /// &amp;lt;summary&amp;gt;&lt;br /&gt;    /// Логика взаимодействия для MainWindow.xaml&lt;br /&gt;    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;    public partial class MainWindow : ILogSource&lt;br /&gt;    {&lt;br /&gt;        public readonly LogManager LogManager;&lt;br /&gt;        public Guid Id { get; }&lt;br /&gt;        public new ILogSource Parent { get; set; }&lt;br /&gt;        public LogLevels LogLevel { get; set; }&lt;br /&gt;        public DateTimeOffset CurrentTime =&amp;gt; DateTimeOffset.Now;&lt;br /&gt;        public bool IsRoot { get; }&lt;br /&gt;&lt;br /&gt;        public event Action&amp;lt;LogMessage&amp;gt; Log;&lt;br /&gt;&lt;br /&gt;        public MainWindow()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            Name = &amp;quot;MainWindow&amp;quot;;&lt;br /&gt;            LogManager = new LogManager();&lt;br /&gt;            LogLevel = LogLevels.Info;&lt;br /&gt;            LogManager.Sources.Add(this);&lt;br /&gt;            LogManager.Listeners.Add(new GuiLogListener(Monitor));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void Button_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            Log?.Invoke(new LogMessage(this, CurrentTime, LogLevel, &amp;quot;Сообщение главного класса.&amp;quot;));&lt;br /&gt;            var testSourceWindow = new TestClass()&lt;br /&gt;            {&lt;br /&gt;                Parent = this&lt;br /&gt;            };&lt;br /&gt;            LogManager.Sources.Add(testSourceWindow);&lt;br /&gt;            testSourceWindow.Test();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void Dispose()&lt;br /&gt;        {&lt;br /&gt;            throw new NotImplementedException();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    class TestClass : ILogSource&lt;br /&gt;    {&lt;br /&gt;        private ILogSource _parent;&lt;br /&gt;&lt;br /&gt;        public void Dispose()&lt;br /&gt;        {&lt;br /&gt;            throw new NotImplementedException();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public Guid Id { get; }&lt;br /&gt;        public string Name { get; set; } = &amp;quot;TestClass&amp;quot;;&lt;br /&gt;        public ILogSource Parent&lt;br /&gt;        {&lt;br /&gt;            get =&amp;gt; _parent;&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _parent = value;&lt;br /&gt;                LogLevel = value.LogLevel;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public LogLevels LogLevel { get; set; }&lt;br /&gt;        public DateTimeOffset CurrentTime =&amp;gt; DateTimeOffset.Now;&lt;br /&gt;        public bool IsRoot { get; }&lt;br /&gt;        public event Action&amp;lt;LogMessage&amp;gt; Log;&lt;br /&gt;&lt;br /&gt;        public void Test()&lt;br /&gt;        {&lt;br /&gt;            Log?.Invoke(new LogMessage(this, CurrentTime, LogLevel, $&amp;quot;Сообщение вторичного класса.&amp;quot;));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>