【问题标题】:ServiceStack logging setupServiceStack 日志记录设置
【发布时间】:2012-09-03 02:00:32
【问题描述】:

我想让 log4net 和 elmah 工作。我尝试将代码放在 AppHost.cs 中:

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 都没有在我上面的代码中打印任何输出。如果您有使用 ServiceStack 设置 log4net 或 elmah 的经验,请指出我做错了什么?


编辑

将 FileInfo 更改为完整路径,它按照 Stefan Egli 的建议工作!

或者点击项目中的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 ...

似乎网络应用程序在闲置一段时间后自行关闭。然后当我点击网络应用程序时 log4net 无法再次重新启动......知道如何防止这种情况吗?


编辑 2

切换到 NLog,从此幸福...

【问题讨论】:

    标签: c# log4net elmah servicestack


    【解决方案1】:

    Elmah 用于异常记录,因此根据您迄今为止发布的内容,我不希望在 elmah 日志中看到任何内容。 Log4net 可能找不到配置文件:尝试使用完整路径以查看是否可以解决问题。如果确实如此,您需要弄清楚如何动态获得正确的路径。

    【讨论】:

    • 完整路径正在运行!谢谢!问题更进一步。请参阅编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2023-03-23
    • 2020-11-13
    • 2011-07-23
    • 2012-09-24
    相关资源
    最近更新 更多