2012-09-10 4 views
2

Je souhaite que log4net et elmah fonctionnent. J'ai essayé de mettre le code ensemble dans AppHost.cs:Configuration de la journalisation ServiceStack

public class AppHost : AppHostBase { 
    //Tell ServiceStack the name and where to find your web services 
    public AppHost() : base("Backbone.js TODO", typeof(TodoService).Assembly) { } 

    public override void Configure(Funq.Container container) { 
     //... 
     //Log4Net 1.2.11 
     log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config")); 
     container.Register(x => new Log4NetFactory(true)); 
     //Elmah 
     container.Register(x => new ElmahLogFactory(container.Resolve<Log4NetFactory>())); 
     LogManager.LogFactory = container.Resolve<ElmahLogFactory>(); 
     container.Register<ILog>(x => LogManager.GetLogger(GetType())); 
     //... 
    } 

Log4net.config, qui est actuellement juste un enregistreur console ...

<?xml version="1.0" encoding="utf-8" ?> 
    <log4net debug="true"> 
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%method %-5level - %message%newline"/> 
    </layout> 
    </appender> 
    <root> 
    <level value="DEBUG"/> 
    <appender-ref ref="TraceAppender"/> 
    </root> 
</log4net> 

Ensuite, chaque fois que l'enregistreur est nécessaire:

ILog Logger {get; set;} //injected by ioc 
//... 
Logger.Info("Print something"); 

La ligne Logger.Info("...."); est appelée sans erreur, mais ni Log4Net ni Elmah n'impriment aucune sortie dans mon code ci-dessus. Si vous avez de l'expérience dans la configuration de log4net ou d'elmah avec ServiceStack, pourriez-vous indiquer ce que j'ai mal fait?


EDIT

Changé le FileInfo à chemin complet, il a travaillé comme Stefan Egli suggéré!

Ou cliquez sur log4net.config fichier xml dans votre projet, dans la boîte Propriétés

« Copier vers la sortie -> Copier si plus récent »

Cela fera aussi.

Ensuite, quelque chose comme ça arrive:

Auto-attach to process '[11308] w3wp.exe' on machine 'Desktop' succeeded. 
//... printing info now ... 
Backbone.Todos.AppHost: Info INFO - TodoService OnGet 
//... but then after a coffee break ... 
log4net: Hierarchy: Shutdown called on Hierarchy [log4net-default-repository] 
// ... Oops, no longer printing any log ... 

Il semble que l'application Web est allé à l'arrêt lui-même après avoir été inactif pendant un certain temps. Ensuite, log4net ne parvient pas à redémarrer lorsque je clique sur l'application web ... Une idée pour éviter cela?


EDIT 2

Switched à NLog, heureux pour toujours ...

Répondre

4

Elmah est pour l'enregistrement d'exception, donc je ne soupçonniez pas voir quoi que ce soit dans le journal de ELMAH basé sur ce que vous avez publié jusque là. Log4net ne peut probablement pas trouver le fichier de configuration: Essayez d'utiliser un chemin d'accès complet afin de voir si cela résout le problème. Si c'est le cas, vous devez déterminer comment obtenir le chemin correct dynamiquement.

+0

Le chemin complet fonctionne! Je vous remercie! Le problème va un peu plus loin. S'il vous plaît voir modifier. – Tom

Questions connexes