Quelle est la meilleure façon d'écrire les entrées du journal des événements?

J'ai récemment eu un problème lors du déploiement d'un service windows. Quatre ordinateurs ne cause pas de problèmes, mais sur le cinquième de toute tentative de démarrer le service a échoué en raison d'une exception. La trace de pile d'exception est écrit dans le journal des événements, j'ai donc bien qu'il devrait être facile à identifier la cause:

protected override void OnStart(string[] args)
{
    EventLog.WriteEntry("Starting service", EventLogEntryType.Information);

    try
    {
        //...
        base.OnStart(args);
    }
    catch (Exception ex)
    {
        EventLog.WriteEntry("Service can not start. Stack trace:" + ex.StackTrace, EventLogEntryType.Error);
        Stop();
        return;
    }

    EventLog.WriteEntry("Service started", EventLogEntryType.Information);           
}

Mais hélas, aucune information n'a jamais été écrit dans le journal. J'ai enfin tracée à la première entrée du journal en cours d'écriture. Il a jeté une exception parce que le journal des événements d'application était plein avec des entrées récentes, et configurée pour remplacer uniquement les entrées âgés de plus de 7 jours.

Quelles sont les meilleures pratiques sur l'écriture dans le journal des événements, considérant que je ne peux pas modifier la configuration du journal des événements d'application?

Dois-je toujours mettre EventLog.WriteEntry dans un bloc try, si oui, comment dois-je traiter l'exception (l'écrire dans le journal des événements est probablement une mauvaise idée), dois-je vérifier le journal des événements d'état dans mon OnStart méthode, ou avez-vous une meilleure suggestion?

source d'informationauteur Treb