其他分享
首页 > 其他分享> > NLog输出日志到Azure Blob存储

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