/// <summary> /// Set the logging level in the registry /// </summary> /// <param name="val">The maximum file size</param> /// <returns>true if the logging level was saved in the registry</returns> private bool setLogLevel(ENLogLevel val) { try { Microsoft.Win32.RegistryKey rkQBWC = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(Defaults.REG_KEY); rkQBWC.SetValue(LogLevelKey, val.ToString(), RegistryValueKind.String); rkQBWC.Close(); return(true); } catch { return(false); } }
/// <summary> /// Obtains the logging level from the registry. If an entry is not found then the default /// level is saved to the registry. If an error is detected in any of this, the default /// level is returned /// </summary> /// <returns>The current logging level</returns> private ENLogLevel getLogLevel() { ENLogLevel retValue = Defaults.DEFAULT_LOG_LEVEL; try { // Attempt to get the LogLevel from the registry. If the key cannot be found there, // create a new key, setting the value to the default value. Microsoft.Win32.RegistryKey rkQBWC = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(Defaults.REG_KEY, false); if (rkQBWC == null) { setLogLevel(retValue); return(retValue); } string retVal = (string)rkQBWC.GetValue(LogLevelKey); rkQBWC.Close(); switch (retVal) { case "NONE": retValue = ENLogLevel.NONE; break; case "CRITICAL": retValue = ENLogLevel.CRITICAL; break; case "ERROR": retValue = ENLogLevel.ERROR; break; case "VERBOSE": retValue = ENLogLevel.VERBOSE; break; default: retValue = Defaults.DEFAULT_LOG_LEVEL; setLogLevel(retValue); break; } } catch { // Don't do anything } return(retValue); }
private void InitializeLog() { string dir = Path.GetDirectoryName(_logFileName); // Create directory and file, as required... if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (File.Exists(_logFileName)) { _str = File.AppendText(_logFileName); } else { _str = File.CreateText(_logFileName); } // Add some initialization string to the log file... _str.WriteLine("\r\n\r\nLog file initialized at " + nowLong()); _str.WriteLine("Timestamp format used: YYYYMMDD.HH:MM:SS UTC"); string messaging = ""; // Initialize the logging level and the maximum size... _logLevel = getLogLevel(); _maxLogFileSize = getMaxLogFileSize(true); _str.WriteLine("\"" + _productName + "\" version: " + _productVersion + ", has been initialized with its logging " + "status to _logLevel = " + _logLevel.ToString() + ".\n" + messaging); _str.WriteLine(""); _str.Close(); if (_maxLogFileSize <= 1024) { //If the logging size is pathetically small, it is equivalent to _logLevel = NONE if (_logLevel != ENLogLevel.NONE) { log("[INFO]", "Logger.checkLogFileSize()", "Log file size only " + _maxLogFileSize + " bytes. Setting LogLevel to NONE for no logging."); setLogLevel(ENLogLevel.NONE); } } }