ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NLog输出日志到Azure Blob存储

2022-04-13 10:02:42  阅读:163  来源: 互联网

标签:layout format NLog Blob Azure 日志 logger


针对.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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有