代码之家  ›  专栏  ›  技术社区  ›  Water Cooler v2

如何从我的SQL Azure应用程序服务Web应用程序写入日志文件?

  •  0
  • Water Cooler v2  · 技术社区  · 6 年前

    我在Azure上部署了一个ASP.NET Web API 应用程序服务 作为一个 Web应用程序 .

    我已经打开了 诊断日志记录 对于

    enter image description here

    在API代码中,当我试图将日志消息写入文件时,显然是文件系统的相对路径 "." "D:\Windows\system32\" 在目标计算机/VM/容器上。

    我之所以知道这一点,是因为我已将测试操作方法设置为按如下方式打印整个异常:

    [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.\u Error.WinIOError(Int32 errorCode,String maybeFullPath)
    访问、Int32权限、布尔用户权限、文件共享、Int32 bufferSize,FileOptions,secAttrs,String msgPath、Boolean bFromProxy、Boolean useLongPath、Boolean checkHost)
    在System.IO.FileStream..ctor(字符串路径、文件模式、文件访问 access,FileShare,Int32 bufferSize,FileOptions,String
    在System.IO.StreamWriter.CreateFile(字符串路径,布尔追加, Boolean append,编码,Int32 bufferSize,Boolean System.IO.File.InternalAppendAllText(字符串路径,字符串内容, 在System.IO.File.AppendAllText(字符串路径, 字符串内容) C:\My.Web.API\My.Web.API\Controllers\TestController.cs:第125行

    1 回复  |  直到 6 年前
        1
  •  1
  •   Martijn Pieters    5 年前

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

    看到了吗 https://docs.microsoft.com/en-us/azure/app-service/troubleshoot-diagnostic-logs 有关日志的默认位置的详细信息。

    如果你还需要其他信息,请告诉我。

    enter image description here

    推荐文章