Skip to content

Commit 7dec124

Browse files
committed
Added internal logger
1 parent 0019e07 commit 7dec124

File tree

7 files changed

+57
-25
lines changed

7 files changed

+57
-25
lines changed

FroniusSolarClient.Examples/FroniusSolarClient.Examples.csproj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
55
<TargetFramework>netcoreapp2.2</TargetFramework>
66
</PropertyGroup>
77

8+
<ItemGroup>
9+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
10+
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
11+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
12+
</ItemGroup>
13+
814
<ItemGroup>
915
<ProjectReference Include="..\FroniusSolarClient\FroniusSolarClient.csproj" />
1016
</ItemGroup>

FroniusSolarClient.Examples/Program.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using FroniusSolarClient.Entities.SolarAPI.V1;
2+
using Microsoft.Extensions.DependencyInjection;
3+
using Microsoft.Extensions.Logging;
24
using System;
35
using System.Collections.Generic;
46

@@ -11,29 +13,31 @@ class Program
1113
/// Prints out the status of the last response header
1214
/// </summary>
1315
/// <param name="responseHeader"></param>
14-
static void OutputResponseHeader(CommonResponseHeader responseHeader)
16+
static void OutputResponseHeader(CommonResponseHeader responseHeader, ILogger logger)
1517
{
16-
Console.WriteLine($"{responseHeader.Status.Code} at {responseHeader.Timestamp}");
18+
logger.LogInformation($"Response Header Status - {responseHeader.Status.Code} at {responseHeader.Timestamp}");
1719
}
1820

1921
static void Main(string[] args)
2022
{
21-
var client = new SolarClient("10.1.1.124", 1, OutputResponseHeader);
23+
// Configure logger
24+
var serviceProvider = new ServiceCollection()
25+
.AddLogging(build => build.AddConsole())
26+
.Configure<LoggerFilterOptions>(opt => opt.MinLevel = LogLevel.Debug)
27+
.BuildServiceProvider();
28+
29+
var client = new SolarClient("10.1.1.124", 1, serviceProvider.GetService<ILogger<SolarClient>>(), OutputResponseHeader);
2230

2331
//GetArchiveDataOverPast24Hours(client);
24-
//GetRealTimeData(client);
32+
GetRealTimeData(client);
2533
}
2634

2735
#region RealtimeData
2836
static void GetRealTimeData(SolarClient client)
2937
{
30-
var data = client.GetCommonInverterData(2, Scope.System);
38+
var data = client.GetMinMaxInverterData();
3139

32-
Console.WriteLine(data.TotalEnergy);
33-
34-
var data2 = client.GetMinMaxInverterData();
35-
36-
Console.WriteLine(data2.MaxCurrentDayAcPower);
40+
Console.WriteLine(data.MaxCurrentDayAcPower);
3741
}
3842
#endregion
3943

FroniusSolarClient/FroniusSolarClient.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
</PropertyGroup>
2525

2626
<ItemGroup>
27+
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
2728
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
2829
</ItemGroup>
2930

FroniusSolarClient/RestClient.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using FroniusSolarClient.Entities.SolarAPI.V1;
22
using FroniusSolarClient.Helpers;
3+
using Microsoft.Extensions.Logging;
34
using System;
45
using System.Net.Http;
56

@@ -13,13 +14,13 @@ internal class RestClient
1314

1415
private readonly HttpClient _httpClient;
1516
private readonly string _url;
16-
17+
private readonly ILogger _logger;
1718
/// <summary>
1819
/// This action delegate provides access to the response headers
1920
/// </summary>
20-
private Action<CommonResponseHeader> _commonResponseHeader;
21+
private Action<CommonResponseHeader, ILogger> _commonResponseHeader;
2122

22-
public RestClient(HttpClient httpClient, string url, Action<CommonResponseHeader> commonResponseHeader)
23+
public RestClient(HttpClient httpClient, string url, Action<CommonResponseHeader, ILogger> commonResponseHeader, ILogger logger)
2324
{
2425
if (String.IsNullOrEmpty(url))
2526
throw new ArgumentException("URL not specified");
@@ -28,6 +29,7 @@ public RestClient(HttpClient httpClient, string url, Action<CommonResponseHeader
2829
this._url = url;
2930

3031
_commonResponseHeader = commonResponseHeader;
32+
_logger = logger;
3133
}
3234

3335
/// <summary>
@@ -39,6 +41,7 @@ public HttpRequestMessage PrepareHTTPMessage(string cgi)
3941
var requestMessage = new HttpRequestMessage();
4042
requestMessage.RequestUri = new Uri($"{_url}{cgi}");
4143
requestMessage.Method = HttpMethod.Get;
44+
_logger.LogInformation($"RequestUri: {requestMessage.RequestUri}");
4245
return requestMessage;
4346
}
4447

