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://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>