// Generates a log message. If its switch (or a parent switch) allows the
// level for the message, it is "broadcast" to all of the log
// devices.
//
/// <include file='doc\log.uex' path='docs/doc[@for="Log.LogMessage1"]/*' />
public static void LogMessage(LoggingLevels level, LogSwitch logswitch, String message)
{
if (logswitch == null)
{
throw new ArgumentNullException("LogSwitch");
}
if (level < 0)
{
throw new ArgumentOutOfRangeException("level", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
}
// Is logging for this level for this switch enabled?
if (logswitch.CheckLevel(level) == true)
{
// Send message for logging
// first send it to the debugger
Debugger.Log((int)level, logswitch.strName, message);
// Send to the console device
if (m_fConsoleDeviceEnabled)
{
Console.Write(message);
}
// Send it to the streams
for (int i = 0; i < m_iNumOfStreamDevices; i++)
{
StreamWriter sw = new StreamWriter(m_rgStream[i]);
sw.Write(message);
sw.Flush();
}
}
}