@@ -60,16 +63,19 @@ public Response<T> GetResponse<T>(string endpoint)
6063
httpResponse.EnsureSuccessStatusCode();
6164

6265
var content = httpResponse.Content.ReadAsStringAsync().Result;
66+
_logger.LogInformation($"Response Code: {httpResponse.StatusCode.ToString()}");
67+
_logger.LogDebug($"Content: {content}");
68+
6369
var response = JsonHelper.DeSerializeResponse<Response<T>>(content);
6470

6571
if (_commonResponseHeader != null)
66-
_commonResponseHeader.Invoke(response.Head);
72+
_commonResponseHeader.Invoke(response.Head, _logger);
6773

6874
return response;
6975
}
7076
catch (System.Exception ex)
7177
{
72-
Console.WriteLine($"An error occured: {ex.Message}");
78+
_logger.LogError($"An error occured: {ex.Message}");
7379
return null;
7480
}
7581
}

FroniusSolarClient/Services/InverterRealtimeDataService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ namespace FroniusSolarClient.Services
1212
internal class InverterRealtimeDataService : BaseDataService
1313
{
1414
private readonly string _cgi = "GetInverterRealtimeData.cgi";
15-
15+
1616
public InverterRealtimeDataService(RestClient restClient)
1717
: base(restClient)
18-
{
18+
{
1919
}
2020

2121

@@ -32,7 +32,7 @@ protected string BuildQueryString(int deviceId, Scope scope, DataCollection data
3232

3333
public CumulationInverterData GetCumulationInverterData(int deviceId = 1, Scope scope = Scope.Device)
3434
{
35-
string baseEndpointURL = _cgi + BuildQueryString(deviceId, scope, DataCollection.CumulationInverterData);
35+
string baseEndpointURL = _cgi + BuildQueryString(deviceId, scope, DataCollection.CumulationInverterData);
3636
return GetDataServiceResponse<CumulationInverterData>(baseEndpointURL).Body.Data;
3737
}
3838

FroniusSolarClient/SolarClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using FroniusSolarClient.Services;
55
using System;
66
using System.Collections.Generic;
7+
using Microsoft.Extensions.Logging;
78

89
namespace FroniusSolarClient
910
{
@@ -19,11 +20,11 @@ public class SolarClient
1920
private InverterRealtimeDataService _inverterRealtimeDataService;
2021
private InverterArchiveDataService _inverterArchiveDataService;
2122

22-
public SolarClient(string url, int version, Action<CommonResponseHeader> commonResponseHeader = null)
23+
public SolarClient(string url, int version, ILogger logger, Action<CommonResponseHeader, ILogger> commonResponseHeader = null)
2324
{
2425
_configuration = new SolarClientConfiguration(url, version);
25-
_restClient = new RestClient(null, _configuration.GetBaseURL(), commonResponseHeader);
26-
26+
_restClient = new RestClient(null, _configuration.GetBaseURL(), commonResponseHeader, logger);
27+
2728

2829
_inverterRealtimeDataService = new InverterRealtimeDataService(_restClient);
2930
_inverterArchiveDataService = new InverterArchiveDataService(_restClient);

README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,31 @@ Install the [NuGet package](https://www.nuget.org/packages/FroniusSolarClient.Co
99

1010
```csharp
1111
using FroniusSolarClient.Entities.SolarAPI.V1;
12+
using Microsoft.Extensions.DependencyInjection;
13+
using Microsoft.Extensions.Logging;
1214

13-
static void OutputResponseHeader(CommonResponseHeader responseHeader)
15+
16+
static void OutputResponseHeader(CommonResponseHeader responseHeader, ILogger logger)
1417
{
15-
Console.WriteLine($"{responseHeader.Status.Code} at {responseHeader.Timestamp}");
18+
logger.LogInformation($"Response Header Status - {responseHeader.Status.Code} at {responseHeader.Timestamp}");
1619
}
1720

18-
var client = new SolarClient("IP_ADDRESS", 1, OutputResponseHeader);
21+
// Configure logger
22+
var serviceProvider = new ServiceCollection()
23+
.AddLogging(build => build.AddConsole())
24+
.Configure<LoggerFilterOptions>(opt => opt.MinLevel = LogLevel.Debug)
25+
.BuildServiceProvider();
26+
27+
var client = new SolarClient("IP_ADDRESS", 1, serviceProvider.GetService<ILogger<SolarClient>>(), OutputResponseHeader);
1928
```
2029

2130
see [examples](#examples)
2231

32+
## Logging
33+
34+
Internal logging has been implemented so you can parse in your own logger class see [Microsoft.Extensions.Logging](https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger?view=aspnetcore-2.2)
35+
36+
2337
## Implementation
2438

2539
[Realtime Requests](#realtime-requests)

0 commit comments

Comments
 (0)