Skip to content

Latest commit

 

History

History
163 lines (103 loc) · 6.69 KB

File metadata and controls

163 lines (103 loc) · 6.69 KB

Azure EventHubs

Package Name NuGet Description
NLog.Extensions.AzureEventHub NuGet Azure EventHubs

EventHub Configuration

Syntax

<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>

General Options

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)

Authentication Options

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 / WorkloadIdentityClientId
  • AZURE_TENANT_ID - For TenantId

See also: Set up Your Environment for Authentication

Proxy Options

noProxy - 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.

Batching Policy

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)

Retry Policy

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)

Azure ConnectionString

NLog Layout makes it possible to retrieve settings from many locations.

Lookup ConnectionString from appsettings.json

connectionString="${configsetting:ConnectionStrings.AzureEventHub}"

  • Example appsettings.json on .NetCore:
  {
    "ConnectionStrings": {
      "AzureEventHub": "UseDevelopmentStorage=true;"
    }
  }

Lookup ConnectionString from app.config

connectionString="${appsetting:ConnectionStrings.AzureEventHub}"

  • Example app.config on .NetFramework:
  <configuration>
    <connectionStrings>
      <add name="AzureEventHub" connectionString="UseDevelopmentStorage=true;"/>
    </connectionStrings>
  </configuration>

Lookup ConnectionString from environment-variable

connectionString="${environment:AZURE_STORAGE_CONNECTION_STRING}"

Lookup ConnectionString from NLog GlobalDiagnosticsContext (GDC)

connectionString="${gdc:AzureEventHubConnectionString}"

  • Example code for setting GDC-value:
  NLog.GlobalDiagnosticsContext.Set("AzureEventHubConnectionString", "UseDevelopmentStorage=true;");