Size: 3711
Comment:
|
Size: 3694
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 92: | Line 92: |
CategoryDyalog | CategoryDyalogDotNetSamples | CategoryDyalogDotNetSamples |
EventLog Class
Overview
This 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.
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 custome 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←'MyCustomLog' 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