2 votes

Log4net AdoNetAppender ne se connecte pas au db sql azure dans l'application web

J'ai essayé de faire en sorte que log4net enregistre toutes les informations ou erreurs dans ma base de données SQL Azure dans mon application web asp.net sans succès ni erreurs remarquables. J'essaie d'utiliser l'appender ADONetAppender avec le web.config suivant :

....

Dans mon Application_Start de global.asax, j'appelle

 void Application_Start(object sender, EventArgs e)
            {
                // Code that runs on application startup
                log4net.Config.XmlConfigurator.Configure();

            }

Ensuite, pour essayer de journaliser :

 readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

 protected void Button1_Click(object sender, EventArgs e)
    {
        if (_logger.IsInfoEnabled)
            _logger.Info("Message d'information sensible aux performances");
        _logger.Info("test de rôle web dans Poqlogging");
        _logger.Error("nouvelle erreur",new Exception("nouvelle exception"));
    }

Tout ceci ne semble rien faire, autant que je puisse dire.

4voto

Jonathan McIntire Points 1962

Utiliser log4net et SQL Azure est un excellent moyen de réaliser le journalisation d'application dans Azure. Voici quelques choses à essayer:

1) Votre chaîne de connexion devrait ressembler à ceci:

2) La clé applog4net.Internal.Debug doit être placée dans la section appSettings de votre web.config, pas dans la section log4net. par exemple:

...

...

3) les messages de débogage internes de log4net sont écrits dans le système System.Diagnostics.Trace. Lors du dépannage des problèmes de configuration log4net, j'aime rediriger la sortie de trace vers un fichier en ajoutant ce qui suit à mon web.config (notez que vous devez vous assurer que votre processus serveur ASP.Net peut écrire dans le fichier):

4voto

AvkashChauhan Points 14572

En fonction des informations que vous avez fournies ci-dessus, plusieurs choses pourraient mal tourner. Pour mieux comprendre le problème, plus d'informations sont nécessaires.

Je peux vous fournir quelques points de contrôle que vous pouvez vérifier:

  1. Où exécutez-vous cette application? Dans un émulateur de calcul ou sur Windows Azure
  2. Si elle s'exécute dans un émulateur de calcul, avez-vous configuré le pare-feu sur SQL Azure pour accepter la connexion de votre machine de développement et vice-versa si nécessaire.
  3. Si cette application s'exécute sur Windows Azure, avez-vous modifié la politique de pare-feu
  4. Où que vous exécutiez cette application, vous devez d'abord prouver qu'une connexion à SQL Azure est possible car l'application elle-même ne peut pas le faire, vous devrez configurer l'environnement pour que la connexion à SQL Azure fonctionne
  5. Avec Log4Net, je fais toujours deux choses:
    1. Je vérifie toujours d'abord que mes paramètres/codes Log4Net fonctionnent correctement en utilisant le journalisation locale
    2. Une fois cela confirmé, je passe à l'étape suivante et j'ajoute du code/configuration pour changer le journal vers une autre destination.
  6. Si tout ce qui précède est vérifié, cherchez une trace réseau là où votre application s'exécute (émulateur de calcul ou Windows Azure) pour tout transfert de données réseau vers le serveur SQL Azure.

2voto

mikemcallister Points 21

Et je suis d'accord; le AdoNetAppender fonctionne lorsque la connexion est spécifiée comme dans la réponse n°2 ci-dessus. De plus, si vous êtes à distance de la base de données Azure SQL, assurez-vous de créer une règle d'IP source de pare-feu pour permettre à votre adresse IP de se connecter à la base de données Azure SQL.

1voto

Randy Whitlock Points 11

Dans ma quête pour résoudre cela, j'ai découvert qu'une table Azure SQL DOIT avoir un INDEX GROUPÉ. Basé sur la table de journal standard, voici à quoi cela devrait ressembler.

CREATE TABLE [dbo].[Log] (
[Id] [int] IDENTITY (1, 1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar] (255) NOT NULL,
[Level] [varchar] (50) NOT NULL,
[Logger] [varchar] (255) NOT NULL,
[Message] [varchar] (4000) NOT NULL,
[Exception] [varchar] (2000) NULL,
CONSTRAINT [PK_Log] PRIMARY KEY CLUSTERED ([Id] ASC)
)

-1voto

Kiddo Points 1169

Il semble que vous avez besoin d'écrire un appender personnalisé pour effectuer la tâche

http://cloudshaper.wordpress.com/2010/10/30/logging-with-log4net-on-the-azure-platform/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X