我正在使用非.NET辅助工作者角色,通过在服务定义中设置ProgramEntryPoint进行配置。这意味着my application中有无.NET代码,它是用Java和Python编写的。
当我在本地运行我的辅助角色时,我可以打开Windows Azure Compute Emulator应用程序并查看我的工作进程的标准输出和错误。
当我将桌面远程登录到Azure实例时,我不知道从哪里获取相同的信息。我在哪里可以找到标准输出和错误?
答案 0 :(得分:1)
一个简单的策略是将程序的输出重定向到文件:
<ProgramEntryPoint commandLine="run.bat >> app.log 2>&1" ... "/>
&
对于保持XML解析器的满意非常重要。
请注意,执行此操作后,您将无法再在Windows Azure计算模拟器中看到日志。要查看日志,请打开PowerShell并键入:
cd E:\approot # or myapp.csx\roles\WorkerRole\approot if running locally
cat -wait app.log
另请注意,此策略要求您将远程桌面导入Azure实例以查看日志。如果有的话,这可能是快速入门的好方法。
答案 1 :(得分:1)
直接回答上述问题:
<ProgramEntryPoint commandLine="run.bat >> app.log 2>&1" ... "/>
在计算模拟器中运行上述命令时,您要求将命令shell输出重定向到run.bat所在的同一位置。而已。在计算模拟器中启动辅助角色时,它将从CSX文件夹中的位置启动,并在此处创建app.log。
现在,如果您使用完全相同的代码并在Windows Azure上部署,那么当执行“run.bat&gt;&gt; app.log”时,app.log文件将直接在您运行的位置创建.bat位于。在您的RDP Azure实例之后,您可以在E:\ Approot \找到它。
以上方法是正确的,但策略是 NOT RIGHT 。这是因为:
最好的策略是,如果第三方应用程序创建的这些自定义日志直接传输到Azure存储。
在任何有自定义应用程序的情况下,例如java.exe,php.exe,python等,我建议直接在“Local Storage”文件夹中创建日志文件,然后在Worker Role(WorkerRole.cs)中初始化Azure诊断程序将这些自定义日志文件直接从Azure VM导出到Azure Blob存储。
如何在本地存储上创建自定义日志,请参阅here