Подтвердить что ты не робот

Как написать в журналы Azure WebJobs из приложения консоли С#?

Я тестирую Azure Webjobs. Я написал консольное приложение, которое проверяет базу данных SQL для новой работы и обрабатывает ее. Я не использую SDK WebJobs, потому что он поддерживает только Azure Storage.

Я загружаю задание, он запускается, а затем он терпит неудачу с исключением, которое говорит, что он не смог подключиться к экземпляру SQL Database. Мне интересно, какая строка соединения используется; это получение строки подключения с сайта Azure. Журналы дают мне это:

[03/14/2014 22:24:25 > 512206: SYS INFO] Status changed to Running
[03/14/2014 22:24:40 > 512206: ERR ] 
[03/14/2014 22:24:40 > 512206: ERR ] Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Я хотел бы записать данные в эти журналы (например, что используется строка соединения). Я попробовал Console.WriteLine, Debug.WriteLine, Console.Error.WriteLine. Ни один из них не отображается в моем журнале WebJob.

По-видимому, я мог бы получить данные, просто создав исключение с текстом сообщения, показывающим, что я хочу, но должен быть лучший способ! Как написать строки SYS INFO и ERR в журнал?

4b9b3361

Ответ 1

Что касается журналов:

Для непрерывных WebJobs - Console.Out и Console.Error маршрутизируются в "журналы приложений", они будут отображаться как хранилище файлов, блоков или таблиц зависит от конфигурации журналов приложений ( аналогично вашему сайту).

Также первые 100 строк в каждом вызове также попадают в файл журнала WebJob (чтобы облегчить отладочную боль при сбое WebJob при запуске), доступном с использованием портала Azure (но также сохраняемого в файловой системе сайта на данных/рабочих местах/непрерывный/JobName).

Для запущенных/запланированных WebJobs - Console.Out/Console.Error маршрутизируются в файл журнала запуска WebJobs, также доступный с использованием портала Azure и хранящийся в data/jobs/triggered/jobName/runId.

Console.Out обрабатывается (помечено) как INFO и Console.Error как ERROR.

Что касается строк подключения:

Вы можете получить доступ к своим строкам подключения так же, как и на своем веб-сайте, используя класс ConfigurationManager, для WebJobs, не написанных в .NET, вы можете найти эти строки подключения (и параметры приложения) в качестве переменных среды (все равно, что и на вашем веб-сайте).

Ответ 2

Мне удалось получить Console.WriteLine(), чтобы оставить сообщения в моем журнале веб-заданий. Следующая консоль запускает и оставляет сообщения журнала.

class Program
{
    static void Main(string[] args)
    {
        while (true)
        {
            DoStuff();
            Thread.Sleep(10000);
        }
    }

    public static void DoStuff()
    {
        Console.WriteLine("do stuff");
    }
}

Это показывает мой файл журнала:

[03/15/2014 04:05:28 > cf6d00: SYS INFO] Run script 'HelloWebJobConsoleApplication.exe' with script host - 'WindowsScriptHost'
[03/15/2014 04:05:28 > cf6d00: SYS INFO] Status changed to Running
[03/15/2014 04:05:28 > cf6d00: INFO] do stuff
[03/15/2014 04:05:38 > cf6d00: INFO] do stuff
[03/15/2014 04:05:48 > cf6d00: INFO] do stuff
[03/15/2014 04:05:58 > cf6d00: INFO] do stuff