NLog EventHubTarget for writing to Azure Event Hubs datastreams
$ dotnet add package NLog.Extensions.AzureEventHub| Package Name | NuGet | Description |
|---|---|---|
| NLog.Extensions.AzureEventHub | Azure EventHubs |
<extensions>
<add assembly="NLog.Extensions.AzureEventHub" />
</extensions>
<targets>
<target xsi:type="AzureEventHub"
name="String"
layout="Layout"
connectionString="Layout"
eventHubName="Layout"
partitionKey="Layout"
contentType="Layout"
messageId="Layout"
correlationId="Layout">
<messageProperty name="level" layout="${level}" />
<messageProperty name="exception" layout="${exception:format=shorttype}" includeEmptyValue="false" />
<layout type="JsonLayout" includeAllProperties="true">
<attribute name="time" layout="${longdate}" />
<attribute name="message" layout="${message}" />
<attribute name="threadid" layout="${threadid}" />
<attribute name="exception" layout="${exception:format=tostring}" />
</layout>
</target>
</targets>
name - Name of the target.
connectionString - Azure storage connection string. Layout Required.
eventHubName - Overrides the EntityPath in the ConnectionString. Layout
partitionKey - Partition-Key which EventHub uses to generate PartitionId-hash. Layout (Default='0')
layout - EventData Body Text to be rendered and encoded as UTF8. Layout.
contentType - EventData ContentType. Layout. Ex. application/json
messageId - EventData MessageId. Layout
correlationId - EventData Correlationid. Layout
useWebSockets - Enable AmqpWebSockets. Ex. true/false (optional)
customEndpointAddress - Custom endpoint address that can be used when establishing the connection (optional)
serviceUri - Alternative to ConnectionString, where Managed Identiy is applied from DefaultAzureCredential.
eventProducerIdentifier - A unique name used to identify the event producer. If null or empty, a GUID will be used as the identifier (optional)
managedIdentityClientId - clientId for ManagedIdentityClientId on DefaultAzureCredentialOptions. Requires serviceUri
managedIdentityResourceId - resourceId for ManagedIdentityResourceId on DefaultAzureCredentialOptions, do not use together with ManagedIdentityClientId. Requires serviceUri.
tenantIdentity - tenantId for DefaultAzureCredentialOptions. Requires serviceUri.
sharedAccessSignature - Access signature for AzureSasCredential authentication. Requires serviceUri.
accountName - accountName for AzureNamedKeyCredential authentication. Requires serviceUri and accessKey.
accessKey - accountKey for AzureNamedKeyCredential authentication. Requires serviceUri and accountName.
clientAuthId - clientId for ClientSecretCredential OAuth2 authentication. Requires serviceUri, tenantIdentity and clientAuthSecret.
clientAuthSecret - clientSecret for ClientSecretCredential OAuth2 authentication. Requires serviceUri,tenantIdentity and clientAuthId.
When using ServiceUri (Instead of ConnectionString) with DefaultAzureCredential, then Azure Identity can also resolve from environment variables:
AZURE_CLIENT_ID - For ManagedIdentityClientId / WorkloadIdentityClientIdAZURE_TENANT_ID - For TenantIdnoProxy - Bypasses any system proxy and proxy in ProxyAddress when set to true. Requires useWebSockets = true.
proxyAddress - Address of the proxy server to use (e.g. http://proxyserver:8080). Requires useWebSockets = true.
proxyLogin - Login to use for the proxy server. Requires proxyPassword. Requires useWebSockets = true.
proxyPassword - Password to use for the proxy server. Requires proxyLogin. Requires useWebSockets = true.
useDefaultCredentialsForProxy - Uses the default credentials (System.Net.CredentialCache.DefaultCredentials) for the proxy server. Take precedence over proxyLogin and proxyPassword when set to true. Requires useWebSockets = true.
maxBatchSizeBytes - Max size of a single batch in bytes Integer (Default=1024*1024)
batchSize - Number of EventData items to send in a single batch (Default=100)
taskDelayMilliseconds - Artificial delay before sending to optimize for batching (Default=200 ms)
queueLimit - Number of pending LogEvents to have in memory queue, that are waiting to be sent (Default=10000)
overflowAction - Action to take when reaching limit of in memory queue (Default=Discard)
taskTimeoutSeconds - How many seconds a Task is allowed to run before it is cancelled (Default 150 secs)
retryDelayMilliseconds - How many milliseconds to wait before next retry (Default 500ms, and will be doubled on each retry).
retryCount - How many attempts to retry the same Task, before it is aborted (Default 0)
NLog Layout makes it possible to retrieve settings from many locations.
connectionString="${configsetting:ConnectionStrings.AzureEventHub}"
{
"ConnectionStrings": {
"AzureEventHub": "UseDevelopmentStorage=true;"
}
}
connectionString="${appsetting:ConnectionStrings.AzureEventHub}"
<configuration>
<connectionStrings>
<add name="AzureEventHub" connectionString="UseDevelopmentStorage=true;"/>
</connectionStrings>
</configuration>
connectionString="${environment:AZURE_STORAGE_CONNECTION_STRING}"
connectionString="${gdc:AzureEventHubConnectionString}"
NLog.GlobalDiagnosticsContext.Set("AzureEventHubConnectionString", "UseDevelopmentStorage=true;");