2010-04-29 17 views
6

Czy ktoś wie, czy można logować się w SSIS (SQL Server Integration Services) za pośrednictwem log4net? Jeśli tak, to wszelkie wskazówki i pułapki, o których należy pamiętać? Jak wygląda historia wdrożenia?Używanie log4net jako mechanizmu rejestrowania SSIS?

Wiem, że najlepszym rozwiązaniem mojego problemu jest niestosowanie SSIS. W rzeczywistości, tak bardzo jak nienawidzę tej technologii POS, firma, z którą pracuję, zachęca do używania tych aplikacji zamiast pisania kodu. Meh.

+0

Dlaczego nie skorzystać z wielu opcji wbudowanych w SSIS do logowania? –

+0

Nie próbowałem ich sam. Ale poprzednie pakiety utworzone przez inne osoby wygenerowały dzienniki, które są bezużyteczne. Sądzę, że mógłbym to wypróbować na razie, ale umiejętność używania mocy L4n byłaby niesamowita. – enriquein

+0

Po wprowadzeniu logowania SSIS do pliku tekstowego mogę stwierdzić, że 1) format jest dość brzydki. 2) ważne informacje zawsze znajdują się na końcu linii. 3) plik logu jest ciągle dołączany, nigdy nie jest nadpisywany (to jest to, czego potrzebujemy). Uważam również, że nie jest tak elastyczny, jak by się chciał. Jest to prawdopodobnie kolejny przykład myślenia Microsoftu o tym, czego klient może chcieć, zamiast wypytywać klientów, czego naprawdę potrzebują. – enriquein

Odpowiedz

3

Więc, aby odpowiedzieć na moje własne pytanie: jest to możliwe. Nie jestem pewien, jak będzie wyglądała nasza historia wdrożenia, ponieważ zostanie to zrobione za kilka tygodni.

Prawie wziąłem informacje z tych źródeł i sprawiłem, że działały. Ten wyjaśnia, jak sprawić, aby zespoły referencyjne działały z SSIS, click here. Wersja TLDR: umieść ją w GAC, a także skopiuj bibliotekę DLL do folderu docelowej struktury. W moim przypadku C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727. Aby programowo skonfigurować log4net, otrzymałem jako odniesienie this link.

To jest jak moja rejestrator kod konfiguracja wygląda na stworzenie pliku z datownika na nim:

using log4net; 
using log4net.Config; 
using log4net.Layout; 
using log4net.Appender; 

public class whatever 
{ 
    private ILog logger; 
    public void InitLogger() 
    { 
     PatternLayout layout = new PatternLayout("%date [%level] - %message%newline"); 
     FileAppender fileAppenderTrace = new FileAppender(); 
     fileAppenderTrace.Layout = layout; 
     fileAppenderTrace.AppendToFile = false; 

     // Insert current date and time to file name 
     String dateTimeStr = DateTime.Now.ToString("yyyyddMM_hhmm"); 
     fileAppenderTrace.File = string.Format("c:\\{0}{1}", dateTimeStr.Trim() ,".log"); 

     // Configure filter to accept log messages of any level. 
     log4net.Filter.LevelMatchFilter traceFilter = new log4net.Filter.LevelMatchFilter(); 
     traceFilter.LevelToMatch = log4net.Core.Level.All; 
     fileAppenderTrace.ClearFilters(); 
     fileAppenderTrace.AddFilter(traceFilter); 

     fileAppenderTrace.ImmediateFlush = true; 
     fileAppenderTrace.ActivateOptions(); 

     // Attach appender into hierarchy 
     log4net.Repository.Hierarchy.Logger root = ((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root; 
     root.AddAppender(fileAppenderTrace); 
     root.Repository.Configured = true; 
     logger = log4net.LogManager.GetLogger("root"); 
    } 
} 

Mam nadzieję, że to może komuś pomóc w przyszłości lub przynajmniej służyć jako punkt odniesienia, jeśli kiedykolwiek potrzeba zrób to jeszcze raz.

-2

Przykro mi, nie wykopałeś wystarczająco głęboko. Istnieje 5 różnych miejsc docelowych, do których można się logować, oraz 7 kolumn, które można włączyć do rejestrowania lub nie, oraz od 18 do 50 różnych zdarzeń, w których można rejestrować logowanie. Wygląda na to, że wybrałeś domyślne rejestrowanie i odrzucono je, ponieważ nie działało ono po wyjęciu z pudełka.
Sprawdź te dwa blogi uzyskać więcej informacji na temat tego, co można zrobić z wyrębu SSIS: http://consultingblogs.emc.com/jamiethomson/archive/2005/06/11/SSIS_3A00_-Custom-Logging-Using-Event-Handlers.aspx
http://www.sqlservercentral.com/blogs/michael_coles/archive/2007/10/09/3012.aspx

+1

Zanim opublikowałem swoją odpowiedź, już wypróbowałem wbudowany mechanizm rejestrowania i bawiłem się dostosowywaniem. To, o czym nie pomyślałem, to używanie funkcji obsługi zdarzeń w celu wzbogacenia tej funkcjonalności. Link do bloga Jamiego był dość interesującą lekturą. Myślę, że zamierzam również oddać taki strzał, aby było sprawiedliwe. To nadal nie rozwiązuje problemu z logami, które wymykają się spod kontroli. Nie naprawia też możliwości drastycznej zmiany szczegółowości rejestrowania. Mimo to uważam, że rejestrowanie SSIS może być przydatne do logowania do innych elementów niż pliki. Jeszcze raz dziękuję za sugestię. – enriquein

Powiązane problemy