В документации LoggingFacility (http://docs.castleproject.org/Windsor.Logging-Facility.ashx) указано следующее:
"Разрешить запросить экземпляр ILoggerFactory для поддержки журналирования классов, которые не управляются Windsor"
но как мне на самом деле запросить экземпляр ILoggerFactory, если мой класс не управляется Windsor ??
TIA
Søren
продолжение:
iЯ довольно новичок в использовании Windsor (IoC), поэтому, когда вы говорите «почему бы вам не иметь диспетчер классов от Windsor», я начинаю задумываться, говорите ли вы, что все классы должны управляться Windsor ...
Я работаю над некоторым устаревшим кодом и должен создать поверх него интерфейс службы ... что-то вроде:
namespace RESTServer.WindsorTestService
{
[ServiceContract(Namespace = "urn: RESTServer_WindsorTestService:IMyServiceClass")]
public interface IMyServiceClass
{
ILogger Logger // Will be injected by Windsor
{ get; set; }
[OperationContract]
[WebGet(UriTemplate = "MyMethod")]
int MyServiceMethod();
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class MyServiceClass : IMyServiceClass
{
private ILogger _logger = NullLogger.Instance;
public ILogger Logger // Will be injected by Windsor
{
get { return _logger; }
set { _logger = value; }
}
public int MyServiceMethod()
{
// ... which will populate val1, val2, val3
var val1 = 1;
var val2 = 10;
var val3 = 100;
var myCalc = new myLegacyClass(val1, val2, val3);
return myCalc.DoCalculate(1000);
}
}
public class myLegacyClass
{
private int _val1;
private int _val2;
private int _val3;
private static readonly ILog _logger = LogManager.GetLogger(typeof(myLegacyClass));
public myLegacyClass(int val1, int val2, int val3)
{
_val1 = val1;
_val2 = val2;
_val3 = val3;
}
public int DoCalculate(int val4)
{
_logger.Info("Doing some calculation");
return _val1 + _val2 + _val3;
}
}
}
, где старый код уже использует log4net .... Это работаетхорошо, но мне было интересно, нужно ли изменить myLegacyClass, чтобы каким-то образом получить регистратор от Виндзора ... Я просто не уверен, что будет лучшим способом .....
TIA Søren