Azure NodeJS控制台日志记录

4

我有一份Visual Studio Enterprise MSDN订阅,因此决定从Heroku转移到Microsoft Azure,因为以前我需要付款,现在不需要了。我的服务计划是D1。 我希望能够跟踪我的Node JS应用程序在Azure平台上的console.log字符串。我的服务计划是名为“shared”的共享计划。 我将应用程序代码部署在BitBucket上,并将我的存储库链接到具有正确分布的应用程序。正确意味着我看到绿色的勾选标志。我在应用程序的主文件夹中部署了一个名为IISNode.yml的文件,内容如下:

nodeProcessCommandLine: "D:\Program Files (x86)\nodejs\0.12.6\node.exe"
loggingEnabled: true
debuggingEnabled: false
devErrorsEnabled: false
node_env: production

第一行是我从Azure创建的iisnode.yml文件中复制的。其他行我不太确定它们的确切含义,但我想它们已经足够了。如果我访问网址:http://MY_APP_NAME.scm.azurewebsites.net/DebugConsole,我可以点击工具->日志流菜单,但页面仍然在加载中。我可以进入Azure门户,进入我的节点应用程序,选择工具->应用程序日志和Web服务器日志。应用程序日志显示了这个(我认为相当有趣)的消息:

System.ApplicationException: The trace listener AzureBlobTraceListener is disabled. ---> System.InvalidOperationException: The SAS URL for the cloud storage account is not specified. Use the environment variable 'DIAGNOSTICS_AZUREBLOBCONTAINERSASURL' to define it.
   at Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.RefreshConfig()

我还没有了解关于这个"环境变量"的信息,也猜不出BLOB容器与我的日志应用有什么关系。那么正确的变量值是什么?如果有的话,为什么这个值是正确的?
Web服务日志为空。我可以从相同门户的应用程序监视器中看到HTTP活动,但仍然没有日志。
我有什么遗漏吗?我决定安装Visual Studio,也许这会有所帮助?我希望它可以与Azure良好集成。同时,我的(极其简单)Node应用程序的控制台日志在哪里?

我尝试的所有方法都没有解决我的问题。我使用Linux虚拟机,并在终端实例上运行工作,这样我就可以直接从终端访问日志,并通过Windows 8笔记本电脑上的远程桌面观看它。 - Francesco
在我的应用程序中,我使用log4js模块将日志写入带有日期的文件中。我甚至可以远程访问这些文件,即使使用baretail Windows应用程序 [https://www.baremetalsoft.com/baretail/] 也可以。 - Francesco
3个回答

9

如果您使用Azure SCM界面,您可以实时查看日志。通常可以在以下URL上访问:

https://{{ name of webapp }}.scm.azurewebsites.net/api/logstream

您的应用程序的所有控制台输出都被重定向到此处。

您也可以使用curl:

curl -u {{ deploymentCredentialsUsername:deploymentCredentialsPassword }} https://webapp-name.acm.azurewebsites.net/api/logstream

否则,您可以使用Node.js Azure CLI。请使用以下命令进行安装:
npm install -g azure-cli

切换到汇编模式:

azure config mode asm

然后,您可以继续从终端查看日志:
azure site log tail {{ webapp name }}

2
您可以在iisnode.yml中添加一个名为logDirectory的项目,例如将值设置为iisnode,然后应用程序将在您的根目录中创建一个名为此的文件夹,并在其中存储带有stdout和stderr捕获的文件。有关此配置的详细信息,请参阅https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/iisnode.yml#L94 您可以通过console.log()将日志存储在文件中,然后应用程序将在日志文件夹中创建一个html文件index.html以提供日志。您可以通过URL访问这些日志:http://<you_app_name>.azurewebsites.net/<log_file_name>/index.html 此外,您可以利用Node.js控制台类来自定义记录器。有关示例,请参见https://nodejs.org/api/console.html#console_new_console_stdout_stderr

0
如果您正在使用Azure门户网站界面,则可以在“监视”下的“日志流”部分下找到console.log输出。
请参考下面的屏幕截图:

Azure App Service - Log Stream


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接