Sunday 24 December 2017

c# - How do I get the int value from the EventLogEntryType enum





I am trying to get the numerical code from the
EventLogEntryType enum type. I have a generic log method that
will take this in addition to the message and write a windows event log before calling
my database to log it there as well. Before I send the log level to the database, I am
attempting to retrieve the numerical code for the log level so that I can sort these
messages in the table by severity.



Unfortunately
this has proven much more difficult than I had hoped. The following is my generic log
method:



public static void
MyGenericLogMessageMethod(string message, EventLogEntryType logLevel)

{
// Overwriting values for illustrative purposes
logLevel =
EventLogEntryType.Warning;
int logLevelCode =
(int)logLevel.GetTypeCode();
string testMessage = "Converted logLevel to
logLevelCode [" + logLevelCode.ToString() + "]";

eventLog.WriteEntry(testMessage, logLevel);

//dssDatabaseDAO.LogMessage(message, logLevelCode);

}


And the output is,
strangely enough:





Converted logLevel to logLevelCode
[9]




If you take a
look at the EventLogEntryType enum class, the value for Warning
is 2, not 9:



namespace
System.Diagnostics
{
//
// Summary:
//
Specifies the event type of an event log entry.
public enum
EventLogEntryType
{
//
// Summary:
// An
error event. This indicates a significant problem the user should know about;

// usually a loss of functionality or data.
Error = 1,

//
// Summary:
// A warning event. This indicates a problem that
is not immediately significant,
// but that may signify conditions that could
cause future problems.
Warning = 2,
//
//
Summary:
// An information event. This indicates a significant, successful
operation.
Information = 4,
//
// Summary:

// A success audit event. This indicates a security event that occurs when an
audited
// access attempt is successful; for example, logging on
successfully.
SuccessAudit = 8,
//
//
Summary:
// A failure audit event. This indicates a security event that
occurs when an audited
// access attempt fails; for example, a failed attempt
to open a file.
FailureAudit = 16

}
}


Now, I
could go into a diatribe about how much easier and straightforward this would be in Java
but I won't because I know I'd be wrong. That is, there has to be a better or more
correct way of retrieving the code values that I am not aware of. I've looked over the
documentation but I'm either missing the relevant portion or not understanding
something.



Can someone please point me in the
right direction?



Thank you!



Answer




You just want
(int)logLevel - that is, you cast the logLevel to an int.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...