InnerDrive.Logging
5.3.1519
dotnet add package InnerDrive.Logging --version 5.3.1519
NuGet\Install-Package InnerDrive.Logging -Version 5.3.1519
<PackageReference Include="InnerDrive.Logging" Version="5.3.1519" />
<PackageVersion Include="InnerDrive.Logging" Version="5.3.1519" />
<PackageReference Include="InnerDrive.Logging" />
paket add InnerDrive.Logging --version 5.3.1519
#r "nuget: InnerDrive.Logging, 5.3.1519"
#:package InnerDrive.Logging@5.3.1519
#addin nuget:?package=InnerDrive.Logging&version=5.3.1519
#tool nuget:?package=InnerDrive.Logging&version=5.3.1519
Inner Drive Extensible Architeture
The Inner Drive Extensible Architecture implements common .NET development situations including time zones, money, measurements and conversions, and Microsoft Azure features.
InnerDrive.Logging
Features
- Microsoft Azure-based event and audit logging capabiliites
- Abstraction layers for sending email through Postmark and SendGrid
- NLog targets for SendGrid, Postmark, and Azure tables
Prerequisites
This package runs on .NET 10. It depends on these packages:
To use the Azure logging tools, you will need an Azure subscription and connection string to an Azure tables instance. To use Postmark email tools, you will need a Postmark subscription. To use SendGrid, you'll need a Twilio SendGrid subscription, which you can sign up for through the Azure portal.
Usage
To use the ActionLog
Configure the actionLog and Azure Key Vault settings:
{
"actionLog": {
"baseTableName": "myAppLog",
"partitionedSearchCutover": "2026-07-02T09:00-05:00"
},
"keyVaultSecretProviderThrowExceptions": true,
"keyVaultTenantId": "{key vault tenant ID}",
"keyVaultUrl": "{key vault URL}"
}
The Key Vault Secrets collection should contain the following:
- storageAccountKey
- storageAccountName
- storageTablesUri
- storageConnectionString
Once set up, adding an event is straightforward:
var repository = new AzureLogRepository(_accountName, _accountKey, _tablesUri)
{
ApplicationName = ApplicationName,
BaseTableName = BaseTableName,
Source = "AzureLogRepository.Write example"
};
var eventInfo = new LogEventInfo(LogLevel.Info, GetType().Name, messageBody)
{
Properties =
{
["Computer name"] = Environment.MachineName,
["OS Version"] = Environment.OSVersion.ToString()
}
};
var logEntry = AzureLogEntry.Map(eventInfo, ApplicationName);
var result = await repository.WriteAsync(logEntry, CancellationToken.None);
Trace.WriteLine($"Async write result: {result.Status}");
Reading log entries is also easy:
var now = DateTimeOffset.Now;
var range = new DateRange(now.AddHours(-24), now);
var result = await repository.FindAsync(range);
foreach(var item in result)
{
Trace.WriteLine(item);
}
partitionedSearchCutover setting
If you have used versions of the ActionLog prior to v5.3.9679 (2026-07-01), the enhancements in that release will not work with your existing logs. Add the partitionedSearchCutover setting to instruct the ActionLog.FindAsync method to use the older, slower search algorithm on logs made earlier than the date you first started using v5.1.9679 or later. The component parses the setting value as a culture-insensitive DateTimeOffset value, so any legal ISO-8601 value should be understood.
If partitionedSearchCutover is missing or invalid, the component will use 2026-07-01T00:00Z.
For example, if you deploy an app with v5.3.9679 on 20 July 2026 at noon Chicago time, you would want to add the setting: "partitionedSearchCutover": "2026-07-20 12:00 -05:00".
NLog targets
NLog.config settings:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Info"
internalLogFile="c:\temp\internal-nlog.txt"
throwExceptions="true"
throwConfigExceptions="true">
<extensions>
<add assembly="InnerDrive.Logging"/>
</extensions>
<targets async="false">
<target name="logconsole" xsi:type="Console" />
<target name="logfile" xsi:type="File" fileName="c:\Temp\nlog-all-${shortdate}.txt"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}"/>
<target xsi:type="AzureTableTarget"
name="azureTable"
applicationName="Logging.Test"
baseTableName="InnerDriveLogTest"
/>
<target xsi:type="PostmarkTarget"
name="postmark"
applicationName="Logging.Test via Postmark"
from="noreply@inner-drive.com"
subject="NLog Postmark target"
to="nerdly@contoso.org"
/>
<target xsi:type="SendGridTarget"
name="sendgrid"
applicationName="Logging.Test via SendGrid"
from="noreply@inner-drive.com"
subject="NLog SendGrid target"
to="nerdly@contoso.org"
/>
</targets>
<rules>
<logger name="*" minlevel="Fatal" writeto="postmark,sendgrid" />
<logger name="*" minlevel="Warn" writeTo="azureTable" />
<logger name="*" minlevel="Info" writeTo="logfile" />
<logger name="*" minlevel="Debug" writeTo="logconsole" />
</rules>
</nlog>
The Inner Drive Technology website has a full SDK and example code. We also have a demo weather site that uses all the IDEA components.
Feedback
Comments or questions? Send feedback
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Azure.Data.Tables (>= 12.11.0)
- Humanizer (>= 3.0.10)
- InnerDrive.Azure (>= 5.3.1519)
- InnerDrive.Core (>= 5.3.1519)
- NLog (>= 6.1.3)
- Postmark (>= 5.3.0)
- SendGrid (>= 9.29.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.3.1519 | 72 | 7/1/2026 |
| 5.3.1508 | 97 | 6/25/2026 |
| 5.3.1498 | 115 | 6/18/2026 |
| 5.3.1495 | 98 | 6/17/2026 |
| 5.3.1263 | 692 | 11/21/2025 |
| 5.2.1247.1 | 334 | 10/12/2025 |
| 5.2.1235.1 | 231 | 10/5/2025 |
| 5.2.1076.1 | 650 | 2/14/2025 |
| 5.2.989.1 | 369 | 11/2/2024 |
| 5.2.938.1 | 383 | 9/7/2024 |
| 5.1.926.1 | 239 | 9/2/2024 |
| 5.1.871.1 | 414 | 6/6/2024 |
| 5.1.854.1 | 369 | 5/21/2024 |
| 5.1.844.1 | 418 | 3/27/2024 |
| 5.0.826.1 | 508 | 1/6/2024 |
| 5.0.816.1 | 311 | 12/24/2023 |
Improved performance of ActionLog lookups; see ReadMe.md