From 4ab5f4578fba251c6e66958ce1b488f1e189cc8e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 1 Mar 2017 21:58:09 -0800 Subject: [PATCH] [Logger] Allow for log filtering based on level --- SabreTools.Helper/Data/Enums.cs | 15 ++++++++++++++ SabreTools.Helper/Logger.cs | 27 ++++++++++++------------- SabreTools.Helper/Tools/ArchiveTools.cs | 2 +- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/SabreTools.Helper/Data/Enums.cs b/SabreTools.Helper/Data/Enums.cs index 41c9d823..3792aeab 100644 --- a/SabreTools.Helper/Data/Enums.cs +++ b/SabreTools.Helper/Data/Enums.cs @@ -304,6 +304,21 @@ #endregion + #region Logging related + + /// + /// Severity of the logging statement + /// + public enum LogLevel + { + VERBOSE = 0, + USER, + WARNING, + ERROR, + } + + #endregion + #region Skippers and Mappers /// diff --git a/SabreTools.Helper/Logger.cs b/SabreTools.Helper/Logger.cs index 1a45469d..282ac156 100644 --- a/SabreTools.Helper/Logger.cs +++ b/SabreTools.Helper/Logger.cs @@ -1,6 +1,8 @@ using System; using System.IO; +using SabreTools.Helper.Data; + namespace SabreTools.Helper { /// @@ -8,27 +10,15 @@ namespace SabreTools.Helper /// /// /// TODO: Allow for "triggerable" logging done on an interval (async) - /// TODO: Log filtering? (#if debug?) - /// TODO: Reduce user-verbosity in later builds /// public class Logger { - /// - /// Severity of the logging statement - /// - private enum LogLevel - { - VERBOSE = 0, - USER, - WARNING, - ERROR, - } - // Private instance variables private bool _tofile; private bool _warnings; private bool _errors; private string _filename; + private LogLevel _filter; private DateTime _start; private StreamWriter _log; @@ -44,6 +34,7 @@ namespace SabreTools.Helper _warnings = false; _errors = false; _filename = null; + _filter = LogLevel.VERBOSE; Start(); } @@ -53,12 +44,14 @@ namespace SabreTools.Helper /// /// True if file should be written to instead of console /// Filename representing log location - public Logger(bool tofile, string filename) + /// Highest filtering level to be kept, default VERBOSE + public Logger(bool tofile, string filename, LogLevel filter = LogLevel.VERBOSE) { _tofile = tofile; _warnings = false; _errors = false; _filename = Path.GetFileNameWithoutExtension(filename) + " (" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ")" + Path.GetExtension(filename); + _filter = filter; if (!Directory.Exists(_basepath)) { @@ -169,6 +162,12 @@ namespace SabreTools.Helper /// True if the output could be written, false otherwise private bool Log(string output, LogLevel loglevel, bool appendPrefix) { + // If the log level is less than the filter level, we skip it but claim we didn't + if (loglevel < _filter) + { + return true; + } + // USER and ERROR writes to console if (loglevel == LogLevel.USER || loglevel == LogLevel.ERROR) { diff --git a/SabreTools.Helper/Tools/ArchiveTools.cs b/SabreTools.Helper/Tools/ArchiveTools.cs index 38dee09b..2cf02e9e 100644 --- a/SabreTools.Helper/Tools/ArchiveTools.cs +++ b/SabreTools.Helper/Tools/ArchiveTools.cs @@ -36,7 +36,7 @@ using SharpCompress.Writers; namespace SabreTools.Helper.Tools { /* - * TODO: Full archive support for: 7-Zip, RAR, XZ, LRZip + * TODO: Full archive support for: RAR, XZ, LRZip */ public static class ArchiveTools {