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)
webSocketProxyAddress - Custom WebProxy address for WebSockets (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.
clientIdentity - Alternative to ConnectionString. Used together with ServiceUri. Input for DefaultAzureCredential as ManagedIdentityClientId.
resourceIdentity - Alternative to ConnectionString. Used together with ServiceUri. Input for DefaultAzureCredential as ManagedIdentityResourceId.
tenantIdentity - Alternative to ConnectionString. Used together with ServiceUri. Input for DefaultAzureCredential.
sharedAccessSignature - Alternative to ConnectionString. Used together with ServiceUri. Input for AzureSasCredential
accountName - Alternative to ConnectionString. Used together with ServiceUri. Input for AzureNamedKeyCredential-AccountName
accessKey - Alternative to ConnectionString. Used together with ServiceUri. Input for AzureNamedKeyCredential-AccessKey
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)
When using ServiceUri
(Instead of ConnectionString), then DefaultAzureCredential
is used for Azure Identity which supports environment variables:
AZURE_CLIENT_ID
- For ManagedIdentityClientId / WorkloadIdentityClientIdAZURE_TENANT_ID
- For TenantId
See also: Set up Your Environment for Authentication
NLog Layout makes it possible to retrieve settings from many locations.
connectionString="${configsetting:ConnectionStrings.AzureEventHub}"
- Example appsettings.json on .NetCore:
{
"ConnectionStrings": {
"AzureEventHub": "UseDevelopmentStorage=true;"
}
}
connectionString="${appsetting:ConnectionStrings.AzureEventHub}"
- Example app.config on .NetFramework:
<configuration>
<connectionStrings>
<add name="AzureEventHub" connectionString="UseDevelopmentStorage=true;"/>
</connectionStrings>
</configuration>
connectionString="${environment:AZURE_STORAGE_CONNECTION_STRING}"
connectionString="${gdc:AzureEventHubConnectionString}"
- Example code for setting GDC-value:
NLog.GlobalDiagnosticsContext.Set("AzureEventHubConnectionString", "UseDevelopmentStorage=true;");