EventLog.CreateEventSource Yöntem
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.
Sistemdeki belirli bir günlüğe olay bilgileri yazabilecek bir uygulama oluşturur.
Aşırı Yüklemeler
CreateEventSource(EventSourceCreationData) |
Olay kaynağı ve ilgili olay günlüğü için belirtilen yapılandırma özelliklerini kullanarak yerelleştirilmiş olay iletileri yazmak için geçerli bir olay kaynağı oluşturur. |
CreateEventSource(String, String) |
Belirtilen kaynak adını, yerel bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, yerel bilgisayarda yeni bir özel günlük de oluşturabilir. |
CreateEventSource(String, String, String) |
Geçersiz.
Geçersiz.
Geçersiz.
Belirtilen kaynak adını, belirtilen bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, belirtilen bilgisayarda yeni bir özel günlük oluşturmak için de kullanılabilir. |
CreateEventSource(EventSourceCreationData)
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
Olay kaynağı ve ilgili olay günlüğü için belirtilen yapılandırma özelliklerini kullanarak yerelleştirilmiş olay iletileri yazmak için geçerli bir olay kaynağı oluşturur.
public:
static void CreateEventSource(System::Diagnostics::EventSourceCreationData ^ sourceData);
public static void CreateEventSource (System.Diagnostics.EventSourceCreationData sourceData);
static member CreateEventSource : System.Diagnostics.EventSourceCreationData -> unit
Public Shared Sub CreateEventSource (sourceData As EventSourceCreationData)
Parametreler
- sourceData
- EventSourceCreationData
Olay kaynağının ve hedef olay günlüğünün yapılandırma özellikleri.
Özel durumlar
sourceData
'de belirtilen bilgisayar adı geçerli değil.
-veya-
sourceData
'de belirtilen kaynak adı null
.
-veya-
sourceData
'de belirtilen günlük adı geçerli değil. Olay günlüğü adları yazdırılabilir karakterlerden oluşmalıdır ve '*', '?' veya '\' karakterlerini içeremez.
-veya-
sourceData
'de belirtilen günlük adı, kullanıcı günlüğü oluşturma için geçerli değil. AppEvent, SysEvent ve SecEvent olay günlüğü adları sistem kullanımı için ayrılmıştır.
-veya-
Günlük adı var olan bir olay kaynağı adıyla eşleşir.
-veya-
sourceData
'de belirtilen kaynak adı, kayıt defteri anahtarı yolunun 254 karakterden uzun olmasına neden olur.
-veya-
sourceData
belirtilen günlük adının ilk 8 karakteri benzersiz değildir.
-veya-
sourceData
'de belirtilen kaynak adı zaten kayıtlı.
-veya-
sourceData
'de belirtilen kaynak adı, var olan bir olay günlüğü adıyla eşleşir.
Olay günlüğünün kayıt defteri anahtarı açılamadı.
sourceData
null
.
Örnekler
Aşağıdaki örnek, SampleApplicationSource
adlı olay kaynağının yerel bilgisayarda kayıtlı olup olmadığını belirler. Olay kaynağı yoksa, örnek kaynak için ileti kaynak dosyasını ayarlar ve yeni olay kaynağını oluşturur. Son olarak örnek, DisplayNameMsgId
kaynak tanımlayıcısı değerini ve messageFile
kaynak dosyası yolunu kullanarak olay günlüğü için yerelleştirilmiş görünen adı ayarlar.
void CreateEventSourceSample1( String^ messageFile )
{
String^ myLogName;
String^ sourceName = "SampleApplicationSource";
// Create the event source if it does not exist.
if ( !EventLog::SourceExists( sourceName ) )
{
// Create a new event source for the custom event log
// named "myNewLog."
myLogName = "myNewLog";
EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( sourceName,myLogName );
// Set the message resource file that the event source references.
// All event resource identifiers correspond to text in this file.
if ( !System::IO::File::Exists( messageFile ) )
{
Console::WriteLine( "Input message resource file does not exist - {0}", messageFile );
messageFile = "";
}
else
{
// Set the specified file as the resource
// file for message text, category text, and
// message parameter strings.
mySourceData->MessageResourceFile = messageFile;
mySourceData->CategoryResourceFile = messageFile;
mySourceData->CategoryCount = CategoryCount;
mySourceData->ParameterResourceFile = messageFile;
Console::WriteLine( "Event source message resource file set to {0}", messageFile );
}
Console::WriteLine( "Registering new source for event log." );
EventLog::CreateEventSource( mySourceData );
}
else
{
// Get the event log corresponding to the existing source.
myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
}
// Register the localized name of the event log.
// For example, the actual name of the event log is "myNewLog," but
// the event log name displayed in the Event Viewer might be
// "Sample Application Log" or some other application-specific
// text.
EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );
if ( messageFile->Length > 0 )
{
myEventLog->RegisterDisplayName( messageFile, DisplayNameMsgId );
}
}
static void CreateEventSourceSample1(string messageFile)
{
string myLogName;
string sourceName = "SampleApplicationSource";
// Create the event source if it does not exist.
if(!EventLog.SourceExists(sourceName))
{
// Create a new event source for the custom event log
// named "myNewLog."
myLogName = "myNewLog";
EventSourceCreationData mySourceData = new EventSourceCreationData(sourceName, myLogName);
// Set the message resource file that the event source references.
// All event resource identifiers correspond to text in this file.
if (!System.IO.File.Exists(messageFile))
{
Console.WriteLine("Input message resource file does not exist - {0}",
messageFile);
messageFile = "";
}
else
{
// Set the specified file as the resource
// file for message text, category text, and
// message parameter strings.
mySourceData.MessageResourceFile = messageFile;
mySourceData.CategoryResourceFile = messageFile;
mySourceData.CategoryCount = CategoryCount;
mySourceData.ParameterResourceFile = messageFile;
Console.WriteLine("Event source message resource file set to {0}",
messageFile);
}
Console.WriteLine("Registering new source for event log.");
EventLog.CreateEventSource(mySourceData);
}
else
{
// Get the event log corresponding to the existing source.
myLogName = EventLog.LogNameFromSourceName(sourceName,".");
}
// Register the localized name of the event log.
// For example, the actual name of the event log is "myNewLog," but
// the event log name displayed in the Event Viewer might be
// "Sample Application Log" or some other application-specific
// text.
EventLog myEventLog = new EventLog(myLogName, ".", sourceName);
if (messageFile.Length > 0)
{
myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId);
}
}
Public Shared Sub CreateEventSourceSample1(ByVal messageFile As String)
Dim myLogName As String
Dim sourceName As String = "SampleApplicationSource"
' Create the event source if it does not exist.
If Not EventLog.SourceExists(sourceName)
' Create a new event source for the custom event log
' named "myNewLog."
myLogName = "myNewLog"
Dim mySourceData As EventSourceCreationData = New EventSourceCreationData(sourceName, myLogName)
' Set the message resource file that the event source references.
' All event resource identifiers correspond to text in this file.
If Not System.IO.File.Exists(messageFile)
Console.WriteLine("Input message resource file does not exist - {0}", _
messageFile)
messageFile = ""
Else
' Set the specified file as the resource
' file for message text, category text and
' message parameters strings.
mySourceData.MessageResourceFile = messageFile
mySourceData.CategoryResourceFile = messageFile
mySourceData.CategoryCount = CategoryCount
mySourceData.ParameterResourceFile = messageFile
Console.WriteLine("Event source message resource file set to {0}", _
messageFile)
End If
Console.WriteLine("Registering new source for event log.")
EventLog.CreateEventSource(mySourceData)
Else
' Get the event log corresponding to the existing source.
myLogName = EventLog.LogNameFromSourceName(sourceName,".")
End If
' Register the localized name of the event log.
' For example, the actual name of the event log is "myNewLog," but
' the event log name displayed in the Event Viewer might be
' "Sample Application Log" or some other application-specific
' text.
Dim myEventLog As EventLog = New EventLog(myLogName, ".", sourceName)
If messageFile.Length > 0
myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId)
End If
End Sub
Örnek, EventLogMsgs.dllkaynak kitaplığında yerleşik olarak bulunan aşağıdaki ileti metin dosyasını kullanır. İleti metin dosyası, ileti kaynak dosyasının oluşturulduğu kaynaktır. İleti metin dosyası kategori, olay iletisi ve parametre ekleme dizeleri için kaynak tanımlayıcılarını ve metni tanımlar. Özellikle, olay günlüğünün yerelleştirilmiş adı için 5001 kaynak tanımlayıcısı tanımlanır.
; // EventLogMsgs.mc
; // ********************************************************
; // Use the following commands to build this file:
; // mc -s EventLogMsgs.mc
; // rc EventLogMsgs.rc
; // link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res
; // ********************************************************
; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************
MessageId=0x1
Severity=Success
SymbolicName=INSTALL_CATEGORY
Language=English
Installation
.
MessageId=0x2
Severity=Success
SymbolicName=QUERY_CATEGORY
Language=English
Database Query
.
MessageId=0x3
Severity=Success
SymbolicName=REFRESH_CATEGORY
Language=English
Data Refresh
.
; // - Event messages -
; // *********************************
MessageId = 1000
Severity = Success
Facility = Application
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000
Language=English
My application message text, in English, for message id 1000, called from %1.
.
MessageId = 1001
Severity = Warning
Facility = Application
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001
Language=English
My application message text, in English, for message id 1001, called from %1.
.
MessageId = 1002
Severity = Success
Facility = Application
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002
Language=English
My generic information message in English, for message id 1002.
.
MessageId = 1003
Severity = Warning
Facility = Application
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003
Language=English
My generic warning message in English, for message id 1003, called from %1.
.
MessageId = 1004
Severity = Success
Facility = Application
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004
Language=English
The update cycle is complete for %%5002.
.
MessageId = 1005
Severity = Warning
Facility = Application
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005
Language=English
The refresh operation did not complete because the connection to server %1 could not be established.
.
; // - Event log display name -
; // ********************************************************
MessageId = 5001
Severity = Success
Facility = Application
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID
Language=English
Sample Event Log
.
; // - Event message parameters -
; // Language independent insertion strings
; // ********************************************************
MessageId = 5002
Severity = Success
Facility = Application
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID
Language=English
SVC_UPDATE.EXE
.
Açıklamalar
Yerel bilgisayardaki veya uzak bilgisayardaki bir olay günlüğüne girdi yazmak üzere yeni bir kaynak yapılandırmak için bu aşırı yüklemeyi kullanın. Bir olay günlüğünden okumak için bu yöntemin kullanılması gerekmez.
CreateEventSource yöntemi, yeni kaynak ve ilişkili olay günlüğü için hedef bilgisayarda kayıt defteri değerleri oluşturmak üzere sourceData
Source, LogName ve MachineName özelliklerini kullanır. Yeni bir kaynak adı, hedef bilgisayardaki mevcut bir kaynak adı veya var olan bir olay günlüğü adıyla eşleşemez.
LogName özelliği ayarlanmadıysa, kaynak Uygulama olay günlüğü için kaydedilir.
MachineName ayarlanmadıysa, kaynak yerel bilgisayara kaydedilir.
Not
Windows Vista ve sonraki sürümlerde veya Windows Server 2003'te olay kaynağı oluşturmak için yönetici ayrıcalıklarına sahip olmanız gerekir.
Bu gereksinimin nedeni, güvenlik de dahil olmak üzere tüm olay günlüklerinin, olay kaynağının benzersiz olup olmadığını belirlemek için aranması gerektiğidir. Windows Vista'dan başlayarak kullanıcıların güvenlik günlüğüne erişme izni yoktur; bu nedenle, bir SecurityException oluşturulur.
Windows Vista'dan başlayarak Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun üyesiyseniz, size iki çalışma zamanı erişim belirteci atanır: standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolündesiniz. Güvenlik günlüğüne erişen kodu yürütmek için öncelikle ayrıcalıklarınızı standart kullanıcıdan yöneticiye yükseltmeniz gerekir. Uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek uygulamayı başlattığınızda bunu yapabilirsiniz.
Olay günlüğüne olay yazmak için WriteEvent ve WriteEntry kullanın. Olayları yazmak için bir olay kaynağı belirtmeniz gerekir; kaynakla ilk girdiyi yazmadan önce olay kaynağını oluşturup yapılandırmanız gerekir.
Uygulamanızın yüklenmesi sırasında yeni olay kaynağını oluşturun. Bu, işletim sisteminin kayıtlı olay kaynakları listesini ve bunların yapılandırması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. EventLogInstallerkullanarak veya CreateEventSource yöntemini kullanarak yeni bir kaynak 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 olay günlüğü için bir 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.
İşletim sistemi olay günlüklerini dosya olarak depolar. yeni bir olay günlüğü oluşturmak için EventLogInstaller veya CreateEventSource kullandığınızda, ilişkili dosya belirtilen bilgisayardaki %SystemRoot%\System32\Config dizininde depolanır. Dosya adı, Log özelliğinin ilk 8 karakteri ".evt" dosya adı uzantısıyla eklenerek ayarlanır.
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 farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynak gerektirebilir.
Olay kategoriniz ve ileti dizeleriniz için olay kaynağını yerelleştirilmiş kaynak dosyalarına 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ındaki ilgili 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. Kaynağı olay günlüğüne yerelleştirilmiş girdiler yazacak şekilde yapılandırmak için CategoryCount, 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. Uygulamanız hem kaynak tanımlayıcılarını hem de dize değerlerini kullanarak girdi yazıyorsa, iki ayrı kaynak kaydetmeniz gerekir. Örneğin, kaynak dosyalarıyla bir kaynak yapılandırın ve ardından WriteEvent yönteminde bu kaynağı kullanarak olay günlüğüne kaynak tanımlayıcılarını kullanarak girdiler yazın. Ardından kaynak dosyaları olmadan farklı bir kaynak oluşturun ve bu kaynağı kullanarak doğrudan olay günlüğüne dize yazmak için WriteEntry yönteminde kullanın.
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.
Not
Bir kaynak bir olay günlüğü için yapılandırılmışsa ve bunu başka bir olay günlüğü için yeniden yapılandırdıysanız, değişikliklerin etkili olması için bilgisayarı yeniden başlatmanız gerekir.
Ayrıca bkz.
Şunlara uygulanır
CreateEventSource(String, String)
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
Belirtilen kaynak adını, yerel bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, yerel bilgisayarda yeni bir özel günlük de oluşturabilir.
public:
static void CreateEventSource(System::String ^ source, System::String ^ logName);
public static void CreateEventSource (string source, string logName);
static member CreateEventSource : string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String)
Parametreler
- source
- String
Uygulamanın yerel bilgisayarda kayıtlı olduğu kaynak adı.
- logName
- String
Kaynağın girdilerinin yazıldık günlüğün adı. Olası değerler Uygulama, Sistem veya özel bir olay günlüğüdür.
Özel durumlar
source
boş bir dize ("") veya null
.
-veya-
logName
geçerli bir olay günlüğü adı değil. Olay günlüğü adları yazdırılabilir karakterlerden oluşmalıdır ve '*', '?' veya '\' karakterlerini içeremez.
-veya-
logName
kullanıcı günlüğü oluşturma için geçerli değil. AppEvent, SysEvent ve SecEvent olay günlüğü adları sistem kullanımı için ayrılmıştır.
-veya-
Günlük adı var olan bir olay kaynağı adıyla eşleşir.
-veya-
Kaynak adı, kayıt defteri anahtarı yolunun 254 karakterden uzun olmasına neden olur.
-veya-
logName
'in ilk 8 karakteri, mevcut olay günlüğü adının ilk 8 karakteriyle eşleşer.
-veya-
Kaynak yerel bilgisayarda zaten var olduğundan kaydedilemiyor.
-veya-
Kaynak ad, var olan bir olay günlüğü adıyla eşleşir.
Olay günlüğünün kayıt defteri anahtarı yerel bilgisayarda açılamadı.
Örnekler
Aşağıdaki örnek, henüz yoksa kaynak MySource
oluşturur ve MyNewLog
olay günlüğüne bir girdi yazar.
#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" ) )
{
//An event log source should not be created and immediately used.
//There is a latency time to enable the source, it should be created
//prior to executing the application that uses the source.
//Execute this sample a second time to use the new source.
EventLog::CreateEventSource( "MySource", "MyNewLog" );
Console::WriteLine( "CreatingEventSource" );
// The source is created. Exit the application to allow it to be registered.
return 0;
}
// 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." );
}
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"))
{
//An event log source should not be created and immediately used.
//There is a latency time to enable the source, it should be created
//prior to executing the application that uses the source.
//Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog");
Console.WriteLine("CreatedEventSource");
Console.WriteLine("Exiting, execute the application a second time to use the source.");
// The source is created. Exit the application to allow it to be registered.
return;
}
// 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.");
}
}
Option Explicit
Option Strict
Imports System.Diagnostics
Imports System.Threading
Class MySample
Public Shared Sub Main()
If Not EventLog.SourceExists("MySource") Then
' Create the source, if it does not already exist.
' An event log source should not be created and immediately used.
' There is a latency time to enable the source, it should be created
' prior to executing the application that uses the source.
' Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog")
Console.WriteLine("CreatingEventSource")
'The source is created. Exit the application to allow it to be registered.
Return
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.")
End Sub
End Class
Açıklamalar
Özel bir günlük oluşturmak veya yerel bilgisayardaki mevcut bir günlükte Source oluşturup kaydetmek için bu aşırı yüklemeyi kullanın.
CreateEventSourceçağırdığınızda logName
null
veya boş bir dize ("") ise, günlük varsayılan olarak Uygulama günlüğü olur. Günlük yerel bilgisayarda yoksa, sistem özel bir günlük oluşturur ve uygulamanızı bu günlük için bir Source olarak kaydeder.
Not
Windows Vista ve sonraki sürümlerde veya Windows Server 2003'te olay kaynağı oluşturmak için yönetici ayrıcalıklarına sahip olmanız gerekir.
Bu gereksinimin nedeni, güvenlik de dahil olmak üzere tüm olay günlüklerinin, olay kaynağının benzersiz olup olmadığını belirlemek için aranması gerektiğidir. Windows Vista'dan başlayarak kullanıcıların güvenlik günlüğüne erişme izni yoktur; bu nedenle, bir SecurityException oluşturulur.
Windows Vista ve sonraki sürümlerde Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun üyesiyseniz, size iki çalışma zamanı erişim belirteci atanır: standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolündesiniz. Güvenlik günlüğüne erişen kodu yürütmek için öncelikle ayrıcalıklarınızı standart kullanıcıdan yöneticiye yükseltmeniz gerekir. Uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek uygulamayı başlattığınızda bunu yapabilirsiniz.
Yalnızca olay günlüğüne yazıyorsanız bir olay kaynağı oluşturmanız gerekir. Bir olay günlüğüne giriş yazmadan önce, olay kaynağını olay günlüğüne geçerli bir olay kaynağı olarak kaydetmeniz gerekir. Bir günlük girdisi yazdığınızda, sistem girişinizin yerleştirildiği uygun günlüğü bulmak için Source kullanır. Olay günlüğünü okuyorsanız, Sourceveya bir Log ve MachineNamebelirtebilirsiniz.
Not
Yerel bilgisayardaki bir günlüğe bağlanıyorsanız MachineName belirtmeniz gerekmez. Günlükten okurken MachineName belirtmezseniz, yerel bilgisayar (".") varsayılır.
Olay günlüğüne olay yazmak için WriteEvent ve WriteEntry kullanın. Olayları yazmak için bir olay kaynağı belirtmeniz gerekir; kaynakla ilk girdiyi yazmadan önce olay kaynağını oluşturup yapılandırmanız gerekir.
Uygulamanızın yüklenmesi sırasında yeni olay kaynağını oluşturun. Bu, işletim sisteminin kayıtlı olay kaynakları listesini ve bunların yapılandırması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. EventLogInstallerkullanarak veya CreateEventSource yöntemini kullanarak yeni bir kaynak 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 olay günlüğü için bir 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.
İşletim sistemi olay günlüklerini dosya olarak depolar. yeni bir olay günlüğü oluşturmak için EventLogInstaller veya CreateEventSource kullandığınızda, ilişkili dosya belirtilen bilgisayardaki %SystemRoot%\System32\Config dizininde depolanır. Dosya adı, Log özelliğinin ilk 8 karakteri ".evt" dosya adı uzantısıyla eklenerek ayarlanır.
Kaynak yerel bilgisayarda benzersiz olmalıdır; yeni bir kaynak adı, var olan bir kaynak adı veya var olan bir olay günlüğü adıyla eşleşemez. 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 farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynak gerektirebilir.
Kaynak, yerelleştirilmiş girdiler yazmak veya doğrudan dizeler yazmak için yapılandırılmalıdır. Uygulamanız hem kaynak tanımlayıcılarını hem de dize değerlerini kullanarak girdi yazıyorsa, iki ayrı kaynak kaydetmeniz gerekir. Örneğin, kaynak dosyalarıyla bir kaynak yapılandırın ve ardından WriteEvent yönteminde bu kaynağı kullanarak olay günlüğüne kaynak tanımlayıcılarını kullanarak girdiler yazın. Ardından kaynak dosyaları olmadan farklı bir kaynak oluşturun ve bu kaynağı kullanarak doğrudan olay günlüğüne dize yazmak için WriteEntry yönteminde kullanın.
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.
Not
Bir kaynak zaten bir günlüğe eşlenmişse ve bunu yeni bir günlükle yeniden eşlerseniz, değişikliklerin etkili olması için bilgisayarı yeniden başlatmanız gerekir.
Ayrıca bkz.
Şunlara uygulanır
CreateEventSource(String, String, String)
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
- Kaynak:
- EventLog.cs
Dikkat
EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.
Dikkat
This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202
Dikkat
This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202
Belirtilen kaynak adını, belirtilen bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, belirtilen bilgisayarda yeni bir özel günlük oluşturmak için de kullanılabilir.
public:
static void CreateEventSource(System::String ^ source, System::String ^ logName, System::String ^ machineName);
[System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")]
public static void CreateEventSource (string source, string logName, string machineName);
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[<System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)
Parametreler
- source
- String
Uygulamanın belirtilen bilgisayarda kaydedildiği kaynak.
- logName
- String
Kaynağın girdilerinin yazıldık günlüğün adı. Olası değerler Uygulama, Sistem veya özel bir olay günlüğüdür. Bir değer belirtmezseniz, varsayılan olarak Uygulama logName
.
- machineName
- String
Bu olay kaynağının kaydedilecek bilgisayarın adı veya yerel bilgisayar için "."
- Öznitelikler
Özel durumlar
machineName
geçerli bir bilgisayar adı değil.
-veya-
source
boş bir dize ("") veya null
.
-veya-
logName
geçerli bir olay günlüğü adı değil. Olay günlüğü adları yazdırılabilir karakterlerden oluşmalıdır ve '*', '?' veya '\' karakterlerini içeremez.
-veya-
logName
kullanıcı günlüğü oluşturma için geçerli değil. AppEvent, SysEvent ve SecEvent olay günlüğü adları sistem kullanımı için ayrılmıştır.
-veya-
Günlük adı var olan bir olay kaynağı adıyla eşleşir.
-veya-
Kaynak adı, kayıt defteri anahtarı yolunun 254 karakterden uzun olmasına neden olur.
-veya-
logName
'in ilk 8 karakteri, belirtilen bilgisayardaki mevcut bir olay günlüğü adının ilk 8 karakteriyle eşleşebilir.
-veya-
Belirtilen bilgisayarda zaten var olduğundan kaynak kaydedilemiyor.
-veya-
Kaynak adı, var olan bir olay kaynağı adıyla eşleşir.
Olay günlüğünün kayıt defteri anahtarı belirtilen bilgisayarda açılamadı.
Örnekler
Aşağıdaki örnek, MyServer
bilgisayarda kaynak MySource
oluşturur ve MyNewLog
olay günlüğüne bir girdi yazar.
#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", "MyServer" ) )
{
EventLog::CreateEventSource( "MySource", "MyNewLog", "MyServer" );
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." );
}
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", "MyServer"))
{
// An event log source should not be created and immediately used.
// There is a latency time to enable the source, it should be created
// prior to executing the application that uses the source.
// Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer");
Console.WriteLine("CreatingEventSource");
Console.WriteLine("Exiting, execute the application a second time to use the source.");
// The source is created. Exit the application to allow it to be registered.
return;
}
// 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.");
}
}
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", "MyServer") Then
EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer")
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
End Class
Açıklamalar
Özel bir günlük oluşturmak veya belirtilen bilgisayarda var olan bir günlükte Source oluşturup kaydetmek için bu aşırı yüklemeyi kullanın.
CreateEventSourceçağırdığınızda logName
null
veya boş bir dize ("") ise, günlük varsayılan olarak Uygulama günlüğü olur. Günlük belirtilen bilgisayarda yoksa, sistem özel bir günlük oluşturur ve uygulamanızı bu günlük için bir Source olarak kaydeder.
Yalnızca olay günlüğüne yazıyorsanız bir olay kaynağı oluşturmanız gerekir. Bir olay günlüğüne giriş yazmadan önce, olay kaynağını olay günlüğüne geçerli bir olay kaynağı olarak kaydetmeniz gerekir. Bir günlük girdisi yazdığınızda, sistem girişinizin yerleştirildiği uygun günlüğü bulmak için Source kullanır. Olay günlüğünü okuyorsanız, Sourceveya bir Log ve MachineNamebelirtebilirsiniz.
Not
Windows Vista ve sonraki sürümlerde veya Windows Server 2003'te olay kaynağı oluşturmak için yönetici ayrıcalıklarına sahip olmanız gerekir.
Bu gereksinimin nedeni, güvenlik de dahil olmak üzere tüm olay günlüklerinin, olay kaynağının benzersiz olup olmadığını belirlemek için aranması gerektiğidir. Windows Vista ve sonraki sürümlerde kullanıcıların güvenlik günlüğüne erişim izni yoktur; bu nedenle, bir SecurityException oluşturulur.
Windows Vista ve sonraki sürümlerde Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun üyesiyseniz, size iki çalışma zamanı erişim belirteci atanır: standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolündesiniz. Güvenlik günlüğüne erişen kodu yürütmek için öncelikle ayrıcalıklarınızı standart kullanıcıdan yöneticiye yükseltmeniz gerekir. Uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek uygulamayı başlattığınızda bunu yapabilirsiniz.
Olay günlüğüne olay yazmak için WriteEvent ve WriteEntry kullanın. Olayları yazmak için bir olay kaynağı belirtmeniz gerekir; kaynakla ilk girdiyi yazmadan önce olay kaynağını oluşturup yapılandırmanız gerekir.
Uygulamanızın yüklenmesi sırasında yeni olay kaynağını oluşturun. Bu, işletim sisteminin kayıtlı olay kaynakları listesini ve bunların yapılandırması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. EventLogInstallerkullanarak veya CreateEventSource yöntemini kullanarak yeni bir kaynak 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 olay günlüğü için bir 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.
İşletim sistemi olay günlüklerini dosya olarak depolar. yeni bir olay günlüğü oluşturmak için EventLogInstaller veya CreateEventSource kullandığınızda, ilişkili dosya belirtilen bilgisayardaki %SystemRoot%\System32\Config dizininde depolanır. Dosya adı, Log özelliğinin ilk 8 karakteri ".evt" dosya adı uzantısıyla eklenerek ayarlanır.
Kaynak yerel bilgisayarda benzersiz olmalıdır; yeni bir kaynak adı, var olan bir kaynak adı veya var olan bir olay günlüğü adıyla eşleşemez. 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 farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynak gerektirebilir.
Kaynak, yerelleştirilmiş girdiler yazmak veya doğrudan dizeler yazmak için yapılandırılmalıdır. Uygulamanız hem kaynak tanımlayıcılarını hem de dize değerlerini kullanarak girdi yazıyorsa, iki ayrı kaynak kaydetmeniz gerekir. Örneğin, kaynak dosyalarıyla bir kaynak yapılandırın ve ardından WriteEvent yönteminde bu kaynağı kullanarak olay günlüğüne kaynak tanımlayıcılarını kullanarak girdiler yazın. Ardından kaynak dosyaları olmadan farklı bir kaynak oluşturun ve bu kaynağı kullanarak doğrudan olay günlüğüne dize yazmak için WriteEntry yönteminde kullanın.
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.
Not
Bir kaynak zaten bir günlüğe eşlenmişse ve bunu yeni bir günlükle yeniden eşlerseniz, değişikliklerin etkili olması için bilgisayarı yeniden başlatmanız gerekir.