如何从SQL Azure App Service Web App写入日志文件?

时间:2019-01-31 08:53:27

标签: c# azure azure-web-sites

我有一个ASP.NET Web API作为 Web应用部署在Azure 应用服务上。

我已打开应用程序服务诊断日志记录

enter image description here

从API代码内,当我尝试写日志消息到一个文件,显然,文件系统相对路径"."解析为"D:\Windows\system32\"在目标机器/ VM /容器上。< / p>

我知道这是因为我有我的测试操作方法设置打印整个例外如下:

[HttpGet]
[Route("~/test/log")]
public async Task<string> LogAsync()
{
  try
  {
    System.IO.File.WriteAllText(".\\log.txt", "Test log entry.");

    return await Task.FromResult("Passed");
  }
  catch(Exception ex)
  {
    return ex.ToString();
  }
}

它返回以下结果:

  

System.UnauthorizedAccessException:访问路径   'D:\ Windows \ system32 \ log.txt'被拒绝。在   System.IO .__ Error.WinIOError(Int32 errorCode,字符串mayFullPath)
  在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess   访问,Int32权限,布尔useRights,FileShare共享,Int32   bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,字符串   MSGPATH,布尔bFromProxy,布尔useLongPath,布尔checkHost)
  在System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess   访问,FileShare共享,Int32 bufferSize,FileOptions选项,字符串   MSGPATH,布尔bFromProxy,布尔useLongPath,布尔checkHost)
  在System.IO.StreamWriter.CreateFile(字符串路径,布尔值附加,   System.IO.StreamWriter..ctor(布尔路径,   布尔值附加,编码编码,Int32 bufferSize,布尔值   checkHost)位于System.IO.StreamWriter..ctor(字符串路径,布尔值)   追加,编码方式进行编码)在   System.IO.File.InternalAppendAllText(字符串路径,字符串内容,   System.IO.File.AppendAllText(字符串路径,   字符串内容)在   My.Web.API.Controllers.TestController.d__5.MoveNext()在   C:\ My.Web.API \ My.Web.API \控制器\ TestController.cs:线125

1 个答案:

答案 0 :(得分:1)

当前,您正在尝试将日志保存在D:\ Windows \ System32文件夹下,这是不允许的,因为您遇到访问被拒绝的错误。 请尝试将路径更改为D:\ Home \ Logfiles \ Application,这是应用程序日志记录的源目录。

存储日志的目录结构如下:

应用程序日志-/ LogFiles / Application /。此文件夹包含一个或多个文本文件,其中包含由应用程序日志记录产生的信息。

失败的请求跟踪-/ LogFiles / W3SVC ########## /。该文件夹包含一个XSL文件和一个或多个XML文件。请确保将XSL文件下载到与XML文件相同的目录中,因为XSL文件提供了在Internet Explorer中查看时格式化和过滤XML文件内容的功能。

详细的错误日志-/ LogFiles / DetailedErrors /。此文件夹包含一个或多个.htm文件,这些文件可提供有关发生的任何HTTP错误的广泛信息。

Web服务器日志-/ LogFiles / http / RawLogs。此文件夹包含一个或多个使用W3C扩展日志文件格式设置的文本文件。

部署日志-/ LogFiles / Git。此文件夹包含由Azure App Service使用的内部部署过程生成的日志,以及Git部署的日志。您还可以在D:\ home \ site \ deployments下找到部署日志。

也仅用于更新,对于应用程序日志记录,您可以临时打开文件系统选项以进行调试。此选项将在12小时后自动关闭。您还可以打开Blob存储选项以选择要向其写入日志的Blob容器。

让我知道您是否需要其他任何信息。

当您从KUDU中看到它时,这就是您的Azure应用程序的层次结构

enter image description here