Quantcast
Viewing all articles
Browse latest Browse all 12

Logging Azure Startup Task to WAD

Debugging startup tasks is very challenging so it is useful to log what they are doing.  Say that you have a ServiceDefinition.csdef file that looks like this:

 

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="Foo" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">

  <WebRole name="Bar" vmsize="Medium" enableNativeCodeExecution="true">

    <Startup>

      <Task commandLine="Startup\ConfigureIIS.cmd" executionContext="elevated" taskType="simple" />

    </Startup>

    ...

 

And within your project you created a Startup folder and included your scripts with Build Action None and Copy Always, then within the scripts you can pipe the output into a log directory like this:

 

SET ConfigureIIS_LogDir=%~dp0Log\

MKDIR "%ConfigureIIS_LogDir%"

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00 >> "%ConfigureIIS_LogDir%ConfigureIIS.txt" 2>&1

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:168:00:00 >> "%ConfigureIIS_LogDir%ConfigureIIS.txt" 2>&1

EXIT /b 0

 

BTW, the %~dp0 is a very special replaceable parameter and as used above means “%ROLEROOT%\approot\bin\Startup\”.  Also notice that using a script to launch exe's is nice because it allows redirecting the output to the log file.

 

Then in diagnostics.wad you can transfer the log to Azure Storage for diagnostics:

 

  <Directories bufferQuotaInMB="1024" scheduledTransferPeriod="PT5M">

    <CrashDumps container="wad-crash-dumps" directoryQuotaInMB="128" />

    <FailedRequestLogs container="wad-frq" directoryQuotaInMB="128"/>

    <IISLogs container="wad-iis" directoryQuotaInMB="128" />

    <DataSources>

      <DirectoryConfiguration container="wad-startup" directoryQuotaInMB="10">

        <!-- Absolute specifies an absolute path with optional environment expansion -->

        <Absolute expandEnvironment="true" path="%ROLEROOT%\approot\bin\Startup\Log" />

      </DirectoryConfiguration>

 

You can also remote desktop to the instance and view the log too.

 

Happy coding...


Viewing all articles
Browse latest Browse all 12

Trending Articles