具有动态连接字符串的 NLog blob 存储扩展
NLog blob storage extension with dynamic connection string
BlobStorage 目标 属性 没有像我预期的那样改变。
我用这个代码。 (当然 le 连接字符串是真正的 azureblobstorage 之一)
LogManager.Configuration.Variables["simple-log-file-name"] = "simple-log.txt";
LogManager.Configuration.Variables["blob-container"] = "logs";
LogManager.Configuration.Variables["blobconst"] = "DefaultEndpointsProtocol=https;AccountName=....";
目标设置在 nlog.config:
<target xsi:type="AzureBlobStorage" name="simple-log-target" blobName="${var:simple-log-file-name}" container="${var:blob-container}" connectionString="${var:blobconst}"....
此时 nlog 无法设置
Error AzureBlobStorageTarget(Name=simple-log-target): Failed to create
BlobClient with connectionString=. Exception:
System.ArgumentNullException: Value cannot be null. (Parameter
'connectionString')
如果我将 Aure 连接字符串放在 nlog 配置目标中,它会起作用:它写入由 nlog.config 在运行时设置的容器和 blob 中定义的存储。
<target xsi:type="AzureBlobStorage" name="simple-log-target" blobName="${var:simple-log-file-name}" container="${var:blob-container}" connectionString="DefaultEndpointsProtocol=https;AccountName=...." ...
是否可以在运行时定义这个 connectionString?
尝试使用 GDC 而不是使用 NLog-Configuration-Variables:
GlobalDiagnosticsContext.Set("simple-log-file-name", "simple-log.txt");
GlobalDiagnosticsContext.Set("blob-container", "logs");
GlobalDiagnosticsContext.Set("blobconst", "DefaultEndpointsProtocol=https;AccountName=....";
并像这样设置 NLog.config(确保在创建第一个 NLog.Logger 对象之前分配 GDC 值):
<target xsi:type="AzureBlobStorage" name="simple-log-target" blobName="${gdc:simple-log-file-name}" container="${gdc:blob-container}" connectionString="${gdc:blobconst}"
另请参阅:NLog.Extensions.AzureBlobStorage - Azure ConnectionString
BlobStorage 目标 属性 没有像我预期的那样改变。
我用这个代码。 (当然 le 连接字符串是真正的 azureblobstorage 之一)
LogManager.Configuration.Variables["simple-log-file-name"] = "simple-log.txt";
LogManager.Configuration.Variables["blob-container"] = "logs";
LogManager.Configuration.Variables["blobconst"] = "DefaultEndpointsProtocol=https;AccountName=....";
目标设置在 nlog.config:
<target xsi:type="AzureBlobStorage" name="simple-log-target" blobName="${var:simple-log-file-name}" container="${var:blob-container}" connectionString="${var:blobconst}"....
此时 nlog 无法设置
Error AzureBlobStorageTarget(Name=simple-log-target): Failed to create BlobClient with connectionString=. Exception: System.ArgumentNullException: Value cannot be null. (Parameter 'connectionString')
如果我将 Aure 连接字符串放在 nlog 配置目标中,它会起作用:它写入由 nlog.config 在运行时设置的容器和 blob 中定义的存储。
<target xsi:type="AzureBlobStorage" name="simple-log-target" blobName="${var:simple-log-file-name}" container="${var:blob-container}" connectionString="DefaultEndpointsProtocol=https;AccountName=...." ...
是否可以在运行时定义这个 connectionString?
尝试使用 GDC 而不是使用 NLog-Configuration-Variables:
GlobalDiagnosticsContext.Set("simple-log-file-name", "simple-log.txt");
GlobalDiagnosticsContext.Set("blob-container", "logs");
GlobalDiagnosticsContext.Set("blobconst", "DefaultEndpointsProtocol=https;AccountName=....";
并像这样设置 NLog.config(确保在创建第一个 NLog.Logger 对象之前分配 GDC 值):
<target xsi:type="AzureBlobStorage" name="simple-log-target" blobName="${gdc:simple-log-file-name}" container="${gdc:blob-container}" connectionString="${gdc:blobconst}"
另请参阅:NLog.Extensions.AzureBlobStorage - Azure ConnectionString