以编程方式启用日志记录
运行时引擎提供 LogProvider 对象的集合,这些对象用于在包验证和执行过程中捕获特定于事件的信息。LogProvider 对象可用于 DtsContainer 对象,包括 TaskHost、Package、ForLoop 和 ForEachLoop 对象。日志记录对个别容器或整个包启用。
有多种类型的日志提供程序可供容器使用。这为以多种格式创建和存储日志信息提供了灵活性。在日志记录中登记容器对象分为两个步骤:首先启用日志记录,然后选择日志提供程序。容器的 LoggingOptions 和 LoggingMode 属性用于指定记录的事件和选择日志提供程序。
启用日志记录
每个可执行日志记录的容器中的 LoggingMode 属性用于确定容器的事件信息是否记录到事件日志中。此属性从 DTSLoggingMode 结构赋值,并且默认情况下此属性从容器的父级继承。如果容器是包,并因此没有父级,则该属性使用 UseParentSetting,其默认值为 Disabled。
选择日志提供程序
LoggingMode 属性设置为 Enabled 后,日志提供程序将添加到容器的 SelectedLogProviders 集合以完成该处理。SelectedLogProviders 集合可用于 LoggingOptions 对象,该集合包含为容器选择的日志提供程序。调用 Add 方法可创建提供程序并将其添加到集合中。然后该方法会返回添加到集合中的日志提供程序。每个提供程序都有其特有的配置设置,这些属性是使用 ConfigString 属性设置的。
下表列出了可用的日志提供程序、其说明和 ConfigString 信息。
提供程序 |
说明 |
ConfigString 属性 |
---|---|---|
SQL Server Profiler |
生成可捕获并在 SQL Server Profiler 中查看的 SQL 跟踪。这种提供程序的默认文件扩展名是 .trc。 |
不需要任何配置。 |
SQL Server |
将事件日志条目写入任意 SQL Server 数据库的 sysssislog 表中。 |
SQL Server 提供程序要求指定与数据库的连接以及目标数据库的名称。 |
文本文件 |
将事件日志条目以逗号分隔值 (CSV) 格式写入 ASCII 文本文件。这种提供程序的默认文件扩展名是 .log。 |
文件连接管理器的名称。 |
Windows 事件日志 |
记录到本地计算机的标准 Windows 事件日志的应用程序日志中。 |
不需要任何配置。 |
XML 文件 |
将事件日志条目写入 XML 格式的文件中。这种提供程序的默认文件扩展名是 .xml。 |
文件连接管理器的名称。 |
通过设置容器的 EventFilterKind 和 EventFilter 属性可将事件包含或排除在事件日志中。EventFilterKind 结构包含两个值,ExclusionFilter 和 InclusionFilter,它们指示添加到 EventFilter 中的事件是否包含在事件日志中。然后赋给 EventFilter 属性一个字符串数组,其中包含属于筛选主题的事件的名称。
下面的代码对包启用日志记录,将文本文件的日志提供程序添加到 SelectedLogProviders 集合,并指定要包含在日志记录输出中的事件列表。
示例
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package p = new Package();
ConnectionManager loggingConnection = p.Connections.Add("FILE");
loggingConnection.ConnectionString = @"C:\SSISPackageLog.txt";
LogProvider provider = p.LogProviders.Add("DTS.LogProviderTextFile.2");
provider.ConfigString = loggingConnection.Name;
p.LoggingOptions.SelectedLogProviders.Add(provider);
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion;
p.LoggingOptions.EventFilter = new String[] { "OnPreExecute",
"OnPostExecute", "OnError", "OnWarning", "OnInformation" };
p.LoggingMode = DTSLoggingMode.Enabled;
// Add tasks and other objects to the package.
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim p As Package = New Package()
Dim loggingConnection As ConnectionManager = p.Connections.Add("FILE")
loggingConnection.ConnectionString = "C:\SSISPackageLog.txt"
Dim provider As LogProvider = p.LogProviders.Add("DTS.LogProviderTextFile.2")
provider.ConfigString = loggingConnection.Name
p.LoggingOptions.SelectedLogProviders.Add(provider)
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion
p.LoggingOptions.EventFilter = New String() {"OnPreExecute", _
"OnPostExecute", "OnError", "OnWarning", "OnInformation"}
p.LoggingMode = DTSLoggingMode.Enabled
' Add tasks and other objects to the package.
End Sub
End Module
|