{"id":71,"date":"2009-04-21T22:09:22","date_gmt":"2009-04-21T21:09:22","guid":{"rendered":"http:\/\/csopro.de\/biblog\/2009\/04\/rollierendes-log-file-in-ssis-paketen\/"},"modified":"2009-04-21T22:09:22","modified_gmt":"2009-04-21T21:09:22","slug":"rollierendes-log-file-in-ssis-paketen","status":"publish","type":"post","link":"https:\/\/www.csopro.de\/biblog\/2009\/04\/rollierendes-log-file-in-ssis-paketen\/","title":{"rendered":"Rollierendes Log-File in SSIS-Paketen"},"content":{"rendered":"<p>Bei Integration Services-Paketen ist es einfach, ein Logfile einzustellen (SSIS&gt;Logging&#8230;), das gew\u00fcnschte Events (Errors, Warnings, Information, &#8230;) protokolliert. Im Standard wird ein solches Logfile bei jedem Lauf des Pakets gr\u00f6\u00dfer, da immer neue Zeilen angef\u00fcgt werden. Dies hat Nachteile, da es Eingriffe durch einen Administrator erfordert.<\/p>\n<p>In der Regel verwende ich deshalb in meinen Paketen Logfiles, die den Wochentag im Logfilenamen haben (datei_1.log f\u00fcr Montag, datei_2.log f\u00fcr Dienstag, &#8230;), so dass die Logfiles nach 7 Tagen \u00fcberschrieben werden, so dass eine ausreichende Anzahl von Logfiles f\u00fcr die Fehlersuche zur Verf\u00fcgung stehen, der belegte Plattenplatz aber nicht st\u00e4ndig steigt.<\/p>\n<p>Dazu gehe ich wie folgt vor:<\/p>\n<p>Es werden zwei Variablen definiert, deren Werte \u00fcber Konfigurationsdateien (*.dtsconfig via SSIS&gt;Package Configurations&#8230;) eingestellt werden:<\/p>\n<ul>\n<li>\n<div>setting_LogPath: Der Pfad, in dem die Logfiles liegen sollen, z.B. &#8222;c:temp&#8220;<\/div>\n<\/li>\n<li>\n<div>setting_LogFileName: Name des Logfiles, z.B. testlog<\/div>\n<\/li>\n<\/ul>\n<p>Dann gibt es eine Variable &#8222;LogFile&#8220;, die \u00fcber eine Expression berechnet wird:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"160\" alt=\"Variable LogFile - einige Properties\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/04\/evaluateasexpression.jpg\" width=\"258\" \/><\/p>\n<p>@[User::setting_LogPath] + ((right(@[User::setting_LogPath],1)==&#8220;\\&#8220;) ? &#8222;&#8220; : &#8222;\\&#8220;) + @[User::setting_LogFileName] + &#8222;_&#8220; + (DT_WSTR, 1) DATEPART( &#8222;dw&#8220;, GETDATE() ) + &#8222;.log&#8220;<\/p>\n<p>Einige Bemerkungen zu dieser Berechnung:<\/p>\n<ul>\n<li>\n<div>Falls der Pfad nicht auf  endet, wird ein  an den Pfad angef\u00fcgt. Achtung  muss wie in C# zu \\ &#8222;escapet&#8220; werden.<\/div>\n<\/li>\n<li>\n<div>Der Wochentag wird \u00fcber Datepart ermittelt. Statt GetDate() k\u00f6nnte auch das Startdatum des Pakets (System-Variable @[System::StartTime]) verwendet werden<\/div>\n<\/li>\n<li>\n<div>Im deutschen SSIS hei\u00dfen die Variablen @[Benutzer:: statt @[User::<\/div>\n<\/li>\n<\/ul>\n<p>Im Connection Manager wird dann eine File-Connection angelegt:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"95\" alt=\"SSISLogFile im Connection Manager\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/04\/connewctionmanager.jpg\" width=\"199\" \/><\/p>\n<p>\u00dcber die Expressions dieser Connection wird der Dateiname auf die Variable &#8222;Logfile&#8220; gesetzt:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"279\" alt=\"Eigenschaften der SSISLogFile Connection\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/04\/ssislogfileproperties.jpg\" width=\"268\" \/><\/p>\n<p>Somit wird jeden Wochentag ein anderes Logfile verwendet. Da dabei immer angef\u00fcgt wird, muss noch das morgige Logfile gel\u00f6scht werden.<\/p>\n<p>Dazu wird noch eine Variable &#8222;LogFile2Delete&#8220; angelegt, die \u00fcber folgende Expression &#8211; analog zu LogFile &#8211; berechnet wird:<\/p>\n<p>@[User::setting_LogPath] + ((right(@[User::setting_LogPath],1)==&#8220;\\&#8220;) ? &#8222;&#8220; : &#8222;\\&#8220;) + @[User::setting_LogFileName] + &#8222;_&#8220; + (DT_WSTR, 1) DATEPART( &#8222;dw&#8220;, dateadd(&#8222;day&#8220;, 1, GETDATE()) ) + &#8222;.log&#8220;<\/p>\n<p>\u00dcber ein FileSystemTask wird diese Datei dann zum Ende des Pakets gel\u00f6scht. Falls die Datei nicht existiert, macht das nichts &#8211; die FileSystemTask schmei\u00dft keinen Fehler.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"82\" alt=\"L\u00f6sche morgiges Logfile \u00fcber eine FileSystemTask\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/04\/filesystemtaskloeschemorgigeslogfile.jpg\" width=\"176\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"236\" alt=\"Einstellungen der FilesystemTask\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/04\/filessystemtask.jpg\" width=\"447\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei Integration Services-Paketen ist es einfach, ein Logfile einzustellen (SSIS&gt;Logging&#8230;), das gew\u00fcnschte Events (Errors, Warnings, Information, &#8230;) protokolliert. Im Standard wird ein solches Logfile bei jedem Lauf des Pakets gr\u00f6\u00dfer, da immer neue Zeilen angef\u00fcgt werden. Dies hat Nachteile, da es Eingriffe durch einen Administrator erfordert. In der Regel verwende ich deshalb in meinen Paketen &hellip; <a href=\"https:\/\/www.csopro.de\/biblog\/2009\/04\/rollierendes-log-file-in-ssis-paketen\/\" class=\"more-link\"><span class=\"screen-reader-text\">Rollierendes Log-File in SSIS-Paketen<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","hentry","category-integrationservices"],"_links":{"self":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":0,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}