【问题标题】:Logging with Castle Windsor, the Logging Facility and log4net使用 Castle Windsor、Logging Facility 和 log4net 进行日志记录
【发布时间】:2013-08-12 12:08:07
【问题描述】:

我的代码是:

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="MyLog" type="log4net.Appender.RollingFileAppender">
      <file value="logs\log-file.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <maxSizeRollBackups value="2" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %thread %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="MyWayLog" />
    </root>
  </log4net>
</configuration>

LoggerInstaler.cs

public class LoggerInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));
    }
}

MyLogger.cs

private static ILoggerFactory loggera = IoC.Container.Resolve<ILoggerFactory>();

private static ILogger logger = loggera.Create("MyLog"); 

public static ILogger Log
{
    get { return logger; }
    set { logger = value; }
}

当我使用Log.Error("some exception")

在日志文件中,我有来自其他 dll 的其他日志。我只想要我的日志,而不是其他 dll 异常,只需要显式调用 (Log.Error)。

【问题讨论】:

    标签: log4net castle-windsor


    【解决方案1】:

    你必须使用

    <logger name="MyLog"> 
    

    而不是

    <root> 
    

    在 log4net.config 中

    你也可以在 Windsor regitration 中使用 ToLog 方法

    container.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config").ToLog("MyLog"));
    

    不确定您的 MyLogger.cs:由于 Windsor 设施,应该没有必要... 只需在需要时将 ILogger 设置为依赖项

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2013-02-25
      相关资源
      最近更新 更多