Improved logging. Updated nuget packages
This commit is contained in:
parent
7a4bd639fb
commit
1cecd4ba2e
@ -9,21 +9,34 @@ namespace ApplicationServices
|
|||||||
{
|
{
|
||||||
public static class LibraryCommands
|
public static class LibraryCommands
|
||||||
{
|
{
|
||||||
public static async Task<(int totalCount, int newCount)> IndexLibraryAsync(ILoginCallback callback)
|
public static async Task<(int totalCount, int newCount)> ImportLibraryAsync(ILoginCallback callback)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
var audibleApiActions = new AudibleApiActions();
|
var audibleApiActions = new AudibleApiActions();
|
||||||
var items = await audibleApiActions.GetAllLibraryItemsAsync(callback);
|
var items = await audibleApiActions.GetAllLibraryItemsAsync(callback);
|
||||||
var totalCount = items.Count;
|
var totalCount = items.Count;
|
||||||
|
Serilog.Log.Logger.Debug($"GetAllLibraryItems: Total count {totalCount}");
|
||||||
|
|
||||||
var libImporter = new LibraryImporter();
|
var libImporter = new LibraryImporter();
|
||||||
var newCount = await Task.Run(() => libImporter.Import(items));
|
var newCount = await Task.Run(() => libImporter.Import(items));
|
||||||
|
Serilog.Log.Logger.Debug($"Import: New count {newCount}");
|
||||||
|
|
||||||
await Task.Run(() => SearchEngineCommands.FullReIndex());
|
await Task.Run(() => SearchEngineCommands.FullReIndex());
|
||||||
|
Serilog.Log.Logger.Debug("FullReIndex: success");
|
||||||
|
|
||||||
return (totalCount, newCount);
|
return (totalCount, newCount);
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Serilog.Log.Logger.Error(ex, "Error importing library");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static int UpdateTags(this LibationContext context, Book book, string newTags)
|
public static int UpdateTags(this LibationContext context, Book book, string newTags)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
book.UserDefinedItem.Tags = newTags;
|
book.UserDefinedItem.Tags = newTags;
|
||||||
|
|
||||||
@ -34,5 +47,11 @@ namespace ApplicationServices
|
|||||||
|
|
||||||
return qtyChanges;
|
return qtyChanges;
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Serilog.Log.Logger.Error(ex, "Error updating tags");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,13 +12,13 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.1">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.0" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.1">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@ -83,9 +83,9 @@ namespace FileManager
|
|||||||
catch (IOException)
|
catch (IOException)
|
||||||
{
|
{
|
||||||
try { resave(); }
|
try { resave(); }
|
||||||
catch (IOException)
|
catch (IOException ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine("...that's not good");
|
Serilog.Log.Logger.Error(ex, "Error saving FilePaths.json");
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,9 +105,9 @@ namespace FileManager
|
|||||||
catch (IOException)
|
catch (IOException)
|
||||||
{
|
{
|
||||||
try { resave(); }
|
try { resave(); }
|
||||||
catch (IOException)
|
catch (IOException ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine("...that's not good");
|
Serilog.Log.Logger.Error(ex, "Error saving QuickFilters.json");
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ namespace InternalUtilities
|
|||||||
|
|
||||||
private async Task<List<Item>> getItemsAsync(ILoginCallback callback)
|
private async Task<List<Item>> getItemsAsync(ILoginCallback callback)
|
||||||
{
|
{
|
||||||
var api = await getApiAsync(callback);
|
var api = await EzApiCreator.GetApiAsync(AudibleApiStorage.IdentityTokensFile, callback, Configuration.Instance.LocaleCountryCode);
|
||||||
var items = await AudibleApiExtensions.GetAllLibraryItemsAsync(api);
|
var items = await AudibleApiExtensions.GetAllLibraryItemsAsync(api);
|
||||||
|
|
||||||
// remove episode parents
|
// remove episode parents
|
||||||
@ -62,20 +62,6 @@ namespace InternalUtilities
|
|||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<Api> getApiAsync(ILoginCallback callback)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return await EzApiCreator.GetApiAsync(AudibleApiStorage.IdentityTokensFile, callback, Configuration.Instance.LocaleCountryCode);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Serilog.Log.Logger.Error(ex, "Error getting Audible API");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<IValidator> getValidators()
|
private static List<IValidator> getValidators()
|
||||||
{
|
{
|
||||||
var type = typeof(IValidator);
|
var type = typeof(IValidator);
|
||||||
|
|||||||
@ -27,11 +27,11 @@ namespace InternalUtilities
|
|||||||
ResponseGroups = LibraryOptions.ResponseGroupOptions.ALL_OPTIONS
|
ResponseGroups = LibraryOptions.ResponseGroupOptions.ALL_OPTIONS
|
||||||
});
|
});
|
||||||
|
|
||||||
string pageStr = null;
|
var pageStr = page.ToString();
|
||||||
|
|
||||||
LibraryDtoV10 libResult;
|
LibraryDtoV10 libResult;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
pageStr = page.ToString();
|
|
||||||
// important! use this convert method
|
// important! use this convert method
|
||||||
libResult = LibraryDtoV10.FromJson(pageStr);
|
libResult = LibraryDtoV10.FromJson(pageStr);
|
||||||
}
|
}
|
||||||
@ -43,6 +43,8 @@ namespace InternalUtilities
|
|||||||
|
|
||||||
if (!libResult.Items.Any())
|
if (!libResult.Items.Any())
|
||||||
break;
|
break;
|
||||||
|
else
|
||||||
|
Serilog.Log.Logger.Debug($"Page {i}: {libResult.Items.Length} results");
|
||||||
|
|
||||||
allItems.AddRange(libResult.Items);
|
allItems.AddRange(libResult.Items);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,8 +13,18 @@ namespace LibationWinForm.BookLiberation
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AppendError(Exception ex) => AppendText("ERROR: " + ex.Message);
|
public void AppendError(Exception ex)
|
||||||
public void AppendText(string text) => logTb.UIThread(() => logTb.AppendText($"{DateTime.Now} {text}{Environment.NewLine}"));
|
{
|
||||||
|
Serilog.Log.Logger.Error(ex, "Automated backup: error");
|
||||||
|
appendText("ERROR: " + ex.Message);
|
||||||
|
}
|
||||||
|
public void AppendText(string text)
|
||||||
|
{
|
||||||
|
Serilog.Log.Logger.Debug($"Automated backup: {text}");
|
||||||
|
appendText(text);
|
||||||
|
}
|
||||||
|
private void appendText(string text)
|
||||||
|
=> logTb.UIThread(() => logTb.AppendText($"{DateTime.Now} {text}{Environment.NewLine}"));
|
||||||
|
|
||||||
public void FinalizeUI()
|
public void FinalizeUI()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -13,11 +13,10 @@ namespace LibationWinForm.BookLiberation
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
System.IO.TextWriter origOut = Console.Out;
|
System.IO.TextWriter origOut { get; } = Console.Out;
|
||||||
private void DecryptForm_Load(object sender, EventArgs e)
|
private void DecryptForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// redirect Console.WriteLine to console, textbox
|
// redirect Console.WriteLine to console, textbox
|
||||||
System.IO.TextWriter origOut = Console.Out;
|
|
||||||
var controlWriter = new RichTextBoxTextWriter(this.rtbLog);
|
var controlWriter = new RichTextBoxTextWriter(this.rtbLog);
|
||||||
var multiLogger = new MultiTextWriter(origOut, controlWriter);
|
var multiLogger = new MultiTextWriter(origOut, controlWriter);
|
||||||
Console.SetOut(multiLogger);
|
Console.SetOut(multiLogger);
|
||||||
@ -58,12 +57,18 @@ namespace LibationWinForm.BookLiberation
|
|||||||
public void SetCoverImage(byte[] coverBytes)
|
public void SetCoverImage(byte[] coverBytes)
|
||||||
=> pictureBox1.UIThread(() => pictureBox1.Image = ImageReader.ToImage(coverBytes));
|
=> pictureBox1.UIThread(() => pictureBox1.Image = ImageReader.ToImage(coverBytes));
|
||||||
|
|
||||||
public static void AppendError(Exception ex) => AppendText("ERROR: " + ex.Message);
|
public void AppendError(Exception ex)
|
||||||
public static void AppendText(string text) =>
|
{
|
||||||
// redirected to log textbox
|
Serilog.Log.Logger.Error(ex, "Decrypt form: error");
|
||||||
Console.WriteLine($"{DateTime.Now} {text}")
|
appendText("ERROR: " + ex.Message);
|
||||||
//logTb.UIThread(() => logTb.AppendText($"{DateTime.Now} {text}{Environment.NewLine}"))
|
}
|
||||||
;
|
public void AppendText(string text)
|
||||||
|
{
|
||||||
|
Serilog.Log.Logger.Debug($"Decrypt form: {text}");
|
||||||
|
appendText(text);
|
||||||
|
}
|
||||||
|
private void appendText(string text) => Console.WriteLine($"{DateTime.Now} {text}");
|
||||||
|
|
||||||
|
|
||||||
public void UpdateProgress(int percentage) => progressBar1.UIThread(() => progressBar1.Value = percentage);
|
public void UpdateProgress(int percentage) => progressBar1.UIThread(() => progressBar1.Value = percentage);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,12 +19,11 @@ namespace LibationWinForm
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
(TotalBooksProcessed, NewBooksAdded) = await LibraryCommands.IndexLibraryAsync(new Login.WinformResponder());
|
(TotalBooksProcessed, NewBooksAdded) = await LibraryCommands.ImportLibraryAsync(new Login.WinformResponder());
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var msg = "Error importing library. Please try again. If this happens after 2 or 3 tries, contact administrator";
|
var msg = "Error importing library. Please try again. If this still happens after 2 or 3 tries, stop and contact administrator";
|
||||||
Serilog.Log.Logger.Error(ex, msg);
|
|
||||||
MessageBox.Show(msg, "Error importing library", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
MessageBox.Show(msg, "Error importing library", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using Dinah.Core.Logging;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
|
|
||||||
namespace LibationWinForm
|
namespace LibationWinForm
|
||||||
@ -45,11 +46,29 @@ Go to Import > Scan Library
|
|||||||
|
|
||||||
private static void init()
|
private static void init()
|
||||||
{
|
{
|
||||||
|
// default. for reference. output example:
|
||||||
|
// 2019-11-26 08:48:40.224 -05:00 [DBG] Begin Libation
|
||||||
|
var default_outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}";
|
||||||
|
// with class and method info. output example:
|
||||||
|
// 2019-11-26 08:48:40.224 -05:00 [DBG] (at LibationWinForm.Program.init()) Begin Libation
|
||||||
|
var code_outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] (at {Caller}) {Message:lj}{NewLine}{Exception}";
|
||||||
|
|
||||||
|
|
||||||
var logPath = System.IO.Path.Combine(FileManager.Configuration.Instance.LibationFiles, "Log.log");
|
var logPath = System.IO.Path.Combine(FileManager.Configuration.Instance.LibationFiles, "Log.log");
|
||||||
|
|
||||||
Log.Logger = new LoggerConfiguration()
|
Log.Logger = new LoggerConfiguration()
|
||||||
|
.Enrich.WithCaller()
|
||||||
.MinimumLevel.Debug()
|
.MinimumLevel.Debug()
|
||||||
.WriteTo.File(logPath, rollingInterval: RollingInterval.Month)
|
.WriteTo.File(logPath,
|
||||||
|
rollingInterval: RollingInterval.Month,
|
||||||
|
outputTemplate: code_outputTemplate)
|
||||||
.CreateLogger();
|
.CreateLogger();
|
||||||
|
|
||||||
|
Log.Logger.Debug("Begin Libation");
|
||||||
|
|
||||||
|
// .Here() captures debug info via System.Runtime.CompilerServices attributes. Warning: expensive
|
||||||
|
//var withLineNumbers_outputTemplate = "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message}{NewLine}in method {MemberName} at {FilePath}:{LineNumber}{NewLine}{Exception}{NewLine}";
|
||||||
|
//Log.Logger.Here().Debug("Begin Libation. Debug with line numbers");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
-- begin VERSIONING ---------------------------------------------------------------------------------------------------------------------
|
-- begin VERSIONING ---------------------------------------------------------------------------------------------------------------------
|
||||||
https://github.com/rmcrackan/Libation/releases
|
https://github.com/rmcrackan/Libation/releases
|
||||||
|
|
||||||
|
v3.1-beta.6 : Improved logging
|
||||||
v3.1-beta.5 : Improved importing
|
v3.1-beta.5 : Improved importing
|
||||||
v3.1-beta.4 : Added beta-specific logging
|
v3.1-beta.4 : Added beta-specific logging
|
||||||
v3.1-beta.3 : fixed known performance issue: Full-screen grid is slow to respond loading when books aren't liberated
|
v3.1-beta.3 : fixed known performance issue: Full-screen grid is slow to respond loading when books aren't liberated
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user