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 ...
Le chemin complet fonctionne! Je vous remercie! Le problème va un peu plus loin. S'il vous plaît voir modifier. – Tom