2009-09-23 6 views
48

J'ai un vide fichier app.config, mais je encore obtenir les journaux de débogage NHibernateDésactiver NHibernate vous connecter

NHibernate: SELECT this_.LogID as LogID71_0_, this_.Level as Level71_0_, this_.Message as Message71_0_, this_.EventTime as EventTime71_0_, this_.Component as ... 

J'ai essayé d'ajouter une configuration log4net avec un niveau de journal des erreurs, mais aucune utilisation. Comment puis-je arrêter ces messages de journal? La chose que je suis perplexe est de savoir pourquoi ils apparaissent en premier lieu si j'ai un app.config vide à être avec. Cela n'a pas de sens pour moi que je dois le configurer pour ne pas imprimer ces messages - la valeur par défaut devrait être désactivée. Se pourrait-il que mon code soit en train de les programmer d'une manière ou d'une autre? Que devrais-je rechercher?

+0

Comme nous pouvons voir, réel asnwer est la configuration de log4net –

+1

en fait, c'est le showsql dans nHibernate .... – Dani

Répondre

80

Configure Log4Net for use with NHibernate peut vous être utile.

Vous devez avoir ces deux enregistreurs:

<logger name="NHibernate"> 
    <level value="ERROR" /> 
</logger> 

<logger name="NHibernate.SQL"> 
    <level value="ERROR" /> 
</logger> 
+1

Ne fonctionne pas, voir la question mise à jour (j'ai ajouté la section de configuration log4net appropriée, aucun effet). – ripper234

+3

En fait, log4net correspond aux noms des enregistreurs commençant par le nom spécifié, donc mettre "NHibernate" filtrera tous les messages NHibernate. –

+0

Je pense que le commentaire de @ Ripper est incorrect, cela fonctionne pour moi et aussi avec ActiveRecord –

1

Voulez-vous désactiver l'enregistrement au niveau NHibernate ou le niveau de Log4Net?

Je fais le premier en mettant la variable "show_sql" à false. Je le fais par programmation en C# en ce moment, mais je suppose que ce serait facile à mettre dans un fichier de configuration XML.

+0

Ne fonctionne pas (http://www.beansoftware.com/asp.net-tutorials/nhibernate-log4net.aspx). Pourquoi le défaut serait-il d'afficher le SQL? Pourrait-il être mon code en quelque sorte tourne de manière pragmatique? – ripper234

+0

Je suis allé vérifier mon code. Je l'ai éteint en commentant show_sql = true. Ça ne fait rien. Pardon. –

+0

Merci a travaillé pour moi. – Jonathan

0

Utilisez-vous NUnit 2.4.6? J'ai lu hier le billet de blog this qui dit que cette version de NUnit configure log4net pour utiliser la journalisation de niveau DEBUG, en effectuant aussi NHibernate. Si ce n'est pas NUnit et ce n'est pas vous, je vérifierais s'il s'agit d'une autre bibliothèque tierce que vous utilisez.

EDIT

À la réflexion, je ne pense pas que la sortie a quelque chose à voir avec log4net. le format ressemble plus à la sortie contrôlée "show_sql". Je voudrais vérifier deux choses: 1. Si le bon (celui avec le show_sql = false) hibernate.config est copié dans votre répertoire d'exécution. 2. Si la propriété de configuration show_sql n'est pas remplacée manuellement dans votre code.

6

Le problème était quelque part dans "mon code". Nous construisons la configuration de NHibernate manuellement (en mettant l'indicateur show_sql à true).

12
return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2005.ConnectionString(
       c => c.FromConnectionStringWithKey("MyDB")).ShowSql()) 

Retrait de la .ShowSql() a fonctionné pour moi

+0

Cela a résolu mon problème, merci! –

+0

Mais que faire si je veux voir sql, mais pas en console? –

2

Pour moi, ce fut le problème NUnit. L'exploitation forestière supplémentaire se passait lors de l'exécution des tests de TeamCity qui doit avoir été en utilisant une version différente de nunit

2

Les journaux NHibernate ne me aident pas beaucoup ... J'aime ces paramètres mieux:

<logger name="NHibernate"> 
     <level value="OFF" /> 
    </logger> 

    <logger name="NHibernate.SQL"> 
     <level value="OFF" /> 
    </logger> 
Questions connexes