in Source/NuGetGallery.Operations/Tasks/Monitoring/TailJobLogTask.cs [34:67]
public override void ExecuteCommand()
{
var jobName = Arguments[0];
// Start by fetching the latest log
var joblogs = JobLog.LoadJobLogs(StorageAccount);
// Grab the log
var candidates = joblogs.Where(l => l.JobName.StartsWith(jobName, StringComparison.OrdinalIgnoreCase)).ToList();
if (!candidates.Any())
{
Log.Error("No logs match: {0}", jobName);
}
else if (candidates.Count > 1)
{
Log.Error("Multiple logs match: {0}. Found: {1}", jobName, String.Join(", ", candidates.Select(c => c.JobName)));
}
else
{
// Grab the requested entries
var log = candidates.Single();
var entries = log.OrderedEntries().Take(NumberOfEntries.Value).Reverse();
foreach (var entry in entries)
{
WriteEntry(log, entry);
_lastEntryUtc = entry.Timestamp;
}
if (Follow)
{
FollowLog(log);
}
}
}