ServiceStack .net项目和log4net问题

时间:2014-08-04 22:51:08

标签: servicestack log4net

我正在尝试在我的.net应用程序上设置log4net日志记录。我想登录一个文件。

我已经四处寻找如何设置它并尝试解决这个问题一段时间所以我想我会发布。我有三个地方的日志代码。它似乎工作在两个而不是一个。我只会包含我认为相关的代码。

在我的AppHost.cs中(这正确写入我的日志文件)

 using log4net;

 ....

 private static readonly ILog log = LogManager.GetLogger("BensLogger");
 public static void Start()
    {
        log.Info("Entering application apphost.");
        new AppHost().Init();
    }

....

接下来在我的Global.asax.cs中(这也正确记录到我的文件中)

using log4net;

....

private static readonly ILog log = LogManager.GetLogger("BensLogger");
    protected void Application_Start()
    {
        log4net.Config.XmlConfigurator.Configure();
        log.Info("Entering application global.asax.cs.");
    }

....

我的Service类下面的日志代码不会记录到该文件。

using log4net;
using log4net.Config;

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\Users\\balibasic\\Documents\\Visual Studio 2012\\Projects\\Latest Rewo July 31-2014\\trunk\\RewoServiceLayer\\Log4Net.config", Watch = true)]

....

public class FriendService : Service
    {
        private static readonly ILog log = LogManager.GetLogger("BensLogger");

        public object Post(FriendRequestRequestDTO friendRequest)
        {
            log.Info("Entering service.");
        }
    }
....

我测试它的方法是通过代码调用服务。当我调试并逐步执行时,我看到记录器已初始化,“isInfoEnabled”属性为“true”以及日志记录级别的所有其他属性。我认为它应该能够记录所有级别的那一点。

我没有在配置或运行时遇到任何错误,我可以看到它看起来像是尝试记录但没有任何反应。

我引用的log4net.config文件在这里

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, requirePermission=false" />
  </configSections>
  <log4net>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <file value="example.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <maxSizeRollBackups value="2" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingFile" />
    </root>
    <logger name="BensLogger">
      <level value="DEBUG" />
      <appender-ref ref="RollingFile" />
    </logger>
  </log4net>
  <system.web>
      <compilation debug="true" targetFramework="4.0" />
  </system.web>

</configuration>

我在Visual Studio中运行应用程序并使用其中的日志代码调用服务方法后,我的日志文件如下所示。

2014-08-04 17:34:54,735 [1] INFO BensLogger - Entering application apphost.
2014-08-04 17:34:54,735 [1] INFO BensLogger - Entering application apphost.
2014-08-04 17:34:55,176 [1] INFO BensLogger - Entering application global.asax.cs.
2014-08-04 17:34:55,176 [1] INFO BensLogger - Entering application global.asax.cs.

正如您所看到的,它包含来自apphost和global.asax.cs但不是FriendService类的消息。

如果我忘了某些内容,或者有人想看到其他内容,我可以提供更多信息。

0 个答案:

没有答案