EventLog.Source 属性

获取或设置在写入事件日志时要注册和使用的源名称。

**命名空间:**System.Diagnostics
**程序集:**System(在 system.dll 中)

语法

声明
Public Property Source As String
用法
Dim instance As EventLog
Dim value As String

value = instance.Source

instance.Source = value
public string Source { get; set; }
public:
property String^ Source {
    String^ get ();
    void set (String^ value);
}
/** @property */
public String get_Source ()

/** @property */
public void set_Source (String value)
public function get Source () : String

public function set Source (value : String)

属性值

在事件日志中注册为项源的名称。默认值为空字符串 ("")。

异常

异常类型 条件

ArgumentException

此源名称导致注册表项路径的长度超过 254 个字符。

备注

事件源指示用什么来记录事件。这通常是应用程序的名称,如果应用程序非常大,则是应用程序子组件的名称。应用程序和服务应写入 Application 日志或自定义日志。设备驱动程序应写入 System 日志。

仅当写入事件日志时才需要指定事件源。在向事件日志写入项之前,必须在事件日志中将该事件源注册为有效的事件源。当写入日志项时,系统使用 Source 属性查找适合放置项的日志。如果正在读取事件日志,可以指定 Source,或指定 LogMachineName

提示

如果要连接到本地计算机上的日志,则不要求指定 MachineName。如果不指定 MachineName,则假定为本地计算机 (".")。

使用 WriteEventWriteEntry 向事件日志中写入事件。若要写入事件,必须指定一个事件源;在事件源中写入第一项之前,必须先创建并配置事件源。

在安装应用程序的过程中创建新的事件源。这样操作系统就有时间刷新已注册的事件源的列表以及这些事件源的配置。如果操作系统尚未刷新自己的事件源列表,而您试图在新源中写入事件,则写操作将会失败。您可以使用 EventLogInstaller 或者使用 CreateEventSource 方法配置新的源。若要创建新的事件源,您必须拥有计算机的管理员权限。

可以为现有事件日志或新的事件日志创建事件源。在为新的事件日志创建新源时,系统会为该日志注册源,但直到写入第一条日志时才会创建该日志。

在本地计算机上源必须是唯一的;新源的名称不能与现有源的名称或现有事件日志的名称匹配。每个源一次只能写入一个事件日志;但是,应用程序可以使用多个源写入多个事件日志。例如,应用程序可能会要求您为不同的事件日志或资源文件配置多个源。

如果您更改 Source 值,则其注册到的 EventLog 将关闭,并且所有事件句柄都会被释放。

无论要写入本地化后的项还是要直接写入字符串,都必须配置源。如果应用程序写入项时既使用资源标识符也使用字符串值,则必须注册两个不同的源。例如,用资源文件配置一个源,然后在 WriteEvent 方法中使用该源,将使用资源标识符的项写入到事件日志。然后,另外创建一个不带资源文件的源,并在 WriteEntry 方法中使用该源,直接将字符串写入到使用该源的事件日志。

若要更改现有源的配置详细信息,必须先删除现有源,然后使用新的配置重新创建源。如果其他应用程序或组件使用现有源,则应使用更新的配置创建新源,而不要删除现有源。

提示

如果某个源已经映射到某个日志,而现在又将它重新映射到新的日志,则必须重新启动计算机才能使更改生效。

主题 位置
如何:生成并运行配置文件提供程序示例 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:生成并运行配置文件提供程序示例 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:生成并运行配置文件提供程序示例 生成 ASP .NET Web 应用程序

示例

下面的示例创建源 MySource(如果尚未存在),并在事件日志 MyNewLog 中写入一项。

Option Explicit
Option Strict
Imports System
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource") Then
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
        
        Console.WriteLine("Message written to event log.")
    End Sub ' Main
End Class ' MySample
using System;
using System.Diagnostics;
using System.Threading;
              
class MySample{

    public static void Main(){
    
        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource")){
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatingEventSource");
        }
                
        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";
        
        // Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.");
        
        Console.WriteLine("Message written to event log.");                                                                        
    }
}
   
#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource" ) )
   {
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      Console::WriteLine( "CreatingEventSource" );
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
   Console::WriteLine( "Message written to event log." );
}
import System.*;
import System.Diagnostics.*;
import System.Threading.*;

class MySample
{
    public static void main(String[] args)
    {
        // Create the source, if it does not already exist.
        if (!(EventLog.SourceExists("MySource"))) {
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatingEventSource");
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.set_Source("MySource");

        // Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.");
        Console.WriteLine("Message written to event log.");
    } //main
} //MySample

.NET Framework 安全性

平台

Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

EventLog 类
EventLog 成员
System.Diagnostics 命名空间
EventLog.Log 属性
EventLog.MachineName 属性
CreateEventSource
DeleteEventSource
SourceExists