diff --git a/.gitignore b/.gitignore
index 45366d74..307b880a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@
/SabreTools.Help/obj/
/SabreTools.Library/bin/
/SabreTools.Library/obj/
+/SabreTools.Logging/bin/
+/SabreTools.Logging/obj/
/SabreTools.Skippers/bin/
/SabreTools.Skippers/obj/
/SabreTools.userprefs
diff --git a/RombaSharp/Features/BaseFeature.cs b/RombaSharp/Features/BaseFeature.cs
index 0f59d270..4649b9df 100644
--- a/RombaSharp/Features/BaseFeature.cs
+++ b/RombaSharp/Features/BaseFeature.cs
@@ -6,10 +6,10 @@ using System.Xml;
using SabreTools.Data;
using SabreTools.Help;
+using SabreTools.Logging;
using SabreTools.Library.DatFiles;
using SabreTools.Library.DatItems;
using SabreTools.Library.IO;
-using SabreTools.Library.Logging;
using SabreTools.Library.Tools;
using Microsoft.Data.Sqlite;
diff --git a/RombaSharp/Program.cs b/RombaSharp/Program.cs
index 74f3565a..69295636 100644
--- a/RombaSharp/Program.cs
+++ b/RombaSharp/Program.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
using RombaSharp.Features;
using SabreTools.Data;
using SabreTools.Help;
-using SabreTools.Library.Logging;
+using SabreTools.Logging;
namespace RombaSharp
{
diff --git a/RombaSharp/RombaSharp.csproj b/RombaSharp/RombaSharp.csproj
index b282181d..9d3d275f 100644
--- a/RombaSharp/RombaSharp.csproj
+++ b/RombaSharp/RombaSharp.csproj
@@ -19,6 +19,7 @@
+
diff --git a/SabreTools.Help/SabreTools.Help.csproj b/SabreTools.Help/SabreTools.Help.csproj
index a084bc84..820322b3 100644
--- a/SabreTools.Help/SabreTools.Help.csproj
+++ b/SabreTools.Help/SabreTools.Help.csproj
@@ -11,4 +11,8 @@
NET_FRAMEWORK
+
+
+
+
diff --git a/SabreTools.Help/TopLevel.cs b/SabreTools.Help/TopLevel.cs
index 50e097e9..e8f3cb93 100644
--- a/SabreTools.Help/TopLevel.cs
+++ b/SabreTools.Help/TopLevel.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.IO;
+using SabreTools.Logging;
+
namespace SabreTools.Help
{
///
@@ -23,8 +25,7 @@ namespace SabreTools.Help
///
/// Logging object
///
- // TODO: Re-enable all logging once Logging namespace separated out
- //private readonly Logger logger;
+ private readonly Logger logger;
#endregion
@@ -35,7 +36,7 @@ namespace SabreTools.Help
///
public TopLevel()
{
- //logger = new Logger(this);
+ logger = new Logger(this);
}
#endregion
@@ -67,9 +68,9 @@ namespace SabreTools.Help
// Everything else isn't a file
else
{
- //logger.Error($"Invalid input detected: {args[i]}");
+ logger.Error($"Invalid input detected: {args[i]}");
help.OutputIndividualFeature(this.Name);
- //LoggerImpl.Close();
+ LoggerImpl.Close();
return false;
}
}
diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs
index e4aa89e2..58a6508a 100644
--- a/SabreTools.Library/DatFiles/DatFile.cs
+++ b/SabreTools.Library/DatFiles/DatFile.cs
@@ -10,11 +10,11 @@ using System.Threading.Tasks;
using System.Xml.Serialization;
using SabreTools.Data;
+using SabreTools.Logging;
using SabreTools.Library.DatItems;
using SabreTools.Library.FileTypes;
using SabreTools.Library.Filtering;
using SabreTools.Library.IO;
-using SabreTools.Library.Logging;
using SabreTools.Library.Reports;
using SabreTools.Library.Skippers;
using SabreTools.Library.Tools;
diff --git a/SabreTools.Library/DatFiles/ItemDictionary.cs b/SabreTools.Library/DatFiles/ItemDictionary.cs
index ba3aaa7e..f6bead2c 100644
--- a/SabreTools.Library/DatFiles/ItemDictionary.cs
+++ b/SabreTools.Library/DatFiles/ItemDictionary.cs
@@ -9,9 +9,9 @@ using System.Threading.Tasks;
using System.Xml.Serialization;
using SabreTools.Data;
+using SabreTools.Logging;
using SabreTools.Library.DatItems;
using SabreTools.Library.IO;
-using SabreTools.Library.Logging;
using SabreTools.Library.Reports;
using NaturalSort;
using Newtonsoft.Json;
diff --git a/SabreTools.Library/DatItems/DatItem.cs b/SabreTools.Library/DatItems/DatItem.cs
index 7d19197a..e6115aa7 100644
--- a/SabreTools.Library/DatItems/DatItem.cs
+++ b/SabreTools.Library/DatItems/DatItem.cs
@@ -5,9 +5,9 @@ using System.Linq;
using System.Xml.Serialization;
using SabreTools.Data;
+using SabreTools.Logging;
using SabreTools.Library.FileTypes;
using SabreTools.Library.Filtering;
-using SabreTools.Library.Logging;
using SabreTools.Library.Tools;
using NaturalSort;
using Newtonsoft.Json;
diff --git a/SabreTools.Library/FileTypes/Folder.cs b/SabreTools.Library/FileTypes/Folder.cs
index 4e2f4359..6bfd8807 100644
--- a/SabreTools.Library/FileTypes/Folder.cs
+++ b/SabreTools.Library/FileTypes/Folder.cs
@@ -3,9 +3,9 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
+using SabreTools.Logging;
using SabreTools.Library.DatItems;
using SabreTools.Library.IO;
-using SabreTools.Library.Logging;
using SabreTools.Library.Tools;
namespace SabreTools.Library.FileTypes
diff --git a/SabreTools.Library/Filtering/ExtraIni.cs b/SabreTools.Library/Filtering/ExtraIni.cs
index 1b41af4a..2709469c 100644
--- a/SabreTools.Library/Filtering/ExtraIni.cs
+++ b/SabreTools.Library/Filtering/ExtraIni.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-using SabreTools.Library.Logging;
+using SabreTools.Logging;
using SabreTools.Library.Tools;
namespace SabreTools.Library.Filtering
diff --git a/SabreTools.Library/Filtering/ExtraIniItem.cs b/SabreTools.Library/Filtering/ExtraIniItem.cs
index 2e296860..850b6b0d 100644
--- a/SabreTools.Library/Filtering/ExtraIniItem.cs
+++ b/SabreTools.Library/Filtering/ExtraIniItem.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
+using SabreTools.Logging;
using SabreTools.Library.DatItems;
using SabreTools.Library.IO;
-using SabreTools.Library.Logging;
namespace SabreTools.Library.Filtering
{
diff --git a/SabreTools.Library/Filtering/Filter.cs b/SabreTools.Library/Filtering/Filter.cs
index d93b8e88..ab1bba1b 100644
--- a/SabreTools.Library/Filtering/Filter.cs
+++ b/SabreTools.Library/Filtering/Filter.cs
@@ -1,8 +1,8 @@
using System;
using System.Collections.Generic;
+using SabreTools.Logging;
using SabreTools.Library.DatItems;
-using SabreTools.Library.Logging;
using SabreTools.Library.Tools;
namespace SabreTools.Library.Filtering
diff --git a/SabreTools.Library/IO/DirectoryExtensions.cs b/SabreTools.Library/IO/DirectoryExtensions.cs
index 4713f04a..5786ec4c 100644
--- a/SabreTools.Library/IO/DirectoryExtensions.cs
+++ b/SabreTools.Library/IO/DirectoryExtensions.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
-using SabreTools.Library.Logging;
+using SabreTools.Logging;
using NaturalSort;
namespace SabreTools.Library.IO
diff --git a/SabreTools.Library/IO/FileExtensions.cs b/SabreTools.Library/IO/FileExtensions.cs
index 41af4627..ed52c06e 100644
--- a/SabreTools.Library/IO/FileExtensions.cs
+++ b/SabreTools.Library/IO/FileExtensions.cs
@@ -6,10 +6,9 @@ using System.Xml;
using System.Xml.Schema;
using SabreTools.Data;
+using SabreTools.Logging;
using SabreTools.Library.DatFiles;
using SabreTools.Library.FileTypes;
-using SabreTools.Library.Logging;
-using SabreTools.Library.Tools;
namespace SabreTools.Library.IO
{
diff --git a/SabreTools.Library/IO/StreamExtensions.cs b/SabreTools.Library/IO/StreamExtensions.cs
index 484dab89..a51658ea 100644
--- a/SabreTools.Library/IO/StreamExtensions.cs
+++ b/SabreTools.Library/IO/StreamExtensions.cs
@@ -5,9 +5,9 @@ using System.Linq;
using System.Threading.Tasks;
using SabreTools.Data;
+using SabreTools.Logging;
using SabreTools.Library.DatFiles;
using SabreTools.Library.FileTypes;
-using SabreTools.Library.Logging;
using SabreTools.Library.Tools;
using Compress.ThreadReaders;
diff --git a/SabreTools.Library/IO/Transform.cs b/SabreTools.Library/IO/Transform.cs
index 8115cdcc..b677f336 100644
--- a/SabreTools.Library/IO/Transform.cs
+++ b/SabreTools.Library/IO/Transform.cs
@@ -2,9 +2,9 @@ using System.Collections.Generic;
using System.IO;
using SabreTools.Data;
+using SabreTools.Logging;
using SabreTools.Library.DatFiles;
using SabreTools.Library.FileTypes;
-using SabreTools.Library.Logging;
using SabreTools.Library.Skippers;
using SabreTools.Library.Tools;
diff --git a/SabreTools.Library/SabreTools.Library.csproj b/SabreTools.Library/SabreTools.Library.csproj
index 797f7be3..67b70739 100644
--- a/SabreTools.Library/SabreTools.Library.csproj
+++ b/SabreTools.Library/SabreTools.Library.csproj
@@ -13,6 +13,7 @@
+
@@ -35,8 +36,4 @@
-
-
-
-
diff --git a/SabreTools.Library/Tools/DatabaseTools.cs b/SabreTools.Library/Tools/DatabaseTools.cs
index c140117d..c1c10635 100644
--- a/SabreTools.Library/Tools/DatabaseTools.cs
+++ b/SabreTools.Library/Tools/DatabaseTools.cs
@@ -3,7 +3,7 @@ using System.IO;
using System.Collections.Generic;
using SabreTools.Data;
-using SabreTools.Library.Logging;
+using SabreTools.Logging;
using Microsoft.Data.Sqlite;
namespace SabreTools.Library.Tools
diff --git a/SabreTools.Library/Tools/InternalStopwatch.cs b/SabreTools.Library/Tools/InternalStopwatch.cs
index a7e5e593..23b78b92 100644
--- a/SabreTools.Library/Tools/InternalStopwatch.cs
+++ b/SabreTools.Library/Tools/InternalStopwatch.cs
@@ -1,6 +1,6 @@
using System;
-using SabreTools.Library.Logging;
+using SabreTools.Logging;
namespace SabreTools.Library.Tools
{
diff --git a/SabreTools.Library/Logging/Enums.cs b/SabreTools.Logging/Enums.cs
similarity index 82%
rename from SabreTools.Library/Logging/Enums.cs
rename to SabreTools.Logging/Enums.cs
index d5904892..cdc45f97 100644
--- a/SabreTools.Library/Logging/Enums.cs
+++ b/SabreTools.Logging/Enums.cs
@@ -1,4 +1,4 @@
-namespace SabreTools.Library.Logging
+namespace SabreTools.Logging
{
///
/// Severity of the logging statement
diff --git a/SabreTools.Library/Logging/LogEventArgs.cs b/SabreTools.Logging/LogEventArgs.cs
similarity index 97%
rename from SabreTools.Library/Logging/LogEventArgs.cs
rename to SabreTools.Logging/LogEventArgs.cs
index 0463915c..490a7b3e 100644
--- a/SabreTools.Library/Logging/LogEventArgs.cs
+++ b/SabreTools.Logging/LogEventArgs.cs
@@ -1,6 +1,6 @@
using System;
-namespace SabreTools.Library.Logging
+namespace SabreTools.Logging
{
///
/// Generic delegate type for log events
diff --git a/SabreTools.Library/Logging/Logger.cs b/SabreTools.Logging/Logger.cs
similarity index 99%
rename from SabreTools.Library/Logging/Logger.cs
rename to SabreTools.Logging/Logger.cs
index 14a3e3d2..aa8560ef 100644
--- a/SabreTools.Library/Logging/Logger.cs
+++ b/SabreTools.Logging/Logger.cs
@@ -1,6 +1,6 @@
using System;
-namespace SabreTools.Library.Logging
+namespace SabreTools.Logging
{
///
/// Per-class logging
diff --git a/SabreTools.Library/Logging/LoggerImpl.cs b/SabreTools.Logging/LoggerImpl.cs
similarity index 83%
rename from SabreTools.Library/Logging/LoggerImpl.cs
rename to SabreTools.Logging/LoggerImpl.cs
index 06165884..385a82ed 100644
--- a/SabreTools.Library/Logging/LoggerImpl.cs
+++ b/SabreTools.Logging/LoggerImpl.cs
@@ -3,9 +3,8 @@ using System.IO;
using System.Text;
using SabreTools.Data;
-using SabreTools.Library.IO;
-namespace SabreTools.Library.Logging
+namespace SabreTools.Logging
{
///
/// Internal logging implementation
@@ -87,7 +86,7 @@ namespace SabreTools.Library.Logging
{
// Set and create the output
if (addDate)
- Filename = $"{Path.GetFileNameWithoutExtension(filename)} ({DateTime.Now:yyyy-MM-dd HH-mm-ss}).{PathExtensions.GetNormalizedExtension(filename)}";
+ Filename = $"{Path.GetFileNameWithoutExtension(filename)} ({DateTime.Now:yyyy-MM-dd HH-mm-ss}).{GetNormalizedExtension(filename)}";
else
Filename = filename;
}
@@ -112,7 +111,7 @@ namespace SabreTools.Library.Logging
if (!string.IsNullOrEmpty(LogDirectory) && !Directory.Exists(LogDirectory))
Directory.CreateDirectory(LogDirectory);
- FileStream logfile = FileExtensions.TryCreate(Path.Combine(LogDirectory, Filename));
+ FileStream logfile = TryCreate(Path.Combine(LogDirectory, Filename));
_log = new StreamWriter(logfile, Encoding.UTF8, (int)(4 * Constants.KibiByte), true)
{
AutoFlush = true
@@ -282,7 +281,7 @@ namespace SabreTools.Library.Logging
/// Exception to be written log
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void Verbose(object instance, Exception ex, string output = null)
+ public static void Verbose(object instance, Exception ex, string output = null)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.VERBOSE, output, ex));
}
@@ -293,7 +292,7 @@ namespace SabreTools.Library.Logging
/// Instance object that's the source of logging
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void Verbose(object instance, string output)
+ public static void Verbose(object instance, string output)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.VERBOSE, output, null));
}
@@ -305,7 +304,7 @@ namespace SabreTools.Library.Logging
/// Total count for progress
/// Current count for progres
/// String to be written log
- internal static void Verbose(object instance, long total, long current, string output = null)
+ public static void Verbose(object instance, long total, long current, string output = null)
{
LogEventHandler(instance, new LogEventArgs(total, current, LogLevel.VERBOSE, output));
}
@@ -317,7 +316,7 @@ namespace SabreTools.Library.Logging
/// Exception to be written log
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void User(object instance, Exception ex, string output = null)
+ public static void User(object instance, Exception ex, string output = null)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.USER, output, ex));
}
@@ -328,7 +327,7 @@ namespace SabreTools.Library.Logging
/// Instance object that's the source of logging
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void User(object instance, string output)
+ public static void User(object instance, string output)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.USER, output, null));
}
@@ -340,7 +339,7 @@ namespace SabreTools.Library.Logging
/// Total count for progress
/// Current count for progres
/// String to be written log
- internal static void User(object instance, long total, long current, string output = null)
+ public static void User(object instance, long total, long current, string output = null)
{
LogEventHandler(instance, new LogEventArgs(total, current, LogLevel.USER, output));
}
@@ -352,7 +351,7 @@ namespace SabreTools.Library.Logging
/// Exception to be written log
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void Warning(object instance, Exception ex, string output = null)
+ public static void Warning(object instance, Exception ex, string output = null)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.WARNING, output, ex));
}
@@ -363,7 +362,7 @@ namespace SabreTools.Library.Logging
/// Instance object that's the source of logging
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void Warning(object instance, string output)
+ public static void Warning(object instance, string output)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.WARNING, output, null));
}
@@ -375,7 +374,7 @@ namespace SabreTools.Library.Logging
/// Total count for progress
/// Current count for progres
/// String to be written log
- internal static void Warning(object instance, long total, long current, string output = null)
+ public static void Warning(object instance, long total, long current, string output = null)
{
LogEventHandler(instance, new LogEventArgs(total, current, LogLevel.WARNING, output));
}
@@ -387,7 +386,7 @@ namespace SabreTools.Library.Logging
/// Exception to be written log
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void Error(object instance, Exception ex, string output = null)
+ public static void Error(object instance, Exception ex, string output = null)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.ERROR, output, ex));
}
@@ -398,7 +397,7 @@ namespace SabreTools.Library.Logging
/// Instance object that's the source of logging
/// String to be written log
/// True if the output could be written, false otherwise
- internal static void Error(object instance, string output)
+ public static void Error(object instance, string output)
{
LogEventHandler(instance, new LogEventArgs(LogLevel.ERROR, output, null));
}
@@ -410,11 +409,62 @@ namespace SabreTools.Library.Logging
/// Total count for progress
/// Current count for progres
/// String to be written log
- internal static void Error(object instance, long total, long current, string output = null)
+ public static void Error(object instance, long total, long current, string output = null)
{
LogEventHandler(instance, new LogEventArgs(total, current, LogLevel.ERROR, output));
}
#endregion
+
+ // TODO: Remove this region once IO namespace is separated out properly
+ #region TEMPORARY - REMOVEME
+
+ ///
+ /// Get the extension from the path, if possible
+ ///
+ /// Path to get extension from
+ /// Extension, if possible
+ public static string GetNormalizedExtension(string path)
+ {
+ // Check null or empty first
+ if (string.IsNullOrWhiteSpace(path))
+ return null;
+
+ // Get the extension from the path, if possible
+ string ext = Path.GetExtension(path)?.ToLowerInvariant();
+
+ // Check if the extension is null or empty
+ if (string.IsNullOrWhiteSpace(ext))
+ return null;
+
+ // Make sure that extensions are valid
+ ext = ext.TrimStart('.');
+
+ return ext;
+ }
+
+ ///
+ /// Try to create a file for write, optionally throwing the error
+ ///
+ /// Name of the file to create
+ /// True if the error that is thrown should be thrown back to the caller, false otherwise
+ /// An opened stream representing the file on success, null otherwise
+ public static FileStream TryCreate(string file, bool throwOnError = false)
+ {
+ // Now wrap opening the file
+ try
+ {
+ return File.Open(file, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
+ }
+ catch (Exception ex)
+ {
+ if (throwOnError)
+ throw ex;
+ else
+ return null;
+ }
+ }
+
+ #endregion
}
}
diff --git a/SabreTools.Logging/SabreTools - Backup.Logging.csproj b/SabreTools.Logging/SabreTools - Backup.Logging.csproj
new file mode 100644
index 00000000..a084bc84
--- /dev/null
+++ b/SabreTools.Logging/SabreTools - Backup.Logging.csproj
@@ -0,0 +1,14 @@
+
+
+
+ net48;netcoreapp3.1;net5.0
+ win10-x64;win7-x86
+ Debug;Release
+ AnyCPU;x64
+
+
+
+ NET_FRAMEWORK
+
+
+
diff --git a/SabreTools.Logging/SabreTools.Logging.csproj b/SabreTools.Logging/SabreTools.Logging.csproj
new file mode 100644
index 00000000..d9dc09f0
--- /dev/null
+++ b/SabreTools.Logging/SabreTools.Logging.csproj
@@ -0,0 +1,18 @@
+
+
+
+ net48;netcoreapp3.1;net5.0
+ win10-x64;win7-x86
+ Debug;Release
+ AnyCPU;x64
+
+
+
+ NET_FRAMEWORK
+
+
+
+
+
+
+
diff --git a/SabreTools.Skippers/SabreTools.Skippers.csproj b/SabreTools.Skippers/SabreTools.Skippers.csproj
index 752c6fee..92a5a29a 100644
--- a/SabreTools.Skippers/SabreTools.Skippers.csproj
+++ b/SabreTools.Skippers/SabreTools.Skippers.csproj
@@ -1,4 +1,4 @@
-
+
net48;netcoreapp3.1;net5.0
@@ -11,6 +11,10 @@
NET_FRAMEWORK
+
+
+
+
diff --git a/SabreTools.Skippers/SkipperRule.cs b/SabreTools.Skippers/SkipperRule.cs
index 75b87b4b..1e5250a1 100644
--- a/SabreTools.Skippers/SkipperRule.cs
+++ b/SabreTools.Skippers/SkipperRule.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.IO;
+using SabreTools.Logging;
+
namespace SabreTools.Library.Skippers
{
public class SkipperRule
@@ -40,8 +42,7 @@ namespace SabreTools.Library.Skippers
///
/// Logging object
///
- // TODO: Re-enable all logging once Logging namespace separated out
- //private readonly Logger logger;
+ private readonly Logger logger;
#endregion
@@ -52,7 +53,7 @@ namespace SabreTools.Library.Skippers
///
public SkipperRule()
{
- //logger = new Logger(this);
+ logger = new Logger(this);
}
#endregion
@@ -85,7 +86,7 @@ namespace SabreTools.Library.Skippers
// If the input file doesn't exist, fail
if (!File.Exists(input))
{
- //logger.Error($"I'm sorry but '{input}' doesn't exist!");
+ logger.Error($"I'm sorry but '{input}' doesn't exist!");
return false;
}
@@ -123,7 +124,7 @@ namespace SabreTools.Library.Skippers
|| (Operation > HeaderSkipOperation.Byteswap && (extsize % 4) != 0)
|| (Operation > HeaderSkipOperation.Bitswap && (StartOffset == null || StartOffset % 2 == 0)))
{
- //logger.Error("The stream did not have the correct size to be transformed!");
+ logger.Error("The stream did not have the correct size to be transformed!");
return false;
}
@@ -132,7 +133,7 @@ namespace SabreTools.Library.Skippers
BinaryReader br = null;
try
{
- //logger.User("Applying found rule to input stream");
+ logger.User("Applying found rule to input stream");
bw = new BinaryWriter(output);
br = new BinaryReader(input);
@@ -220,7 +221,7 @@ namespace SabreTools.Library.Skippers
}
catch (Exception ex)
{
- //logger.Error(ex);
+ logger.Error(ex);
return false;
}
finally
diff --git a/SabreTools.sln b/SabreTools.sln
index bea8985b..cbae9f37 100644
--- a/SabreTools.sln
+++ b/SabreTools.sln
@@ -22,6 +22,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Skippers", "Sabr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Help", "SabreTools.Help\SabreTools.Help.csproj", "{55364167-844F-4B58-8280-F5327FA3D8E7}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Logging", "SabreTools.Logging\SabreTools.Logging.csproj", "{3D54D896-19F0-4723-B1E3-E40FAFE5A078}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -78,6 +80,14 @@ Global
{55364167-844F-4B58-8280-F5327FA3D8E7}.Release|Any CPU.Build.0 = Release|Any CPU
{55364167-844F-4B58-8280-F5327FA3D8E7}.Release|x64.ActiveCfg = Release|Any CPU
{55364167-844F-4B58-8280-F5327FA3D8E7}.Release|x64.Build.0 = Release|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Debug|x64.Build.0 = Debug|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Release|x64.ActiveCfg = Release|Any CPU
+ {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs
index d0b44439..b38adc93 100644
--- a/SabreTools/Features/BaseFeature.cs
+++ b/SabreTools/Features/BaseFeature.cs
@@ -3,11 +3,11 @@ using System.Collections.Generic;
using SabreTools.Data;
using SabreTools.Help;
+using SabreTools.Logging;
using SabreTools.Library.DatFiles;
using SabreTools.Library.DatItems;
using SabreTools.Library.FileTypes;
using SabreTools.Library.Filtering;
-using SabreTools.Library.Logging;
using SabreTools.Library.Reports;
using SabreTools.Library.Tools;
diff --git a/SabreTools/Program.cs b/SabreTools/Program.cs
index ba8547e4..8e0ae9d3 100644
--- a/SabreTools/Program.cs
+++ b/SabreTools/Program.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
using SabreTools.Features;
using SabreTools.Data;
using SabreTools.Help;
-using SabreTools.Library.Logging;
+using SabreTools.Logging;
namespace SabreTools
{
diff --git a/SabreTools/SabreTools.csproj b/SabreTools/SabreTools.csproj
index 8a9a6810..7a4ed099 100644
--- a/SabreTools/SabreTools.csproj
+++ b/SabreTools/SabreTools.csproj
@@ -1,4 +1,4 @@
-
+
Exe
@@ -15,6 +15,7 @@
+