web-dev-qa-db-fra.com

Comment écrire dans les journaux dans Azure WebJobs à partir d'une application console C #?

Je teste Azure Webjobs. J'ai écrit une application console qui interroge une base de données SQL pour de nouveaux travaux et la traite. Je n'utilise pas le SDK WebJobs car il ne prend en charge que le stockage Azure.

Je télécharge le travail, il s'exécute, puis il échoue avec une exception qui indique qu'il n'a pas pu se connecter à l'instance de base de données SQL. Je me demande quelle chaîne de connexion est utilisée; est-ce qu'il obtient la chaîne de connexion à partir du site Web Azure. Les journaux me donnent ceci:

[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)

Je voudrais écrire des données dans ces journaux (comme quelle est la chaîne de connexion utilisée). J'ai essayé Console.WriteLine, Debug.WriteLine, Console.Error.WriteLine. Aucun d'eux n'apparaît dans le journal de mon WebJob.

Apparemment, je pourrais obtenir les données en levant simplement une exception avec le texte du message montrant ce que je veux, mais il doit y avoir une meilleure façon! Comment écrire des lignes SYS INFO et ERR dans le journal?

50
Geoff Armstrong

Concernant les logs:

Pour contin WebJobs - Console.Out et Console.Error sont acheminés vers les "journaux d'application", ils apparaîtront comme le stockage de fichiers, d'objets blob ou de tables dépend de votre configuration des journaux d'application (similaire à votre Site Internet).

De plus, les 100 premières lignes de chaque appel iront également dans le fichier journal WebJob (pour soulager la douleur de débogage lorsque le WebJob échoue au démarrage) accessible à l'aide du portail Azure (mais également enregistré sur le système de fichiers de votre site à data/jobs/continue/jobName ).

Pour déclenché/planifié WebJobs - Console.Out/Console.Error sont routés vers le fichier journal d'exécution WebJobs également accessible à l'aide du portail Azure et stockés dans data/jobs/triggered/jobName/runId.

Console.Out est traité (marqué) comme INFO et Console.Error comme ERREUR.

Concernant les chaînes de connexion:

Vous pouvez accéder à vos chaînes de connexion de la même manière que sur votre site Web, à l'aide de la classe ConfigurationManager, pour les emplois Web non écrits en .NET, vous pouvez trouver ces chaînes de connexion (et les paramètres d'application) en tant que variables d'environnement (tout comme avec votre site Web).

66
Amit Apple

J'ai pu obtenir Console.WriteLine () pour laisser des messages dans mon journal des travaux Web. La console suivante s'exécute et laisse des messages de journal.

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

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

Voici ce que mon fichier journal montre:

[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
6
reuben