EventSourceCreationData Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yerel bilgisayarda veya uzak bilgisayarda olay günlüğü kaynağı oluşturmak için kullanılan yapılandırma ayarlarını temsil eder.
public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
- Devralma
-
EventSourceCreationData
Örnekler
Aşağıdaki kod örneği, komut satırı bağımsız değişkenlerinden bir olay kaynağının yapılandırma özelliklerini ayarlar. Giriş bağımsız değişkenleri olay kaynağı adını, olay günlüğü adını, bilgisayar adını ve olay iletisi kaynak dosyasını belirtir. Kod örneği, kaynağın mevcut bir olay kaynağıyla çakışmadığını doğrular ve ardından belirtilen olay günlüğü için yeni olay kaynağını oluşturur.
#using <System.dll>
using namespace System;
using namespace System::Globalization;
using namespace System::Diagnostics;
[STAThread]
int main()
{
array<String^>^args = Environment::GetCommandLineArgs();
EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( "","" );
bool registerSource = true;
// Process input parameters.
if ( args->Length > 1 )
{
// Require at least the source name.
mySourceData->Source = args[ 1 ];
if ( args->Length > 2 )
{
mySourceData->LogName = args[ 2 ];
}
if ( args->Length > 3 )
{
mySourceData->MachineName = args[ 3 ];
}
if ( (args->Length > 4) && (args[ 4 ]->Length > 0) )
{
mySourceData->MessageResourceFile = args[ 4 ];
}
}
else
{
// Display a syntax help message.
Console::WriteLine( "Input:" );
Console::WriteLine( " source [event log] [machine name] [resource file]" );
registerSource = false;
}
// Set defaults for parameters missing input.
if ( mySourceData->MachineName->Length == 0 )
{
// Default to the local computer.
mySourceData->MachineName = ".";
}
if ( mySourceData->LogName->Length == 0 )
{
// Default to the Application log.
mySourceData->LogName = "Application";
}
// Determine if the source exists on the specified computer.
if ( !EventLog::SourceExists( mySourceData->Source, mySourceData->MachineName ) )
{
// The source does not exist.
// Verify that the message file exists
// and the event log is local.
if ( (mySourceData->MessageResourceFile != nullptr) && (mySourceData->MessageResourceFile->Length > 0) )
{
if ( mySourceData->MachineName->Equals( "." ) )
{
if ( !System::IO::File::Exists( mySourceData->MessageResourceFile ) )
{
Console::WriteLine( "File {0} not found - message file not set for source.", mySourceData->MessageResourceFile );
registerSource = false;
}
}
else
{
// For simplicity, do not allow setting the message
// file for a remote event log. To set the message
// for a remote event log, and for source registration,
// the file path should be specified with system-wide
// environment variables that are valid on the remote
// computer, such as
// "%SystemRoot%\system32\myresource.dll".
Console::WriteLine( "Message resource file ignored for remote event log." );
registerSource = false;
}
}
}
else
{
// Do not register the source, it already exists.
registerSource = false;
// Get the event log corresponding to the existing source.
String^ sourceLog;
sourceLog = EventLog::LogNameFromSourceName( mySourceData->Source, mySourceData->MachineName );
// Determine if the event source is registered for the
// specified log.
if ( sourceLog->ToUpper( CultureInfo::InvariantCulture ) != mySourceData->LogName->ToUpper( CultureInfo::InvariantCulture ) )
{
// An existing source is registered
// to write to a different event log.
Console::WriteLine( "Warning: source {0} is already registered to write to event log {1}", mySourceData->Source, sourceLog );
}
else
{
// The source is already registered
// to write to the specified event log.
Console::WriteLine( "Source {0} already registered to write to event log {1}", mySourceData->Source, sourceLog );
}
}
if ( registerSource )
{
// Register the new event source for the specified event log.
Console::WriteLine( "Registering new source {0} for event log {1}.", mySourceData->Source, mySourceData->LogName );
EventLog::CreateEventSource( mySourceData );
Console::WriteLine( "Event source was registered successfully!" );
}
}
using System;
using System.Globalization;
using System.Diagnostics;
namespace EventLogSamples
{
class CreateSourceSample
{
[STAThread]
static void Main(string[] args)
{
EventSourceCreationData mySourceData = new EventSourceCreationData("", "");
bool registerSource = true;
// Process input parameters.
if (args.Length > 0)
{
// Require at least the source name.
mySourceData.Source = args[0];
if (args.Length > 1)
{
mySourceData.LogName = args[1];
}
if (args.Length > 2)
{
mySourceData.MachineName = args[2];
}
if ((args.Length > 3) && (args[3].Length > 0))
{
mySourceData.MessageResourceFile = args[3];
}
}
else
{
// Display a syntax help message.
Console.WriteLine("Input:");
Console.WriteLine(" source [event log] [machine name] [resource file]");
registerSource = false;
}
// Set defaults for parameters missing input.
if (mySourceData.MachineName.Length == 0)
{
// Default to the local computer.
mySourceData.MachineName = ".";
}
if (mySourceData.LogName.Length == 0)
{
// Default to the Application log.
mySourceData.LogName = "Application";
}
// Determine if the source exists on the specified computer.
if (!EventLog.SourceExists(mySourceData.Source,
mySourceData.MachineName))
{
// The source does not exist.
// Verify that the message file exists
// and the event log is local.
if ((mySourceData.MessageResourceFile != null) &&
(mySourceData.MessageResourceFile.Length > 0))
{
if (mySourceData.MachineName == ".")
{
if (!System.IO.File.Exists(mySourceData.MessageResourceFile))
{
Console.WriteLine("File {0} not found - message file not set for source.",
mySourceData.MessageResourceFile);
registerSource = false;
}
}
else
{
// For simplicity, do not allow setting the message
// file for a remote event log. To set the message
// for a remote event log, and for source registration,
// the file path should be specified with system-wide
// environment variables that are valid on the remote
// computer, such as
// "%SystemRoot%\system32\myresource.dll".
Console.WriteLine("Message resource file ignored for remote event log.");
registerSource = false;
}
}
}
else
{
// Do not register the source, it already exists.
registerSource = false;
// Get the event log corresponding to the existing source.
string sourceLog;
sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source,
mySourceData.MachineName);
// Determine if the event source is registered for the
// specified log.
if (sourceLog.ToUpper(CultureInfo.InvariantCulture) != mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture))
{
// An existing source is registered
// to write to a different event log.
Console.WriteLine("Warning: source {0} is already registered to write to event log {1}",
mySourceData.Source, sourceLog);
}
else
{
// The source is already registered
// to write to the specified event log.
Console.WriteLine("Source {0} already registered to write to event log {1}",
mySourceData.Source, sourceLog);
}
}
if (registerSource)
{
// Register the new event source for the specified event log.
Console.WriteLine("Registering new source {0} for event log {1}.",
mySourceData.Source, mySourceData.LogName);
EventLog.CreateEventSource(mySourceData);
Console.WriteLine("Event source was registered successfully!");
}
}
}
}
Imports System.Globalization
Imports System.Diagnostics
Namespace EventLogSamples
Class CreateSourceSample
Public Shared Sub Main(ByVal args() As String)
Dim mySourceData As EventSourceCreationData = new EventSourceCreationData("", "")
Dim registerSource As Boolean = True
' Process input parameters.
If args.Length > 0
' Require at least the source name.
mySourceData.Source = args(0)
If args.Length > 1
mySourceData.LogName = args(1)
End If
If args.Length > 2
mySourceData.MachineName = args(2)
End If
If args.Length > 3 AndAlso args(3).Length > 0
mySourceData.MessageResourceFile = args(3)
End If
Else
' Display a syntax help message.
Console.WriteLine("Input:")
Console.WriteLine(" source [event log] [machine name] [resource file]")
registerSource = False
End If
' Set defaults for parameters missing input.
If mySourceData.MachineName.Length = 0
' Default to the local computer.
mySourceData.MachineName = "."
End If
If mySourceData.LogName.Length = 0
' Default to the Application log.
mySourceData.LogName = "Application"
End If
' Determine if the source exists on the specified computer.
If Not EventLog.SourceExists(mySourceData.Source, _
mySourceData.MachineName)
' The source does not exist.
' Verify that the message file exists
' and the event log is local.
If mySourceData.MessageResourceFile <> Nothing AndAlso _
mySourceData.MessageResourceFile.Length > 0
If mySourceData.MachineName = "."
If Not System.IO.File.Exists(mySourceData.MessageResourceFile)
Console.WriteLine("File {0} not found - message file not set for source.", _
mySourceData.MessageResourceFile)
registerSource = False
End If
Else
' For simplicity, do not allow setting the message
' file for a remote event log. To set the message
' for a remote event log, and for source registration,
' the file path should be specified with system-wide
' environment variables that are valid on the remote
' computer, such as
' "%SystemRoot%\system32\myresource.dll".
Console.WriteLine("Message resource file ignored for remote event log.")
registerSource = False
End If
End If
Else
' Do not register the source, it already exists.
registerSource = False
' Get the event log corresponding to the existing source.
Dim sourceLog As string
sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source, _
mySourceData.MachineName)
' Determine if the event source is registered for the
' specified log.
If sourceLog.ToUpper(CultureInfo.InvariantCulture) <> mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture)
' An existing source is registered
' to write to a different event log.
Console.WriteLine("Warning: source {0} is already registered to write to event log {1}", _
mySourceData.Source, sourceLog)
Else
' The source is already registered
' to write to the specified event log.
Console.WriteLine("Source {0} already registered to write to event log {1}", _
mySourceData.Source, sourceLog)
End If
End If
If registerSource
' Register the new event source for the specified event log.
Console.WriteLine("Registering new source {0} for event log {1}.", _
mySourceData.Source, mySourceData.LogName)
EventLog.CreateEventSource(mySourceData)
Console.WriteLine("Event source was registered successfully!")
End If
End Sub
End Class
End Namespace 'EventLogSamples
Açıklamalar
EventSourceCreationData Bir olay günlüğüne yerelleştirilmiş girdiler yazmak için yeni bir kaynak yapılandırmak için sınıfını kullanın. Bir olay günlüğünden okumak için bu sınıfın kullanılması gerekmez.
Bu sınıf, yeni bir olay kaynağı ve ilişkili olay günlüğü için yapılandırma ayarlarını tanımlar. İlişkili olay günlüğü yerel bilgisayarda veya uzak bilgisayarda olabilir. Yerel bilgisayarda yeni veya var olan bir olay günlüğü için yeni bir kaynak oluşturmak için, öğesinin LogNameEventSourceCreationData ve Source özelliklerini ayarlayın ve yöntemini çağırınEventLog.CreateEventSource(EventSourceCreationData). Bu yöntem özelliğinde Source belirttiğiniz olay kaynağını oluşturur ve içinde LogNamebelirtilen olay günlüğü için kaydeder. Bu davranış, bir olay günlüğüne olay kaynağı kaydetmek için sınıfını EventLogInstaller kullanmaya benzer.
WriteEvent Olay günlüğüne olay yazmak için ve WriteEntry yöntemlerini kullanın. Olayları yazmak için bir olay kaynağı belirtmeniz gerekir; kaynakla ilk girdiyi yazmadan önce olay kaynağını oluşturmanız ve yapılandırmanız gerekir.
Uygulamanızın yüklenmesi sırasında yeni olay kaynağını İçerik Oluşturucu. Bu, işletim sisteminin kayıtlı olay kaynakları listesini ve yapılandırmalarını yenilemesine izin verir. İşletim sistemi olay kaynakları listesini yenilemediyse ve yeni kaynakla bir olay yazmaya çalışırsanız, yazma işlemi başarısız olur. kullanarak veya yöntemini kullanarak CreateEventSource yeni bir EventLogInstallerkaynak yapılandırabilirsiniz. Yeni bir olay kaynağı oluşturmak için bilgisayarda yönetici haklarına sahip olmanız gerekir.
Mevcut bir olay günlüğü veya yeni bir olay günlüğü için olay kaynağı oluşturabilirsiniz. Yeni bir olay günlüğü için yeni bir kaynak oluşturduğunuzda, sistem bu günlük için kaynağı kaydeder, ancak ilk girdi ona yazılana kadar günlük oluşturulmaz.
Her kaynak aynı anda yalnızca bir olay günlüğüne yazabilir; ancak uygulamanız birden çok olay günlüğüne yazmak için birden çok kaynak kullanabilir. Örneğin, uygulamanızın farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynağa ihtiyacı olabilir.
Var olan bir kaynağın yapılandırma ayrıntılarını değiştirmek için kaynağı silmeniz ve ardından yeni yapılandırmayla oluşturmanız gerekir. Diğer uygulamalar veya bileşenler mevcut kaynağı kullanıyorsa, mevcut kaynağı silmek yerine güncelleştirilmiş yapılandırmayla yeni bir kaynak oluşturun.
Olay kaynağınızı, olay kategoriniz ve ileti dizeleriniz için yerelleştirilmiş kaynaklara kaydedebilirsiniz. Uygulamanız gerçek dizeyi belirtmek yerine kaynak tanımlayıcılarını kullanarak olay günlüğü girdileri yazabilir. Olay Görüntüleyicisi, geçerli dil ayarlarına göre yerelleştirilmiş kaynak dosyasından karşılık gelen dizeyi bulmak ve görüntülemek için kaynak tanımlayıcısını kullanır. Olay kategorileri, iletiler ve parametre ekleme dizeleri için ayrı bir dosya kaydedebilir veya aynı kaynak dosyasını üç dize türü için de kaydedebilirsiniz. CategoryCountKaynağı olay günlüğüne yerelleştirilmiş girdiler yazacak şekilde yapılandırmak için , CategoryResourceFile, MessageResourceFileve ParameterResourceFile özelliklerini kullanın. Uygulamanız dize değerlerini doğrudan olay günlüğüne yazıyorsa, bu özellikleri ayarlamanız gerekmez.
Kaynak, yerelleştirilmiş girdiler yazmak veya doğrudan dizeler yazmak için yapılandırılmalıdır. WriteEntry yöntemi verilen dizeyi doğrudan olay günlüğüne yazar; yerelleştirilebilir bir ileti kaynak dosyası kullanmaz. WriteEvent Yerelleştirilmiş bir ileti kaynak dosyası kullanarak olayları yazmak için yöntemini kullanın.
Uygulamanız hem kaynak tanımlayıcılarını hem de dize değerlerini kullanarak girdi yazıyorsa, iki ayrı kaynağı kaydetmeniz gerekir. Örneğin, kaynak dosyalarıyla bir kaynak yapılandırın ve ardından olay günlüğüne kaynak tanımlayıcılarını kullanarak girdi yazmak için yönteminde bu kaynağı WriteEvent kullanın. Ardından kaynak dosyaları olmadan farklı bir kaynak oluşturun ve bu kaynağı WriteEntry kullanarak dizeleri doğrudan olay günlüğüne yazmak için yönteminde kullanın.
Oluşturucular
EventSourceCreationData(String, String) |
Belirtilen olay kaynağı ve olay günlüğü adıyla sınıfının yeni bir örneğini EventSourceCreationData başlatır. |
Özellikler
CategoryCount |
Kategori kaynak dosyasındaki kategori sayısını alır veya ayarlar. |
CategoryResourceFile |
Kaynak için kategori dizelerini içeren kaynak dosyasının yolunu alır veya ayarlar. |
LogName |
Kaynağın girişleri yazdığı olay günlüğünün adını alır veya ayarlar. |
MachineName |
Olay kaynağının kaydedildiği bilgisayarın adını alır veya ayarlar. |
MessageResourceFile |
Kaynak için ileti biçimlendirme dizelerini içeren ileti kaynak dosyasının yolunu alır veya ayarlar. |
ParameterResourceFile |
Kaynak için ileti parametresi dizelerini içeren kaynak dosyasının yolunu alır veya ayarlar. |
Source |
Olay günlüğüyle bir olay kaynağı olarak kaydedilecek adı alır veya ayarlar. |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |