Logowanie PRISM

Rafał Kowalski
Rafał Kowalski
  • Zaktualizowano

Nowe funkcjonalności i okna aplikacji Symfonii napisane w technologii WPF / PRISM do logowania błędów, ostrzeżeń i ważnych informacji używają natywnego mechanizmu .NET w postaci źródeł śladu:

System.Diagnostics.TraceSource

i konfigurowalnych nasłuchiwaczy, np.:

System.Diagnostics.XmlWriterTraceListener

System.Diagnostics.EventLogTraceListener

Szczegółowe informacje dostępne są w dokumentacji Microsoft:

https://docs.microsoft.com/pl-pl/dotnet/framework/debug-trace-profile/how-to-create-and-initialize-trace-listeners

https://msdn.microsoft.com/pl-pl/library/system.diagnostics.xmlwritertracelistener(v=vs.110).aspx

 

Włączenie logowania

Domyślnie w aplikacjach Sage logowanie jest wyłączone.

Włączenie logowania możliwe jest z poziomu plików konfiguracyjnych .config przy exe aplikacji.

W tym celu należy zmienić wpis:

    <switches>

      <add name="traceSwitch" value="Off"/>

    </switches>

 

Np. na:

    <switches>

      <add name="traceSwitch" value="Warning"/>

    </switches>

 

Spowoduje to logowanie zdarzeń o typie: ostrzeżenie, błąd.

Jeśli chcemy logować wszelkie informacje to należy ustawić wartość „Info” lub „Verbose”.

Patrz dostępne wartości: https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracelevel?view=netframework-4.7.2

 

Miejsce docelowe

Aplikacje domyślnie dodają w kodzie nasłuchiwacza XmlWriterTraceListener, który zapisuje log do pliku xml w lokalizacji:

%APPDATA% \Sage\Symfonia ERP\nazwa_aplikacji_Sage\Log\podkatalog_z_datą

Przykładowy katalog dla Symfornia ERP Kadry i Płace:

C:\Users\nazwa.uzytkownika\AppData\Roaming\Sage\Symfonia ERP\Sage Kadry i Płace\Log\ 2018-05-17\

 

Dodatkowe informacje

Dodatkowych nasłuchiwaczy można konfigurować w pliku .config, np. EventLogTraceListener zapisujący do dziennika zdarzeń Windows.

Standardowo dostępne typy nasłuchiwaczy zostały umieszczone w komentarzu w odpowiednich sekcjach pliku .config:

   <system.diagnostics>

    <trace autoflush="true" indentsize="4">

      <listeners>

        <!--<add name="xmlWriterListener"/>-->

        <!--<add name="consoleListener"/>-->

        <!--<add name="textWritterListener"/>-->

        <!--<add name="eventSchemaListener"/>-->

        <!--<add name="eventLogTraceListener"/>-->

        <!--<remove name="Default"/>-->

      </listeners>

    </trace>

 

    <sources>

      <source name="Sage Symfonia ERP Administracja" switchName="traceSwitch" switchType="System.Diagnostics.SourceSwitch">

        <listeners>

          <!--<add name="xmlWriterListener"/>-->

          <!--<add name="consoleListener"/>-->

          <!--<add name="textWritterListener"/>-->

          <!--<add name="eventSchemaListener"/>-->

          <!--<add name="eventLogTraceListener"/>-->

          <!--<remove name="Default"/>-->

        </listeners>

      </source>

    </sources>

 

    <switches>

      <add name="traceSwitch" value="Warning"/>

    </switches>

 

    <sharedListeners>

      <!--<add name="xmlWriterListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\Logs\logs.xml" traceOutputOptions="DateTime, Timestamp, ProcessId, ThreadId, Callstack, LogicalOperationStack">

        <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/>

      </add>-->

      <!--<add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener" traceOutputOptions="ProcessId, DateTime, Timestamp">

        <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/>

      </add>-->

      <!--<add name="textWritterListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Logs\logs.txt" traceOutputOptions="DateTime, Timestamp, ProcessId, ThreadId, Callstack, LogicalOperationStack">

        <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/>

      </add>-->

      <!--<add name="eventSchemaListener" type="System.Diagnostics.EventSchemaTraceListener,  System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="C:\Logs\logs.svclog" traceOutputOptions="DateTime, Timestamp, ProcessId, ThreadId, Callstack, LogicalOperationStack" bufferSize="65536" maximumFileSize="20480000" logRetentionOption="LimitedCircularFiles" maximumNumberOfFiles="2">

        <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/>

      </add>-->

      <!--<add name="eventLogTraceListener" type="System.Diagnostics.EventLogTraceListener" initializeData="TraceListenerLog" traceOutputOptions="DateTime, Timestamp, ProcessId, ThreadId, Callstack, LogicalOperationStack">

        <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/>

      </add>-->

    </sharedListeners>

  </system.diagnostics>

Czy ten artykuł był pomocny?

Liczba użytkowników, którzy uważają ten artykuł za przydatny: 0 z 0