Esempio n. 1
0
        protected override void Dispose(bool isDisposing)
        {
            if (isDisposing)
            {
                // nothing special to do...
            }

            // release the device regardless of whether or not we are disposing
            ExceptionSafe.ExecuteConsoleWriteAnyException(
                ReleaseDeviceConnection,
                "exception shutting down COM driver");

            base.Dispose(isDisposing);
        }
        /// <summary>
        /// <paramref name="message"/> will only be executed if the log <paramref name="level"/> requested is enabled.
        /// </summary>
        /// <remarks>
        /// This method is a shorthand way of expressing the following pattern:
        /// <c>if (logger.IsWarnEnabled) logger.Warn(message());</c>
        /// </remarks>
        public static void LogIfLevelIsEnabled(this ILogger logger, LoggerLevel level, Func <string> message)
        {
            switch (level)
            {
            case LoggerLevel.Off:
                break;

            case LoggerLevel.Fatal:
                if (logger.IsFatalEnabled)
                {
                    ExceptionSafe.ExecuteAndIgnore <Exception>(() => logger.Fatal(message()));
                }
                break;

            case LoggerLevel.Error:
                if (logger.IsErrorEnabled)
                {
                    ExceptionSafe.ExecuteAndIgnore <Exception>(() => logger.Error(message()));
                }
                break;

            case LoggerLevel.Warn:
                if (logger.IsWarnEnabled)
                {
                    ExceptionSafe.ExecuteAndIgnore <Exception>(() => logger.Warn(message()));
                }
                break;

            case LoggerLevel.Info:
                if (logger.IsInfoEnabled)
                {
                    ExceptionSafe.ExecuteAndIgnore <Exception>(() => logger.Info(message()));
                }
                break;

            case LoggerLevel.Debug:
                if (logger.IsDebugEnabled)
                {
                    ExceptionSafe.ExecuteAndIgnore <Exception>(() => logger.Debug(message()));
                }
                break;

            default:
                throw new ArgumentOutOfRangeException("level");
            }
        }