2012-09-10 115 views
2

我想log4net的和ELMAH工作。我试图把代码一起AppHost.cs: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,这也是目前只是一个控制台记录...

<?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> 

那么无论是必需的记录:

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

Logger.Info("....");线被称为没有错误,但既不log4net的也不ELMAH正在打印任何输出在我的代码的上方。如果你有经验,建立log4net的或与ELMAH ServiceStack,请你指出我做了什么错?


编辑

改变了FileInfo的完整路径,它的工作是斯特凡艾格里建议!

或单击项目log4net.config xml文件,在属性框中

“复制到输出 - >复制,如果新”

这将做,太。

然后,像这样出现:

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 ... 

这似乎是Web应用程序去关闭本身在闲置一段时间后。然后log4net无法重新启动,当我点击Web应用程序...任何想法如何防止这种情况?


EDIT 2

切换到NLOG,从此过上幸福......

回答

4

ELMAH是异常日志记录,所以我不希望看到基础上ELMAH日志任何你贴什么至今。 log4net的可能找不到配置文件:尝试使用,以一个完整路径,看看是否能解决此问题。如果确实如此,您需要弄清楚如何动态获取正确的路径。

+0

完整路径是工作!谢谢!问题进一步发展。请参阅编辑。 – Tom