Size: 4145
Comment:
|
Size: 4134
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 14: | Line 14: |
=== Custom Event Classes === | === Classes === |
Line 16: | Line 16: |
There are some pre-defined classes: "Application", "Internet Explorer", "Security", "System". You can define your own class which is also referred to as "Custom Event Log". | There are some pre-defined classes: "Application", "Internet Explorer", "Security", "System". You can define your own class which is also referred to as "Custom Event Class". |
EventLog Class
Overview
This .NET class offers a number of different opportunities to read and write event logs. There are three examples below covering the most frequent cases. Note that there is no example for reading from / writing to a remote event log. However, it should be not a big problem to get this to work if you have proper rights to do so.
The code was prepared with V11 of Dyalog.
Terms to be used
Classes
There are some pre-defined classes: "Application", "Internet Explorer", "Security", "System". You can define your own class which is also referred to as "Custom Event Class".
Application
Within a class or custom event log, you need to define an application, also referred to as "source".
Write to the "Application" Event Log
System∆Diagnostics∆EventLog∆01;Class;Name;myLog;i ⍝ Version 1.0 from 2007-01-01 ⋄ Kai Jaeger ⋄ APL Team Ltd ⍝ Write into the "Application" Event Log as application "ApplName" (⎕ML ⎕IO)←1 ⎕USING←'System.Diagnostics,System.dll' '' Class←'Application' ⍝ maybe "System" or a custom name instead; "Security" is read-only Name←'ApplName' ⍝ Typically the name of the application ⍝ Create an EventLog instance and assign its source. Since "Application" is a standard ⍝ event class (as "System" and "Security") we know it will already exist! myLog←⎕NEW System.Diagnostics.EventLog(⊂Class) myLog.Source←Name ⍝ Write an informational entry to the event log myLog.WriteEntry'First writing to event log from Dyalog'System.Diagnostics.EventLogEntryType.Error ⍝ Instead of using "Name", we can also specify a free name: myLog.WriteEntry'SpecialName' 'Second writing to event log from Dyalog' ⎕←(⍕myLog.Entries.Count),' entries in EventLog "',Name,'"' :For i :In ⍳myLog.Entries.Count ⎕←(⍕i),'. ',{myLog.Entries.(get_Item ⍵).Message}i-1 :EndFor myLog.Close
Read entries from the "System" Event Log
System∆Diagnostics∆EventLog∆02;Class;mySystemLog;i ⍝ Version 1.0 from 2007-01-01 ⋄ Kai Jaeger ⋄ APL Team Ltd ⍝ This time, we try to read the "System" log (⎕ML ⎕IO)←1 ⎕USING←'System.Diagnostics,System.dll' '' Class←'System' ⍝ Create an EventLog instance mySystemLog←⎕NEW System.Diagnostics.EventLog(⊂Class) ⎕←(⍕mySystemLog.Entries.Count),' entries in EventLog "',Class,'"' :For i :In ⍳mySystemLog.Entries.Count ⎕←(⍕i),'. ',{mySystemLog.Entries.(get_Item ⍵).Message}i-1 :EndFor mySystemLog.Close
Write to a custom Event Log
System∆Diagnostics∆EventLog∆03;Class;Name;myCustomLog;i ⍝ Version 1.0 from 2007-01-01 ⋄ Kai Jaeger ⋄ APL Team Ltd ⍝ Write into custom event class "MyCustomLog" as application "ApplName2" (⎕ML ⎕IO)←1 ⎕USING←'System.Diagnostics,System.dll' '' ⍝ Create the source, if it does not already exist (it will) Class←'MyNewLog' Name←'ApplName2' ⍝ This time we cannot be sure about the custom class, so let's check an create if needed: :If ~System.Diagnostics.EventLog.SourceExists⊂Name System.Diagnostics.EventLog.CreateEventSource Name Class :EndIf ⍝ Create an EventLog instance and assign its source myCustomLog←⎕NEW System.Diagnostics.EventLog(⊂Class) myCustomLog.Source←Name ⍝ Write an informational entry to the event log myCustomLog.WriteEntry'First writing to custom event log from Dyalog'System.Diagnostics.EventLogEntryType.Error ⍝ Instead of using "Name", we can also specify a free name: myCustomLog.WriteEntry'SpecialName' 'Second writing to custom event log from Dyalog' ⎕←(⍕myCustomLog.Entries.Count),' entries in EventLog "',Name,'" of class "',Class,'"' :For i :In ⍳myCustomLog.Entries.Count ⎕←(⍕i),'. ',{myCustomLog.Entries.(get_Item ⍵).Message}i-1 :EndFor myCustomLog.Delete⊂Class myCustomLog.Close
Author: KaiJaeger