Communicate.Archeo 0.3.0

There is a newer version of this package available.
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
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Communicate.Archeo" Version="0.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Communicate.Archeo --version 0.3.0
#r "nuget: Communicate.Archeo, 0.3.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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 finallyclause 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 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. 
.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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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 5,447 4/1/2022
1.2.4 3,802 3/24/2021
1.2.3 4,459 9/8/2020
1.2.2 698 8/14/2020
1.2.1 671 8/5/2020
1.2.0 844 3/26/2020
1.1.8 1,423 1/21/2020
1.1.7 1,765 11/15/2019
1.1.6 716 11/4/2019
1.1.5 747 10/30/2019
1.1.4 2,545 10/30/2019
1.1.3 542 10/29/2019
1.1.2 606 10/29/2019
1.1.1 523 10/23/2019
1.1.0 546 10/18/2019
1.0.19 1,278 7/26/2019
1.0.18 645 6/18/2019
1.0.17 560 6/18/2019
1.0.16 525 6/17/2019
1.0.15 571 6/14/2019
1.0.14 669 6/7/2019
1.0.13 622 5/6/2019
1.0.12 656 4/24/2019
1.0.11 615 4/24/2019
1.0.10 640 4/24/2019
1.0.9 624 3/27/2019
1.0.8 578 3/26/2019
1.0.7 586 3/26/2019
1.0.6 575 3/26/2019
1.0.5 583 3/25/2019
1.0.4 574 3/25/2019
1.0.3 618 3/22/2019
1.0.2 591 3/21/2019
1.0.1 2,384 2/21/2019
0.4.1 842 2/20/2019
0.4.0 685 2/13/2019
0.3.7 701 12/28/2018
0.3.6 675 12/28/2018
0.3.5 732 12/28/2018
0.3.4 792 10/30/2018
0.3.3 723 10/30/2018
0.3.2 772 10/29/2018
0.3.1 768 10/25/2018
0.3.0 755 10/23/2018
0.2.5 734 10/19/2018
0.2.4 726 10/19/2018
0.2.3 787 10/12/2018
0.2.2 752 10/12/2018
0.2.1 758 10/12/2018
0.2.0 783 10/12/2018
0.1.7 740 10/12/2018
0.1.6 752 10/11/2018
0.1.5 790 10/11/2018
0.1.4 760 10/11/2018
0.1.3 760 10/11/2018
0.1.2 778 10/11/2018
0.1.1 754 10/11/2018
0.1.0 772 10/11/2018