Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 TraceListener ничего не пишет в файл  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72998
В таком виде все в порядке, некорректная прокся продуцирует портянку текста (если ошибок нет, файл пустой):

+
  <system.diagnostics>
    <sources>
      <source name="System.Net" tracemode="protocolonly" maxdatasize="1024">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <source name="System.Net.Cache">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <source name="System.Net.Http">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <source name="System.Net.Sockets">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <source name="System.Net.WebSockets">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="System.Net" value="Verbose"/>
      <add name="System.Net.Cache" value="Information"/>
      <add name="System.Net.Http" value="Verbose"/>
      <add name="System.Net.Sockets" value="Information"/>
      <add name="System.Net.WebSockets" value="Information"/>
    </switches>
    <sharedListeners>
      <add name="System.Net"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="network.log"
        traceOutputOptions="ProcessId, DateTime"
      />
    </sharedListeners>
    <trace autoflush="true"/>
  </system.diagnostics>

А в таком виде файл пустой в любом случае:

internal class TraceCollector
    {
        public readonly static string FilePath = Path.Combine(Util.Path, "network.log");

        private readonly List<TraceSource> _sources = new List<TraceSource>();
        private readonly TextWriterTraceListener _listener = new TextWriterTraceListener(FilePath)
        { 
            TraceOutputOptions = TraceOptions.ProcessId | TraceOptions.DateTime 
        };

        public TraceCollector()
        {
            AddSource("System.Net", SourceLevels.Verbose);
            AddSource("System.Net.Cache", SourceLevels.Information);
            AddSource("System.Net.Http", SourceLevels.Verbose);
            AddSource("System.Net.Sockets", SourceLevels.Information);
            AddSource("System.Net.WebSockets", SourceLevels.Information);
        }

        private void AddSource(string lib, SourceLevels level)
        {
            var src = new TraceSource(lib, level);
            src.Listeners.Add(_listener);
            _sources.Add(src);
        }

        public void Flush()
            => _listener.Flush();
    }
    
var trace = new TraceCollector();
server.Ping();
trace.Flush();
Я-то что не так напейсал?
21 сен 21, 12:54    [22374105]     Ответить | Цитировать Сообщить модератору
 Re: TraceListener ничего не пишет в файл  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72998
Походу он никак не включается из кода. Только из конфига. А из кода - трассируй ручками, юзернейм.
Тьху.
22 сен 21, 17:27    [22374716]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить