使用远程桌面时,我在哪里可以找到非.NET角色的日志?

时间:2012-05-31 04:18:48

标签: logging azure remote-desktop azure-worker-roles

我正在使用非.NET辅助工作者角色,通过在服务定义中设置ProgramEntryPoint进行配置。这意味着my application中有无.NET代码,它是用Java和Python编写的。

当我在本地运行我的辅助角色时,我可以打开Windows Azure Compute Emulator应用程序并查看我的工作进程的标准输出和错误。

当我将桌面远程登录到Azure实例时,我不知道从哪里获取相同的信息。我在哪里可以找到标准输出和错误?

2 个答案:

答案 0 :(得分:1)

一个简单的策略是将程序的输出重定向到文件:

<ProgramEntryPoint commandLine="run.bat >> app.log 2>&amp;1" ... "/>

&amp;对于保持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>&amp;1" ... "/>

在计算模拟器中运行上述命令时,您要求将命令shell输出重定向到run.bat所在的同一位置。而已。在计算模拟器中启动辅助角色时,它将从CSX文件夹中的位置启动,并在此处创建app.log。

现在,如果您使用完全相同的代码并在Windows Azure上部署,那么当执行“run.bat&gt;&gt; app.log”时,app.log文件将直接在您运行的位置创建.bat位于。在您的RDP Azure实例之后,您可以在E:\ Approot \找到它。

以上方法是正确的,但策略是 NOT RIGHT 。这是因为:

  1. Azure VM中的Azure VM中的日志将不再存在
  2. 您需要使用RDP到Azure VM进行检查,(如果您有100个实例,那么您是否会对每个实例进行RDP以获取日志?)
  3. 最好的策略是,如果第三方应用程序创建的这些自定义日志直接传输到Azure存储。

    在任何有自定义应用程序的情况下,例如java.exe,php.exe,python等,我建议直接在“Local Storage”文件夹中创建日志文件,然后在Worker Role(WorkerRole.cs)中初始化Azure诊断程序将这些自定义日志文件直接从Azure VM导出到Azure Blob存储。

    如何在本地存储上创建自定义日志,请参阅here