logging - 在 Azure 中配置文件日志记录以写入 LocalResources 中定义的特定 LocalStorage

标签 logging azure nlog

我使用 web.config 指向的 nlog.config 进行了 NLog 日志记录设置。在这个 nlog.config 文件中,我需要放置这样一行:

fileName="ApplicationLog.txt"

我希望日志条目转到此文件。

我的 ServiceDefinition.csdef 文件包含以下内容:

<LocalResources>
  <LocalStorage name="DiagnosticStore" sizeInMB="20000" cleanOnRoleRecycle="false" />
  <LocalStorage name="LogStorage" cleanOnRoleRecycle="false" sizeInMB="8192" />
</LocalResources>

我希望日志记录转到 LogStorage 指向的根目录的子文件夹中。在已部署的 Azure VM 上,情况如下所示:

C:\Resources\Directory\ec1b400c7e58640a8b874035ba9196c.Services.LogStorage\logs/ApplicationLog.txt

如果我将其硬编码到 nlog.config 文件中,日志将成功写入那里。这是我在配置文件中的目标标记:

<target name="App" xsi:type="File"  
lineEnding="Default" autoFlush="true" keepFileOpen="false"  
fileName="ApplicationLog.txt">  

当 fileName 设置为 ApplicationLog.txt 时,该文件不会出现在服务器上的任何位置。没有写入日志。

我的diagnostics.wadcfg包含神奇的时期:

<DataSources>
  <DirectoryConfiguration container="telemetry-logs" directoryQuotaInMB="4096">
    <LocalResource name="LogStorage" relativePath=".\archive" />
  </DirectoryConfiguration>
</DataSources>

这就是 Azure 诊断查找日志文件的方式,将 NLog 写入我的 LocalStorage 的文件进行匹配。

我应该在 nlog.config 文件内的 Target 标记中放入什么来获取 LocalStorage 标记表示的文件夹的根目录?

最佳答案

我建议的一种方法(尽管从未测试过)是使用自定义环境变量。

Azure SDK 使您能够 define custom environment variables 。然后您可以使用 XPath to get setting values .

现在我想知道您是否可以定义一个变量NLogPath,其中RoleInstanceValue等于/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='LogStorage']/@路径

定义应类似于:

  <Runtime>
     <Environment>
        <Variable name="NLogPath">
                <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='LogStorage']/@path" />
        </Variable>
     </Environment>
  </Runtime> 

现在尝试像这样配置 NLog:

<target name="App" xsi:type="File"  
lineEnding="Default" autoFlush="true" keepFileOpen="false"  
fileName="${environment:variable=NLogPath}\ApplicationLog.txt"> 

关于logging - 在 Azure 中配置文件日志记录以写入 LocalResources 中定义的特定 LocalStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16428226/

相关文章:

ios - 隐藏奇怪的不需要的 Xcode 日志

c# - 模拟 NLog 的记录器并读取记录的消息

Python 日志记录。消息具有相同的日期

使用 QueueHandler 和 QueueListener 的 Python 日志记录 (logutils)

android - 使用 MQTT VS REST 发送应用程序日志

c# - 使用 NLog 在 ASP.NET Core 中记录异常

ios - iOS Swift 上的 Azure 推送通知

c# - C# 中修饰符 static 对于此项错误无效

date - 为什么nlog不能读取当前日期