﻿<?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-06-10T10:43:42Z</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">&lt;p&gt;Например, как в BaseLogReceiver &lt;a href="https://github.com/StockSharp/StockSharp/blob/master/Logging/ILogReceiver.cs#L44" target="_blank"&gt;https://github.com/StockSharp/StockSharp/blob/master/Logging/ILogReceiver.cs#L44&lt;/a&gt;&lt;/p&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">Support: Дополнительно требуется отнеследовать от интерфейса ILogReceiver. Родительские через метод ...</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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(47865)" rel="nofollow" target="_blank"&gt;Support&lt;/a&gt;:&lt;/strong&gt;
Дополнительно требуется отнеследовать от интерфейса ILogReceiver. Родительские через метод AddLog получает сообщения от дочерних элементов.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я не понимаю какая должна быть реализация метода AddLog что бы дочерние элементы появились в дереве. Каким образом нужно передавать LogMessage родителю?&lt;/p&gt;
</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">&lt;p&gt;Дополнительно требуется отнеследовать от интерфейса ILogReceiver. Родительские через метод AddLog получает сообщения от дочерних элементов.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/47862/</id>
    <title type="text">Support: Добавлять дочерние источники не нужно: LogManager.Sources.Add(testSourceWindow); &amp;gt; &amp;gt; Как то...</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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(47859)" rel="nofollow" target="_blank"&gt;Support&lt;/a&gt;:&lt;/strong&gt;
Добавлять дочерние источники не нужно:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;LogManager.Sources.Add(testSourceWindow);&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; 
&amp;gt; Как только ваш источник пошлёт первое сообщение он появится в дереве.

Если дочерний источник не добавлять то от него вывода нет вообще.
&lt;/code&gt;&lt;/pre&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;p&gt;Добавлять дочерние источники не нужно:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;LogManager.Sources.Add(testSourceWindow);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Как только ваш источник пошлёт первое сообщение он появится в дереве.&lt;/p&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">&lt;p&gt;Здравствуйте! Как можно вложить логируемый класс в основной что бы в StockSharp.Xaml.Monitor он выводился внутри дерева основного?
Устанавливал значение Parent и IsRoot разными способами но никаких изменений нет.&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;Window x:Class=&amp;quot;WpfApp2.MainWindow&amp;quot;
        xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
        xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
        xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;
        xmlns:mc=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;
        xmlns:local=&amp;quot;clr-namespace:WpfApp2&amp;quot;
        xmlns:xaml=&amp;quot;http://schemas.stocksharp.com/xaml&amp;quot;
        mc:Ignorable=&amp;quot;d&amp;quot;
        Title=&amp;quot;MainWindow&amp;quot; Height=&amp;quot;350&amp;quot; Width=&amp;quot;800&amp;quot;&amp;gt;
    &amp;lt;Grid&amp;gt;
            &amp;lt;Grid.RowDefinitions&amp;gt;
                &amp;lt;RowDefinition/&amp;gt;
                &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot;/&amp;gt;
            &amp;lt;/Grid.RowDefinitions&amp;gt;
        &amp;lt;xaml:Monitor Name=&amp;quot;Monitor&amp;quot;/&amp;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;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;using System;
using System.Windows;
using StockSharp.Logging;
using StockSharp.Xaml;

namespace WpfApp2
{
    /// &amp;lt;summary&amp;gt;
    /// Логика взаимодействия для MainWindow.xaml
    /// &amp;lt;/summary&amp;gt;
    public partial class MainWindow : ILogSource
    {
        public readonly LogManager LogManager;
        public Guid Id { get; }
        public new ILogSource Parent { get; set; }
        public LogLevels LogLevel { get; set; }
        public DateTimeOffset CurrentTime =&amp;gt; DateTimeOffset.Now;
        public bool IsRoot { get; }

        public event Action&amp;lt;LogMessage&amp;gt; Log;

        public MainWindow()
        {
            InitializeComponent();
            Name = &amp;quot;MainWindow&amp;quot;;
            LogManager = new LogManager();
            LogLevel = LogLevels.Info;
            LogManager.Sources.Add(this);
            LogManager.Listeners.Add(new GuiLogListener(Monitor));
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Log?.Invoke(new LogMessage(this, CurrentTime, LogLevel, &amp;quot;Сообщение главного класса.&amp;quot;));
            var testSourceWindow = new TestClass()
            {
                Parent = this
            };
            LogManager.Sources.Add(testSourceWindow);
            testSourceWindow.Test();
        }

        public void Dispose()
        {
            throw new NotImplementedException();
        }

    }


    class TestClass : ILogSource
    {
        private ILogSource _parent;

        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public Guid Id { get; }
        public string Name { get; set; } = &amp;quot;TestClass&amp;quot;;
        public ILogSource Parent
        {
            get =&amp;gt; _parent;
            set
            {
                _parent = value;
                LogLevel = value.LogLevel;
            }
        }

        public LogLevels LogLevel { get; set; }
        public DateTimeOffset CurrentTime =&amp;gt; DateTimeOffset.Now;
        public bool IsRoot { get; }
        public event Action&amp;lt;LogMessage&amp;gt; Log;

        public void Test()
        {
            Log?.Invoke(new LogMessage(this, CurrentTime, LogLevel, $&amp;quot;Сообщение вторичного класса.&amp;quot;));
        }
    }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>