diff --git a/GoldbergGUI.Core/GoldbergGUI.Core.csproj b/GoldbergGUI.Core/GoldbergGUI.Core.csproj index 865a61b..6d27c2c 100644 --- a/GoldbergGUI.Core/GoldbergGUI.Core.csproj +++ b/GoldbergGUI.Core/GoldbergGUI.Core.csproj @@ -8,12 +8,12 @@ - - + + - - - + + + diff --git a/GoldbergGUI.Core/Services/GoldbergService.cs b/GoldbergGUI.Core/Services/GoldbergService.cs index 6b7bcfa..40bca24 100644 --- a/GoldbergGUI.Core/Services/GoldbergService.cs +++ b/GoldbergGUI.Core/Services/GoldbergService.cs @@ -1,6 +1,6 @@ using GoldbergGUI.Core.Models; using GoldbergGUI.Core.Utils; -using MvvmCross.Logging; +using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; @@ -18,7 +18,7 @@ namespace GoldbergGUI.Core.Services // does file copy stuff public interface IGoldbergService { - public Task Initialize(IMvxLog log); + public Task Initialize(ILogger log); public Task Read(string path); public Task Save(string path, GoldbergConfiguration configuration); public Task GetGlobalSettings(); @@ -32,7 +32,7 @@ namespace GoldbergGUI.Core.Services // ReSharper disable once ClassNeverInstantiated.Global public class GoldbergService : IGoldbergService { - private IMvxLog _log; + private ILogger _log; private const string DefaultAccountName = "Mr_Goldberg"; private const long DefaultSteamId = 76561197960287930; private const string DefaultLanguage = "english"; @@ -82,7 +82,7 @@ namespace GoldbergGUI.Core.Services // Call Download // Get global settings - public async Task Initialize(IMvxLog log) + public async Task Initialize(ILogger log) { _log = log; @@ -97,7 +97,7 @@ namespace GoldbergGUI.Core.Services public async Task GetGlobalSettings() { - _log.Info("Getting global settings..."); + _log.LogInformation("Getting global settings..."); var accountName = DefaultAccountName; var steamId = DefaultSteamId; var language = DefaultLanguage; @@ -110,7 +110,7 @@ namespace GoldbergGUI.Core.Services !long.TryParse(File.ReadLines(_userSteamIdPath).First().Trim(), out steamId) && steamId < 76561197960265729 && steamId > 76561202255233023) { - _log.Error("Invalid User Steam ID! Using default Steam ID..."); + _log.LogError("Invalid User Steam ID! Using default Steam ID..."); steamId = DefaultSteamId; } @@ -119,7 +119,7 @@ namespace GoldbergGUI.Core.Services customBroadcastIps.AddRange( File.ReadLines(_customBroadcastIpsPath).Select(line => line.Trim())); }).ConfigureAwait(false); - _log.Info("Got global settings."); + _log.LogInformation("Got global settings."); return new GoldbergGlobalConfiguration { AccountName = accountName, @@ -135,18 +135,18 @@ namespace GoldbergGUI.Core.Services var userSteamId = c.UserSteamId; var language = c.Language; var customBroadcastIps = c.CustomBroadcastIps; - _log.Info("Setting global settings..."); + _log.LogInformation("Setting global settings..."); // Account Name if (!string.IsNullOrEmpty(accountName)) { - _log.Info("Setting account name..."); + _log.LogInformation("Setting account name..."); if (!File.Exists(_accountNamePath)) await File.Create(_accountNamePath).DisposeAsync().ConfigureAwait(false); await File.WriteAllTextAsync(_accountNamePath, accountName).ConfigureAwait(false); } else { - _log.Info("Invalid account name! Skipping..."); + _log.LogInformation("Invalid account name! Skipping..."); if (!File.Exists(_accountNamePath)) await File.Create(_accountNamePath).DisposeAsync().ConfigureAwait(false); await File.WriteAllTextAsync(_accountNamePath, DefaultAccountName).ConfigureAwait(false); @@ -155,14 +155,14 @@ namespace GoldbergGUI.Core.Services // User SteamID if (userSteamId >= 76561197960265729 && userSteamId <= 76561202255233023) { - _log.Info("Setting user Steam ID..."); + _log.LogInformation("Setting user Steam ID..."); if (!File.Exists(_userSteamIdPath)) await File.Create(_userSteamIdPath).DisposeAsync().ConfigureAwait(false); await File.WriteAllTextAsync(_userSteamIdPath, userSteamId.ToString()).ConfigureAwait(false); } else { - _log.Info("Invalid user Steam ID! Skipping..."); + _log.LogInformation("Invalid user Steam ID! Skipping..."); if (!File.Exists(_userSteamIdPath)) await File.Create(_userSteamIdPath).DisposeAsync().ConfigureAwait(false); await File.WriteAllTextAsync(_userSteamIdPath, DefaultSteamId.ToString()).ConfigureAwait(false); @@ -171,14 +171,14 @@ namespace GoldbergGUI.Core.Services // Language if (!string.IsNullOrEmpty(language)) { - _log.Info("Setting language..."); + _log.LogInformation("Setting language..."); if (!File.Exists(_languagePath)) await File.Create(_languagePath).DisposeAsync().ConfigureAwait(false); await File.WriteAllTextAsync(_languagePath, language).ConfigureAwait(false); } else { - _log.Info("Invalid language! Skipping..."); + _log.LogInformation("Invalid language! Skipping..."); if (!File.Exists(_languagePath)) await File.Create(_languagePath).DisposeAsync().ConfigureAwait(false); await File.WriteAllTextAsync(_languagePath, DefaultLanguage).ConfigureAwait(false); @@ -187,7 +187,7 @@ namespace GoldbergGUI.Core.Services // Custom Broadcast IPs if (customBroadcastIps != null && customBroadcastIps.Count > 0) { - _log.Info("Setting custom broadcast IPs..."); + _log.LogInformation("Setting custom broadcast IPs..."); var result = customBroadcastIps.Aggregate("", (current, address) => $"{current}{address}\n"); if (!File.Exists(_customBroadcastIpsPath)) @@ -196,50 +196,50 @@ namespace GoldbergGUI.Core.Services } else { - _log.Info("Empty list of custom broadcast IPs! Skipping..."); + _log.LogInformation("Empty list of custom broadcast IPs! Skipping..."); await Task.Run(() => File.Delete(_customBroadcastIpsPath)).ConfigureAwait(false); } - _log.Info("Setting global configuration finished."); + _log.LogInformation("Setting global configuration finished."); } // If first time, call GenerateInterfaces // else try to read config public async Task Read(string path) { - _log.Info("Reading configuration..."); + _log.LogInformation("Reading configuration..."); var appId = -1; var achievementList = new List(); var dlcList = new List(); var steamAppidTxt = Path.Combine(path, "steam_appid.txt"); if (File.Exists(steamAppidTxt)) { - _log.Info("Getting AppID..."); + _log.LogInformation("Getting AppID..."); await Task.Run(() => int.TryParse(File.ReadLines(steamAppidTxt).First().Trim(), out appId)) .ConfigureAwait(false); } else { - _log.Info(@"""steam_appid.txt"" missing! Skipping..."); + _log.LogInformation(@"""steam_appid.txt"" missing! Skipping..."); } var achievementJson = Path.Combine(path, "steam_settings", "achievements.json"); if (File.Exists(achievementJson)) { - _log.Info("Getting achievements..."); + _log.LogInformation("Getting achievements..."); var json = await File.ReadAllTextAsync(achievementJson) .ConfigureAwait(false); achievementList = System.Text.Json.JsonSerializer.Deserialize>(json); } else { - _log.Info(@"""steam_settings/achievements.json"" missing! Skipping..."); + _log.LogInformation(@"""steam_settings/achievements.json"" missing! Skipping..."); } var dlcTxt = Path.Combine(path, "steam_settings", "DLC.txt"); var appPathTxt = Path.Combine(path, "steam_settings", "app_paths.txt"); if (File.Exists(dlcTxt)) { - _log.Info("Getting DLCs..."); + _log.LogInformation("Getting DLCs..."); var readAllLinesAsync = await File.ReadAllLinesAsync(dlcTxt).ConfigureAwait(false); var expression = new Regex(@"(?.*) *= *(?.*)"); // ReSharper disable once LoopCanBeConvertedToQuery @@ -271,7 +271,7 @@ namespace GoldbergGUI.Core.Services } else { - _log.Info(@"""steam_settings/DLC.txt"" missing! Skipping..."); + _log.LogInformation(@"""steam_settings/DLC.txt"" missing! Skipping..."); } return new GoldbergConfiguration @@ -291,9 +291,9 @@ namespace GoldbergGUI.Core.Services // Save configuration files public async Task Save(string path, GoldbergConfiguration c) { - _log.Info("Saving configuration..."); + _log.LogInformation("Saving configuration..."); // DLL setup - _log.Info("Running DLL setup..."); + _log.LogInformation("Running DLL setup..."); const string x86Name = "steam_api"; const string x64Name = "steam_api64"; if (File.Exists(Path.Combine(path, $"{x86Name}.dll"))) @@ -305,10 +305,10 @@ namespace GoldbergGUI.Core.Services { CopyDllFiles(path, x64Name); } - _log.Info("DLL setup finished!"); + _log.LogInformation("DLL setup finished!"); // Create steam_settings folder if missing - _log.Info("Saving settings..."); + _log.LogInformation("Saving settings..."); if (!Directory.Exists(Path.Combine(path, "steam_settings"))) { Directory.CreateDirectory(Path.Combine(path, "steam_settings")); @@ -321,7 +321,7 @@ namespace GoldbergGUI.Core.Services // Achievements + Images if (c.Achievements.Count > 0) { - _log.Info("Downloading images..."); + _log.LogInformation("Downloading images..."); var imagePath = Path.Combine(path, "steam_settings", "images"); Directory.CreateDirectory(imagePath); @@ -335,7 +335,7 @@ namespace GoldbergGUI.Core.Services achievement.IconGray = $"images/{Path.GetFileName(achievement.IconGray)}"; } - _log.Info("Saving achievements..."); + _log.LogInformation("Saving achievements..."); var achievementJson = System.Text.Json.JsonSerializer.Serialize( c.Achievements, @@ -347,11 +347,11 @@ namespace GoldbergGUI.Core.Services await File.WriteAllTextAsync(Path.Combine(path, "steam_settings", "achievements.json"), achievementJson) .ConfigureAwait(false); - _log.Info("Finished saving achievements."); + _log.LogInformation("Finished saving achievements."); } else { - _log.Info("No achievements set! Removing achievement files..."); + _log.LogInformation("No achievements set! Removing achievement files..."); var imagePath = Path.Combine(path, "steam_settings", "images"); if (Directory.Exists(imagePath)) { @@ -362,13 +362,13 @@ namespace GoldbergGUI.Core.Services { File.Delete(achievementPath); } - _log.Info("Removed achievement files."); + _log.LogInformation("Removed achievement files."); } // DLC + App path if (c.DlcList.Count > 0) { - _log.Info("Saving DLC settings..."); + _log.LogInformation("Saving DLC settings..."); var dlcContent = ""; //var depotContent = ""; var appPathContent = ""; @@ -399,54 +399,54 @@ namespace GoldbergGUI.Core.Services if (File.Exists(Path.Combine(path, "steam_settings", "app_paths.txt"))) File.Delete(Path.Combine(path, "steam_settings", "app_paths.txt")); } - _log.Info("Saved DLC settings."); + _log.LogInformation("Saved DLC settings."); } else { - _log.Info("No DLC set! Removing DLC configuration files..."); + _log.LogInformation("No DLC set! Removing DLC configuration files..."); if (File.Exists(Path.Combine(path, "steam_settings", "DLC.txt"))) File.Delete(Path.Combine(path, "steam_settings", "DLC.txt")); if (File.Exists(Path.Combine(path, "steam_settings", "app_paths.txt"))) File.Delete(Path.Combine(path, "steam_settings", "app_paths.txt")); - _log.Info("Removed DLC configuration files."); + _log.LogInformation("Removed DLC configuration files."); } // Offline if (c.Offline) { - _log.Info("Create offline.txt"); + _log.LogInformation("Create offline.txt"); await File.Create(Path.Combine(path, "steam_settings", "offline.txt")).DisposeAsync() .ConfigureAwait(false); } else { - _log.Info("Delete offline.txt if it exists"); + _log.LogInformation("Delete offline.txt if it exists"); File.Delete(Path.Combine(path, "steam_settings", "offline.txt")); } // Disable Networking if (c.DisableNetworking) { - _log.Info("Create disable_networking.txt"); + _log.LogInformation("Create disable_networking.txt"); await File.Create(Path.Combine(path, "steam_settings", "disable_networking.txt")).DisposeAsync() .ConfigureAwait(false); } else { - _log.Info("Delete disable_networking.txt if it exists"); + _log.LogInformation("Delete disable_networking.txt if it exists"); File.Delete(Path.Combine(path, "steam_settings", "disable_networking.txt")); } // Disable Overlay if (c.DisableOverlay) { - _log.Info("Create disable_overlay.txt"); + _log.LogInformation("Create disable_overlay.txt"); await File.Create(Path.Combine(path, "steam_settings", "disable_overlay.txt")).DisposeAsync() .ConfigureAwait(false); } else { - _log.Info("Delete disable_overlay.txt if it exists"); + _log.LogInformation("Delete disable_overlay.txt if it exists"); File.Delete(Path.Combine(path, "steam_settings", "disable_overlay.txt")); } } @@ -460,7 +460,7 @@ namespace GoldbergGUI.Core.Services if (!File.Exists(originalDll)) { - _log.Info("Back up original Steam API DLL..."); + _log.LogInformation("Back up original Steam API DLL..."); File.Move(steamApiDll, originalDll); } else @@ -469,7 +469,7 @@ namespace GoldbergGUI.Core.Services File.SetAttributes(guiBackup, FileAttributes.Hidden); } - _log.Info("Copy Goldberg DLL to target path..."); + _log.LogInformation("Copy Goldberg DLL to target path..."); File.Copy(goldbergDll, steamApiDll); } @@ -477,7 +477,7 @@ namespace GoldbergGUI.Core.Services { var steamSettingsDirExists = Directory.Exists(Path.Combine(path, "steam_settings")); var steamAppIdTxtExists = File.Exists(Path.Combine(path, "steam_appid.txt")); - _log.Debug($"Goldberg applied? {(steamSettingsDirExists && steamAppIdTxtExists).ToString()}"); + _log.LogDebug($"Goldberg applied? {steamSettingsDirExists && steamAppIdTxtExists}"); return steamSettingsDirExists && steamAppIdTxtExists; } @@ -486,7 +486,7 @@ namespace GoldbergGUI.Core.Services // Get webpage // Get job id, compare with local if exists, save it if false or missing // Get latest archive if mismatch, call Extract - _log.Info("Initializing download..."); + _log.LogInformation("Initializing download..."); if (!Directory.Exists(_goldbergPath)) Directory.CreateDirectory(_goldbergPath); var client = new HttpClient(); var response = await client.GetAsync(GoldbergUrl).ConfigureAwait(false); @@ -499,23 +499,23 @@ namespace GoldbergGUI.Core.Services { try { - _log.Info("Check if update is needed..."); + _log.LogInformation("Check if update is needed..."); var jobIdLocal = Convert.ToInt32(File.ReadLines(jobIdPath).First().Trim()); var jobIdRemote = Convert.ToInt32(match.Groups["jobid"].Value); - _log.Debug($"job_id: local {jobIdLocal}; remote {jobIdRemote}"); + _log.LogDebug($"job_id: local {jobIdLocal}; remote {jobIdRemote}"); if (jobIdLocal.Equals(jobIdRemote)) { - _log.Info("Latest Goldberg emulator is already available! Skipping..."); + _log.LogInformation("Latest Goldberg emulator is already available! Skipping..."); return false; } } catch (Exception) { - _log.Error("An error occured, local Goldberg setup might be broken!"); + _log.LogError("An error occured, local Goldberg setup might be broken!"); } } - _log.Info("Starting download..."); + _log.LogInformation("Starting download..."); await StartDownload(match.Value).ConfigureAwait(false); return true; } @@ -525,7 +525,7 @@ namespace GoldbergGUI.Core.Services try { var client = new HttpClient(); - _log.Debug(downloadUrl); + _log.LogDebug(downloadUrl); await using var fileStream = File.OpenWrite(_goldbergZipPath); //client.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead) var httpRequestMessage = new HttpRequestMessage(HttpMethod.Head, downloadUrl); @@ -539,7 +539,7 @@ namespace GoldbergGUI.Core.Services // Environment.Exit(128); if (contentLength == fileLength) { - _log.Info("Download finished!"); + _log.LogInformation("Download finished!"); } else { @@ -550,7 +550,7 @@ namespace GoldbergGUI.Core.Services catch (Exception e) { ShowErrorMessage(); - _log.Error(e.ToString); + _log.LogError(e.ToString()); Environment.Exit(1); } } @@ -560,7 +560,7 @@ namespace GoldbergGUI.Core.Services private async Task Extract(string archivePath) { var errorOccured = false; - _log.Debug("Start extraction..."); + _log.LogDebug("Start extraction..."); Directory.Delete(_goldbergPath, true); Directory.CreateDirectory(_goldbergPath); using (var archive = await Task.Run(() => ZipFile.OpenRead(archivePath)).ConfigureAwait(false)) @@ -584,8 +584,8 @@ namespace GoldbergGUI.Core.Services catch (Exception e) { errorOccured = true; - _log.Error($"Error while trying to extract {entry.FullName}"); - _log.Error(e.ToString); + _log.LogError($"Error while trying to extract {entry.FullName}"); + _log.LogError(e.ToString()); } }).ConfigureAwait(false); } @@ -594,9 +594,9 @@ namespace GoldbergGUI.Core.Services if (errorOccured) { ShowErrorMessage(); - _log.Warn("Error occured while extraction! Please setup Goldberg manually"); + _log.LogWarning("Error occured while extraction! Please setup Goldberg manually"); } - _log.Info("Extraction was successful!"); + _log.LogInformation("Extraction was successful!"); } private void ShowErrorMessage() @@ -615,7 +615,7 @@ namespace GoldbergGUI.Core.Services // (maybe) check DLL date first public async Task GenerateInterfacesFile(string filePath) { - _log.Debug($"GenerateInterfacesFile {filePath}"); + _log.LogDebug($"GenerateInterfacesFile {filePath}"); //throw new NotImplementedException(); // Get DLL content var result = new HashSet(); @@ -694,7 +694,7 @@ namespace GoldbergGUI.Core.Services } else if (imageUrl.StartsWith("images/")) { - _log.Warn($"Previously downloaded image '{imageUrl}' is now missing!"); + _log.LogWarning($"Previously downloaded image '{imageUrl}' is now missing!"); } var wc = new System.Net.WebClient(); diff --git a/GoldbergGUI.Core/Services/SteamService.cs b/GoldbergGUI.Core/Services/SteamService.cs index 74c369b..c457000 100644 --- a/GoldbergGUI.Core/Services/SteamService.cs +++ b/GoldbergGUI.Core/Services/SteamService.cs @@ -2,7 +2,7 @@ using AngleSharp.Dom; using AngleSharp.Html.Parser; using GoldbergGUI.Core.Models; using GoldbergGUI.Core.Utils; -using MvvmCross.Logging; +using Microsoft.Extensions.Logging; using NinjaNye.SearchExtensions; using SQLite; using SteamStorefrontAPI; @@ -19,7 +19,7 @@ namespace GoldbergGUI.Core.Services // gets info from steam api public interface ISteamService { - public Task Initialize(IMvxLog log); + public Task Initialize(ILogger log); public Task> GetListOfAppsByName(string name); public Task GetAppByName(string name); public Task GetAppById(int appid); @@ -84,11 +84,11 @@ namespace GoldbergGUI.Core.Services private const string Database = "steamapps.cache"; private const string GameSchemaUrl = "https://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v2/"; - private IMvxLog _log; + private ILogger _log; private SQLiteAsyncConnection _db; - public async Task Initialize(IMvxLog log) + public async Task Initialize(ILogger log) { static SteamApps DeserializeSteamApps(Type type, string cacheString) { @@ -101,7 +101,7 @@ namespace GoldbergGUI.Core.Services _db = new SQLiteAsyncConnection(Database); //_db.CreateTable(); await _db.CreateTableAsync() - //.ContinueWith(x => _log.Debug("Table success!")) + //.ContinueWith(x => _log.LogDebug("Table success!")) .ConfigureAwait(false); var countAsync = await _db.Table().CountAsync().ConfigureAwait(false); @@ -109,7 +109,7 @@ namespace GoldbergGUI.Core.Services { foreach (var (appType, steamCache) in _caches) { - _log.Info($"Updating cache ({appType})..."); + _log.LogInformation($"Updating cache ({appType})..."); bool haveMoreResults; long lastAppId = 0; var client = new HttpClient(); @@ -152,21 +152,21 @@ namespace GoldbergGUI.Core.Services public async Task GetAppByName(string name) { - _log.Info($"Trying to get app {name}"); + _log.LogInformation($"Trying to get app {name}"); var comparableName = PrepareStringToCompare(name); var app = await _db.Table() .FirstOrDefaultAsync(x => x.AppType == AppTypeGame && x.ComparableName.Equals(comparableName)) .ConfigureAwait(false); - if (app != null) _log.Info($"Successfully got app {app}"); + if (app != null) _log.LogInformation($"Successfully got app {app}"); return app; } public async Task GetAppById(int appid) { - _log.Info($"Trying to get app with ID {appid}"); + _log.LogInformation($"Trying to get app with ID {appid}"); var app = await _db.Table().Where(x => x.AppType == AppTypeGame) .FirstOrDefaultAsync(x => x.AppId.Equals(appid)).ConfigureAwait(false); - if (app != null) _log.Info($"Successfully got app {app}"); + if (app != null) _log.LogInformation($"Successfully got app {app}"); return app; } @@ -178,7 +178,7 @@ namespace GoldbergGUI.Core.Services return achievementList; } - _log.Info($"Getting achievements for App {steamApp}"); + _log.LogInformation($"Getting achievements for App {steamApp}"); var client = new HttpClient(); client.DefaultRequestHeaders.UserAgent.ParseAdd(UserAgent); @@ -201,7 +201,7 @@ namespace GoldbergGUI.Core.Services var dlcList = new List(); if (steamApp != null) { - _log.Info($"Get DLC for App {steamApp}"); + _log.LogInformation($"Get DLC for App {steamApp}"); var task = AppDetails.GetAsync(steamApp.AppId); var steamAppDetails = await task.ConfigureAwait(true); if (steamAppDetails.Type == AppTypeGame) @@ -212,10 +212,10 @@ namespace GoldbergGUI.Core.Services .FirstOrDefaultAsync(y => y.AppId.Equals(x)).ConfigureAwait(true) ?? new SteamApp() { AppId = x, Name = $"Unknown DLC {x}", ComparableName = $"unknownDlc{x}", AppType = AppTypeDlc }; dlcList.Add(new DlcApp(result)); - _log.Debug($"{result.AppId}={result.Name}"); + _log.LogDebug($"{result.AppId}={result.Name}"); }); - _log.Info("Got DLC successfully..."); + _log.LogInformation("Got DLC successfully..."); // Get DLC from SteamDB // Get Cloudflare cookie (not implemented) @@ -232,15 +232,15 @@ namespace GoldbergGUI.Core.Services var client = new HttpClient(); client.DefaultRequestHeaders.UserAgent.ParseAdd(UserAgent); - _log.Info($"Get SteamDB App {steamApp}"); + _log.LogInformation($"Get SteamDB App {steamApp}"); var httpCall = client.GetAsync(steamDbUri); var response = await httpCall.ConfigureAwait(false); - _log.Debug(httpCall.Status.ToString()); - _log.Debug(response.EnsureSuccessStatusCode().ToString()); + _log.LogDebug(httpCall.Status.ToString()); + _log.LogDebug(response.EnsureSuccessStatusCode().ToString()); var readAsStringAsync = response.Content.ReadAsStringAsync(); var responseBody = await readAsStringAsync.ConfigureAwait(false); - _log.Debug(readAsStringAsync.Status.ToString()); + _log.LogDebug(readAsStringAsync.Status.ToString()); var parser = new HtmlParser(); var doc = parser.ParseDocument(responseBody); @@ -248,7 +248,7 @@ namespace GoldbergGUI.Core.Services var query1 = doc.QuerySelector("#dlc"); if (query1 != null) { - _log.Info("Got list of DLC from SteamDB."); + _log.LogInformation("Got list of DLC from SteamDB."); var query2 = query1.QuerySelectorAll(".app"); foreach (var element in query2) { @@ -269,28 +269,28 @@ namespace GoldbergGUI.Core.Services } } - dlcList.ForEach(x => _log.Debug($"{x.AppId}={x.Name}")); - _log.Info("Got DLC from SteamDB successfully..."); + dlcList.ForEach(x => _log.LogDebug($"{x.AppId}={x.Name}")); + _log.LogInformation("Got DLC from SteamDB successfully..."); } else { - _log.Error("Could not get DLC from SteamDB!"); + _log.LogError("Could not get DLC from SteamDB!"); } } catch (Exception e) { - _log.Error("Could not get DLC from SteamDB! Skipping..."); - _log.Error(e.ToString); + _log.LogError("Could not get DLC from SteamDB! Skipping..."); + _log.LogError(e.ToString()); } } else { - _log.Error("Could not get DLC: Steam App is not of type \"game\""); + _log.LogError("Could not get DLC: Steam App is not of type \"game\""); } } else { - _log.Error("Could not get DLC: Invalid Steam App"); + _log.LogError("Could not get DLC: Invalid Steam App"); } return dlcList; diff --git a/GoldbergGUI.Core/ViewModels/MainViewModel.cs b/GoldbergGUI.Core/ViewModels/MainViewModel.cs index 54580c7..666401a 100644 --- a/GoldbergGUI.Core/ViewModels/MainViewModel.cs +++ b/GoldbergGUI.Core/ViewModels/MainViewModel.cs @@ -1,9 +1,9 @@ using GoldbergGUI.Core.Models; using GoldbergGUI.Core.Services; using GoldbergGUI.Core.Utils; +using Microsoft.Extensions.Logging; using Microsoft.Win32; using MvvmCross.Commands; -using MvvmCross.Logging; using MvvmCross.Navigation; using MvvmCross.ViewModels; using System; @@ -42,20 +42,20 @@ namespace GoldbergGUI.Core.ViewModels private readonly ISteamService _steam; private readonly IGoldbergService _goldberg; - private readonly IMvxLog _log; + private readonly ILogger _log; private bool _mainWindowEnabled; private bool _goldbergApplied; private ObservableCollection _steamLanguages; private string _selectedLanguage; - private readonly IMvxLogProvider _logProvider; + private readonly ILoggerFactory _logProvider; - public MainViewModel(ISteamService steam, IGoldbergService goldberg, IMvxLogProvider logProvider, + public MainViewModel(ISteamService steam, IGoldbergService goldberg, ILoggerFactory logProvider, IMvxNavigationService navigationService) : base(logProvider, navigationService) { _steam = steam; _goldberg = goldberg; _logProvider = logProvider; - _log = logProvider.GetLogFor(); + _log = logProvider.CreateLogger(); _navigationService = navigationService; } @@ -71,9 +71,9 @@ namespace GoldbergGUI.Core.ViewModels { SteamLanguages = new ObservableCollection(_goldberg.Languages()); ResetForm(); - await _steam.Initialize(_logProvider.GetLogFor()).ConfigureAwait(false); + await _steam.Initialize(_logProvider.CreateLogger()).ConfigureAwait(false); var globalConfiguration = - await _goldberg.Initialize(_logProvider.GetLogFor()).ConfigureAwait(false); + await _goldberg.Initialize(_logProvider.CreateLogger()).ConfigureAwait(false); AccountName = globalConfiguration.AccountName; SteamId = globalConfiguration.UserSteamId; SelectedLanguage = globalConfiguration.Language; @@ -81,7 +81,7 @@ namespace GoldbergGUI.Core.ViewModels catch (Exception e) { Console.WriteLine(e); - _log.Error(e.Message); + _log.LogError(e.Message); throw; } @@ -237,7 +237,7 @@ namespace GoldbergGUI.Core.ViewModels get { var value = !DllPath.Contains("Path to game's steam_api(64).dll"); - if (!value) _log.Warn("No DLL selected! Skipping..."); + if (!value) _log.LogWarning("No DLL selected! Skipping..."); return value; } } @@ -296,7 +296,7 @@ namespace GoldbergGUI.Core.ViewModels if (dialog.ShowDialog() != true) { MainWindowEnabled = true; - _log.Warn("File selection canceled."); + _log.LogWarning("File selection canceled."); StatusText = "No file selected! Ready."; return; } @@ -326,7 +326,7 @@ namespace GoldbergGUI.Core.ViewModels if (GameName.Contains("Game name...")) { - _log.Error("No game name entered!"); + _log.LogError("No game name entered!"); return; } @@ -371,7 +371,7 @@ namespace GoldbergGUI.Core.ViewModels { if (AppId <= 0) { - _log.Error("Invalid Steam App!"); + _log.LogError("Invalid Steam App!"); return; } @@ -385,7 +385,7 @@ namespace GoldbergGUI.Core.ViewModels { if (AppId <= 0) { - _log.Error("Invalid Steam App!"); + _log.LogError("Invalid Steam App!"); return; } @@ -412,7 +412,7 @@ namespace GoldbergGUI.Core.ViewModels { if (AppId <= 0) { - _log.Error("Invalid Steam App!"); + _log.LogError("Invalid Steam App!"); return; } @@ -437,7 +437,7 @@ namespace GoldbergGUI.Core.ViewModels private async Task SaveConfig() { - _log.Info("Saving global settings..."); + _log.LogInformation("Saving global settings..."); var globalConfiguration = new GoldbergGlobalConfiguration { AccountName = AccountName, @@ -447,7 +447,7 @@ namespace GoldbergGUI.Core.ViewModels await _goldberg.SetGlobalSettings(globalConfiguration).ConfigureAwait(false); if (!DllSelected) return; - _log.Info("Saving Goldberg settings..."); + _log.LogInformation("Saving Goldberg settings..."); if (!GetDllPathDir(out var dirPath)) return; MainWindowEnabled = false; StatusText = "Saving..."; @@ -476,7 +476,7 @@ namespace GoldbergGUI.Core.ViewModels SelectedLanguage = globalConfiguration.Language; if (!DllSelected) return; - _log.Info("Reset form..."); + _log.LogInformation("Reset form..."); MainWindowEnabled = false; StatusText = "Resetting..."; await ReadConfig().ConfigureAwait(false); @@ -490,7 +490,7 @@ namespace GoldbergGUI.Core.ViewModels { if (!DllSelected) return; - _log.Info("Generate steam_interfaces.txt..."); + _log.LogInformation("Generate steam_interfaces.txt..."); MainWindowEnabled = false; StatusText = @"Generating ""steam_interfaces.txt""."; GetDllPathDir(out var dirPath); @@ -508,10 +508,10 @@ namespace GoldbergGUI.Core.ViewModels public IMvxCommand PasteDlcCommand => new MvxCommand(() => { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) return; - _log.Info("Trying to paste DLC list..."); + _log.LogInformation("Trying to paste DLC list..."); if (!(Clipboard.ContainsText(TextDataFormat.UnicodeText) || Clipboard.ContainsText(TextDataFormat.Text))) { - _log.Warn("Invalid DLC list!"); + _log.LogWarning("Invalid DLC list!"); } else { @@ -604,7 +604,7 @@ namespace GoldbergGUI.Core.ViewModels dirPath = Path.GetDirectoryName(DllPath); if (dirPath != null) return true; - _log.Error($"Invalid directory for {DllPath}."); + _log.LogError($"Invalid directory for {DllPath}."); return false; } } diff --git a/GoldbergGUI.Core/ViewModels/SearchResultViewModel.cs b/GoldbergGUI.Core/ViewModels/SearchResultViewModel.cs index 35f4dc2..d04a3d8 100644 --- a/GoldbergGUI.Core/ViewModels/SearchResultViewModel.cs +++ b/GoldbergGUI.Core/ViewModels/SearchResultViewModel.cs @@ -1,6 +1,6 @@ using GoldbergGUI.Core.Models; +using Microsoft.Extensions.Logging; using MvvmCross.Commands; -using MvvmCross.Logging; using MvvmCross.Navigation; using MvvmCross.ViewModels; using System.Collections.Generic; @@ -11,13 +11,13 @@ namespace GoldbergGUI.Core.ViewModels public class SearchResultViewModel : MvxNavigationViewModel>, IMvxViewModel, SteamApp> { private readonly IMvxNavigationService _navigationService; - private readonly IMvxLog _log; + private readonly ILogger _log; private IEnumerable _apps; - public SearchResultViewModel(IMvxLogProvider logProvider, IMvxNavigationService navigationService) : + public SearchResultViewModel(ILoggerFactory logProvider, IMvxNavigationService navigationService) : base(logProvider, navigationService) { - _log = logProvider.GetLogFor(typeof(SearchResultViewModel)); + _log = logProvider.CreateLogger();//.GetLogFor(typeof(SearchResultViewModel)); _navigationService = navigationService; } @@ -61,7 +61,7 @@ namespace GoldbergGUI.Core.ViewModels { if (Selected != null) { - _log.Info($"Successfully got app {Selected}"); + _log.LogInformation($"Successfully got app {Selected}"); await _navigationService.Close(this, Selected).ConfigureAwait(false); } } diff --git a/GoldbergGUI.WPF/GoldbergGUI.WPF.csproj b/GoldbergGUI.WPF/GoldbergGUI.WPF.csproj index d0e7dcb..0c67434 100644 --- a/GoldbergGUI.WPF/GoldbergGUI.WPF.csproj +++ b/GoldbergGUI.WPF/GoldbergGUI.WPF.csproj @@ -10,10 +10,11 @@ - - - - + + + + + diff --git a/GoldbergGUI.WPF/Setup.cs b/GoldbergGUI.WPF/Setup.cs index c9f6d78..33a3d7d 100644 --- a/GoldbergGUI.WPF/Setup.cs +++ b/GoldbergGUI.WPF/Setup.cs @@ -1,15 +1,18 @@ -using MvvmCross.Logging; +using Microsoft.Extensions.Logging; using MvvmCross.Platforms.Wpf.Core; using Serilog; +using Serilog.Extensions.Logging; using System.IO; namespace GoldbergGUI.WPF { public class Setup : MvxWpfSetup { - public override MvxLogProviderType GetDefaultLogProviderType() => MvxLogProviderType.Serilog; - - protected override IMvxLogProvider CreateLogProvider() + protected override ILoggerProvider CreateLogProvider() + { + return new SerilogLoggerProvider(); + } + protected override ILoggerFactory CreateLogFactory() { var logPath = Path.Combine(Directory.GetCurrentDirectory(), "goldberg_.log"); Log.Logger = new LoggerConfiguration() @@ -17,7 +20,7 @@ namespace GoldbergGUI.WPF .WriteTo.Console() .WriteTo.File(logPath, rollingInterval: RollingInterval.Day) .CreateLogger(); - return base.CreateLogProvider(); + return new SerilogLoggerFactory(); } }