Communicate.Archeo
0.3.0
See the version list below for details.
dotnet add package Communicate.Archeo --version 0.3.0
NuGet\Install-Package Communicate.Archeo -Version 0.3.0
<PackageReference Include="Communicate.Archeo" Version="0.3.0" />
paket add Communicate.Archeo --version 0.3.0
#r "nuget: Communicate.Archeo, 0.3.0"
// Install Communicate.Archeo as a Cake Addin #addin nuget:?package=Communicate.Archeo&version=0.3.0 // Install Communicate.Archeo as a Cake Tool #tool nuget:?package=Communicate.Archeo&version=0.3.0
Usage
This nuget package supports dependency injection and currently requires .net cores HttpClientFactory
(a version using the old HttpClient is on the docket, as well as a version using the built in Microsoft log framework). You also need to define a IBackupLogger that logs failures when the primary logging fails. Let's begin with the IBackupLogger:
public class BackupLogger : IBackupLogger
{
private string AiKey { get; set; }
private TelemetryClient telemetryClient;
public BackupLogger()
{
AiKey = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process);
telemetryClient = new TelemetryClient() { InstrumentationKey = AiKey };
}
public void LogInformation(string log)
{
var evt = new EventTelemetry(log);
telemetryClient.TrackEvent(evt);
}
public void LogError(string message, List<LogStep> logSteps)
{
telemetryClient.TrackTrace(message, new Dictionary<string, string>() { { "Logstep object", JsonConvert.SerializeObject(logSteps) } });
}
public void LogException(Exception e, List<LogStep> logSteps)
{
telemetryClient.TrackException(e, new Dictionary<string, string>() { { "Logstep object", JsonConvert.SerializeObject(logSteps) } });
}
}
This is a simple backup logger that uses Application Insights. As long as you override the required methods you can use any backup logger you want to.
Using DI
In your startup.cs
you need to declare a HttpClient. You can name it whatever you want but a default name is supplied in the ArcheoDefaults
constants class:
services.AddHttpClient(ArcheoDefaults.HttpClientName, client =>
{
client.BaseAddress = new Uri(ArcheoDefaults.ArcheoEndpoint);
client.DefaultRequestHeaders.Add("APIKEY", GetAppSetting("ArcheoApiKey"));
});
You also need to add the IArcheLogger
itself as a scoped service. You can use dependency injection to insert both the IHttpFactory
and the IBackupLogger
or you can supply them explicitly:
services.AddScoped<IArcheoLogger>(sp => new ArcheoLogger(sp.GetService<IHttpClientFactory>(), new BackupLogger()));
Or
services.AddScoped<IBackupLogger, BackupLogger>();
services.AddScoped<IArcheoLogger, ArcheoLogger>();
Setting up the logger
To avoid having to send every parameter every time you use the logger this nuget provides the Arche.LogBase
object. This object is used if parameters supplied on logging are null. The LogBase should be instantiated as early in the pipeline as possible. You simply set the object like this:
logger.LogBase = new ArcheoLogBase()
{
MessageType = messageType,
Reciever = partyConfig.ReceiverId,
Sender = partyConfig.SenderId,
TransactionId = transactionId,
TransactionTag = transactionTag,
TransactionType = partyConfig.DocumentType
};
Logging
If you set up the LogBase
you only need 2-3 parameters when logging. If you need to override any of the LogBase params on only a single log entry just supply the parameter. This nuget provides 4 logging methods as of now. Please see the code comments for details. Here are some simple examples that only work if LogBase is used:
archeo.LogException((Exception)e, $"Exception occured in {nameof(test)}");
archeo.LogHttpFailure((HttpResponseMessage)result, "Sending file to APIM failed");
archeo.LogSuccess(encoding.GetBytes(fileContent), "File successfully downloaded", $"file.file");
archeo.LogFailure(fileContent, "Something failed")
Sending logs
After logging you share of logs you need to call await archeo.SendLogs()
. This is usually done in the finally
clause in the catch all, but you are free to do this whenever you want. When logs are sent the list of logged steps is cleared but the LogBase is kept in case you want to log more withing the same scope. If you want to clear both objects you can call IArcheoLogger.Clear()
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
- Microsoft.Extensions.Http (>= 2.1.1)
- Newtonsoft.Json (>= 11.0.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Communicate.Archeo:
Package | Downloads |
---|---|
Communicate.Archeo.BackupLogger.ApplicationInsights
Backup logger that uses Application insights as the logging provider |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.5 | 9,497 | 4/1/2022 |
1.2.4 | 4,009 | 3/24/2021 |
1.2.3 | 4,486 | 9/8/2020 |
1.2.2 | 721 | 8/14/2020 |
1.2.1 | 690 | 8/5/2020 |
1.2.0 | 871 | 3/26/2020 |
1.1.8 | 1,448 | 1/21/2020 |
1.1.7 | 1,793 | 11/15/2019 |
1.1.6 | 751 | 11/4/2019 |
1.1.5 | 782 | 10/30/2019 |
1.1.4 | 2,584 | 10/30/2019 |
1.1.3 | 571 | 10/29/2019 |
1.1.2 | 640 | 10/29/2019 |
1.1.1 | 558 | 10/23/2019 |
1.1.0 | 575 | 10/18/2019 |
1.0.19 | 1,302 | 7/26/2019 |
1.0.18 | 680 | 6/18/2019 |
1.0.17 | 595 | 6/18/2019 |
1.0.16 | 559 | 6/17/2019 |
1.0.15 | 604 | 6/14/2019 |
1.0.14 | 697 | 6/7/2019 |
1.0.13 | 657 | 5/6/2019 |
1.0.12 | 692 | 4/24/2019 |
1.0.11 | 652 | 4/24/2019 |
1.0.10 | 676 | 4/24/2019 |
1.0.9 | 659 | 3/27/2019 |
1.0.8 | 613 | 3/26/2019 |
1.0.7 | 615 | 3/26/2019 |
1.0.6 | 603 | 3/26/2019 |
1.0.5 | 617 | 3/25/2019 |
1.0.4 | 610 | 3/25/2019 |
1.0.3 | 653 | 3/22/2019 |
1.0.2 | 626 | 3/21/2019 |
1.0.1 | 2,495 | 2/21/2019 |
0.4.1 | 891 | 2/20/2019 |
0.4.0 | 716 | 2/13/2019 |
0.3.7 | 731 | 12/28/2018 |
0.3.6 | 709 | 12/28/2018 |
0.3.5 | 759 | 12/28/2018 |
0.3.4 | 828 | 10/30/2018 |
0.3.3 | 756 | 10/30/2018 |
0.3.2 | 805 | 10/29/2018 |
0.3.1 | 802 | 10/25/2018 |
0.3.0 | 797 | 10/23/2018 |
0.2.5 | 775 | 10/19/2018 |
0.2.4 | 760 | 10/19/2018 |
0.2.3 | 830 | 10/12/2018 |
0.2.2 | 791 | 10/12/2018 |
0.2.1 | 796 | 10/12/2018 |
0.2.0 | 827 | 10/12/2018 |
0.1.7 | 779 | 10/12/2018 |
0.1.6 | 789 | 10/11/2018 |
0.1.5 | 830 | 10/11/2018 |
0.1.4 | 798 | 10/11/2018 |
0.1.3 | 797 | 10/11/2018 |
0.1.2 | 816 | 10/11/2018 |
0.1.1 | 797 | 10/11/2018 |
0.1.0 | 816 | 10/11/2018 |