2012-05-28 13 views
9

Mam niektóre usługi .NET WCF, dla tych usług skonfigurowałem plik app.config do rejestrowania wiadomości wysłanych i odebranych w pliku .svclog, który jest czytelny przez "Service Trace Viewer Tool" (SvcTraceViewer.exe). To narzędzie renderuje pliki dziennika ładnie wyraźnie pokazując przetwarzane komunikaty SOAP..NET WCF Dziennik śledzenia usług z zarządzaniem plikami dziennika (Rolling)

Muszę użyć detektora System.Diagnostics.XmlWriterTraceListener, aby poprawnie sformatować plik .svclog do przetworzenia przez narzędzie Service Trace Viewer Tool.

Problem polega na tym, że plik .svclog staje się zbyt duży. & Narzędzie śledzenia śladu usługi staje się bezużyteczne z powodu wolnego czasu odpowiedzi.

Narzędzie do śledzenia śladów serwisowych udostępnia funkcję umożliwiającą otwarcie części pliku dziennika, jeśli plik ma rozmiar> 40 MB, ale jest on zbyt wolny. Wygląda na to, że w pliku app.config nie ma możliwości skonfigurowania pliku .svclog, aby automatycznie tworzył nowy plik każdego dnia lub gdy plik osiągnie określony rozmiar.

Jest słuchaczem dziennika tekst zwany Microsoft.VisualBasic.Logging.FileLogTraceListener który ma wspierać logfilecreationschedule = „Daily” właściwość, która rzuca plik dziennika codziennie, jednak wynikowy plik dziennika z tego słuchacza jest trudne dla osoby wspierającej działanie używać, ponieważ wpisy w dzienniku nie są dobrze renderowane, a duże dokumenty XML przyczyniają się do zamieszania.

Jaka jest najlepsza praktyka w tej dziedzinie, wygląda na to, że być może będę musiała napisać niestandardowe rozszerzenie logu WCF, które wydaje się przesadą, aby poradzić sobie z brakiem funkcji przechodzenia do pliku dziennika w wbudowanym System.Diagnostics. XmlWriterTraceListener dziennika odbiornika/appender.

Eksperymentowałem również ze skryptem, aby zatrzymać moją aplikację i zmienić nazwy plików dziennika, ale nie wydaje się to możliwe, ponieważ w systemie Windows narzędzia handle.exe i openfile nie mogą zamknąć pliku otwartego przez udział sieciowy, więc nie można zmienić nazwy/przenieść starego pliku dziennika, jeśli ktoś przegląda go w udziale sieciowym. Niedługo opublikujemy osobne pytanie na ten temat.

Dzięki, Matt.

+0

Choć jest to wykonalne, nie mają już WCF śledzenie włączone wszystkie czasy. Został zaprojektowany jako metoda rozwiązywania problemów i ma wpływ na wydajność. Wyłączenie go w środowisku produkcyjnym jest najlepszą praktyką. –

Odpowiedz

9

Można się rozwijać samodzielnie lub korzystać z już istniejącego wyspecjalizowanego narzędzia XmlWriterTraceListener lub użyć mechanizmu dziennika śledzenia kołowego.

Jest wyspecjalizowanym realizacja XmlWriterTraceListener który wykonuje toczenia dziennika śledzenia na codeproject:

http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener

kolistymi śledzenia masz dwa pliki, które każdy może przechowywać do połowy ogólnej żądane dane dziennika śledzenia . Detektor tworzy jeden plik i zapisuje do tego pliku, aż osiągnie limit połowy rozmiaru danych, w którym to momencie przełącza się do drugiego pliku. Kiedy słuchacz osiągnie limit dla drugiego pliku - nadpisuje pierwszy plik nowymi śladami.

http://msdn.microsoft.com/en-us/library/aa395205.aspx

+0

Dzięki Sergio, naprawdę znasz swoje WCF lub twoje możliwości wyszukiwania w Internecie znacznie przekraczają moje. Albo może, bardzo docenione. Oba rozwiązania są opłacalne. Nie jestem pewien, z którą jeszcze pójdę. Mogę spróbować obu. – MattG

Powiązane problemy