NLog输出日志到Azure Blob存储
作者:互联网
针对.Net Framework的日志,还是选择NLog比较好,方便,.Net core选择Serilog更好,本文记录下NLog日志输出到Azure Blob存储。
第一步:引用Nuget包
<package id="NLog" version="4.7.15" targetFramework="net461" />
<package id="NLog.Extensions.AzureBlobStorage" version="3.1.0" targetFramework="net461" />
github地址为:
https://github.com/NLog/NLog
https://github.com/JDetmar/NLog.Extensions.AzureStorage/blob/master/src/NLog.Extensions.AzureBlobStorage/README.md
第二步,添加NLog.config配置文件,内容如下
<?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">
<extensions>
<add assembly="NLog.Extensions.AzureBlobStorage" />
</extensions>
<targets>
<!--<target name="logfile" xsi:type="File" fileName="log.txt" />-->
<target name="logconsole" xsi:type="Console" />
<target type="AzureBlobStorage"
name="Azure"
layout="${longdate:universalTime=false} ${level:uppercase=true} - ${logger}: ${message} ${exception:format=tostring}"
connectionString="blob连接字符串"
container="容器名"
blobName="${date:universalTime=false:format=yyyy-MM}/${date:universalTime=false:format=dd}/${logger}.log">
<metadata name="mymeta" layout="mymetavalue" />
<!-- Multiple allowed -->
</target>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
<!--<logger name="*" minlevel="Info" writeTo="logfile" />-->
<logger name="*" minlevel="Info" writeTo="Azure" />
</rules>
</nlog>
配置里面的layout是日志输出格式,blobName是日志文件名称格式
官方说明为:
https://nlog-project.org/config/?tab=layout-renderers
第三步,在Azure存储里面添加容器container
添加好之后,马上使用感觉日志没有输出,程序也没报错,这种情况,没处理,等了半天日志才进去,不知道为啥。
第四步,代码里面写日志
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info("日志");
Tip:如果用了其他的Azure相关的库,可能会存在依赖项不同版本的冲突,导致发布不成功。需要在web.config使用assemblyBinding 属性
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Azure.Core" publicKeyToken="92742159e12e44c8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.1.0" newVersion="1.4.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
上述配置意思为,Azure.Core包存在的多个版本从0.0.0.0-1.4.1.0。都使用1.4.1.0这个版本。
标签:layout,format,NLog,Blob,Azure,日志,logger 来源: https://www.cnblogs.com/chenrongku/p/16138885.html