1 //
2 // System.Diagnostics.EventLogEntry.cs
3 //
4 // Authors:
5 //   Jonathan Pryor (jonpryor@vt.edu)
6 //   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //
8 // (C) 2002
9 // (C) 2003 Andreas Nahr
10 //
11 
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
20 //
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
23 //
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 //
32 
33 using System.ComponentModel;
34 using System.Runtime.InteropServices;
35 using System.Runtime.Serialization;
36 using System.Security.Permissions;
37 
38 namespace System.Diagnostics
39 {
40 
41 	[Serializable]
42 	[ToolboxItem (false), DesignTimeVisible (false)]
43 	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
44 	public sealed class EventLogEntry : Component, ISerializable
45 	{
46 
47 		private string category;
48 		private short categoryNumber;
49 		private byte[] data;
50 		private EventLogEntryType entryType;
51 		private int eventID;
52 		private int index;
53 		private string machineName;
54 		private string message;
55 		private string[] replacementStrings;
56 		private string source;
57 		private DateTime timeGenerated;
58 		private DateTime timeWritten;
59 		private string userName;
60 		private long instanceId;
61 
EventLogEntry(string category, short categoryNumber, int index, int eventID, string source, string message, string userName, string machineName, EventLogEntryType entryType, DateTime timeGenerated, DateTime timeWritten, byte[] data, string[] replacementStrings, long instanceId)62 		internal EventLogEntry (string category, short categoryNumber, int index,
63 					int eventID, string source, string message, string userName,
64 					string machineName, EventLogEntryType entryType,
65 					DateTime timeGenerated, DateTime timeWritten, byte[] data,
66 					string[] replacementStrings, long instanceId)
67 		{
68 			this.category = category;
69 			this.categoryNumber = categoryNumber;
70 			this.data = data;
71 			this.entryType = entryType;
72 			this.eventID = eventID;
73 			this.index = index;
74 			this.machineName = machineName;
75 			this.message = message;
76 			this.replacementStrings = replacementStrings;
77 			this.source = source;
78 			this.timeGenerated = timeGenerated;
79 			this.timeWritten = timeWritten;
80 			this.userName = userName;
81 			this.instanceId = instanceId;
82 		}
83 
84 		[MonoTODO]
EventLogEntry(SerializationInfo info, StreamingContext context)85 		private EventLogEntry (SerializationInfo info, StreamingContext context)
86 		{
87 		}
88 
89 		[MonitoringDescription ("The category of this event entry.")]
90 		public string Category {
91 			get { return category; }
92 		}
93 
94 		[MonitoringDescription ("An ID for the category of this event entry.")]
95 		public short CategoryNumber {
96 			get { return categoryNumber; }
97 		}
98 
99 		[MonitoringDescription ("Binary data associated with this event entry.")]
100 		public byte[] Data {
101 			get { return data; }
102 		}
103 
104 		[MonitoringDescription ("The type of this event entry.")]
105 		public EventLogEntryType EntryType {
106 			get { return entryType; }
107 		}
108 
109 		[Obsolete ("Use InstanceId")]
110 		[MonitoringDescription ("An ID number for this event entry.")]
111 		public int EventID {
112 			get { return eventID; }
113 		}
114 
115 		[MonitoringDescription ("Sequence numer of this event entry.")]
116 		public int Index {
117 			get { return index; }
118 		}
119 
120 		[ComVisible (false)]
121 		[MonitoringDescription ("The instance ID for this event entry.")]
122 		public long InstanceId {
123 			get { return instanceId; }
124 		}
125 
126 		[MonitoringDescription ("The Computer on which this event entry occured.")]
127 		public string MachineName {
128 			get { return machineName; }
129 		}
130 
131 		[Editor ("System.ComponentModel.Design.BinaryEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
132 		[MonitoringDescription ("The message of this event entry.")]
133 		public string Message {
134 			get { return message; }
135 		}
136 
137 		[MonitoringDescription ("Application strings for this event entry.")]
138 		public string[] ReplacementStrings {
139 			get { return replacementStrings; }
140 		}
141 
142 		[MonitoringDescription ("The source application of this event entry.")]
143 		public string Source {
144 			get { return source; }
145 		}
146 
147 		[MonitoringDescription ("Generation time of this event entry.")]
148 		public DateTime TimeGenerated {
149 			get { return timeGenerated; }
150 		}
151 
152 		[MonitoringDescription ("The time at which this event entry was written to the logfile.")]
153 		public DateTime TimeWritten {
154 			get { return timeWritten; }
155 		}
156 
157 		[MonitoringDescription ("The name of a user associated with this event entry.")]
158 		public string UserName {
159 			get { return userName; }
160 		}
161 
Equals(EventLogEntry otherEntry)162 		public bool Equals (EventLogEntry otherEntry)
163 		{
164 			if (otherEntry == this)
165 				return true;
166 
167 			return (
168 				(otherEntry.Category == category) &&
169 				(otherEntry.CategoryNumber == categoryNumber) &&
170 				(otherEntry.Data.Equals (data)) &&
171 				(otherEntry.EntryType == entryType) &&
172 				(otherEntry.InstanceId == instanceId) &&
173 				(otherEntry.Index == index) &&
174 				(otherEntry.MachineName == machineName) &&
175 				(otherEntry.Message == message) &&
176 				(otherEntry.ReplacementStrings.Equals (replacementStrings)) &&
177 				(otherEntry.Source == source) &&
178 				(otherEntry.TimeGenerated.Equals (timeGenerated)) &&
179 				(otherEntry.TimeWritten.Equals (timeWritten)) &&
180 				(otherEntry.UserName == userName)
181 				);
182 		}
183 
184 		[MonoTODO ("Needs serialization support")]
ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)185 		void ISerializable.GetObjectData (SerializationInfo info,
186 			StreamingContext context)
187 		{
188 			throw new NotImplementedException ();
189 		}
190 	}
191 }
192 
193