c# - 城堡记录设施

标签 c# logging castle-windsor

在 LoggingFacility 文档 (http://docs.caSTLeproject.org/Windsor.Logging-Facility.ashx) 中说明如下:

“允许您请求一个 ILoggerFactory 实例来为非 Windsor 管理的类提供日志记录支持”

但是如果我的类不是由 Windsor 管理的,我该如何实际请求一个 ILoggerFactory 实例?

TIA

索伦

继续:

我对使用 Windsor (IoC) 还很陌生,所以当你说“你为什么不用 Windsor 的类(class)经理”时,我开始怀疑你是不是说所有的类(class)都应该由 Windsor 管理。 .

我正在处理一些遗留代码,必须在其上创建一个服务接口(interface)......类似:

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 以某种方式从 Windsor 获取记录器......我只是不确定最好的方法是什么.....

TIA 索伦

最佳答案

container.Resolve<ILoggerFactory>()你自己管理工厂并获取记录器。但问题是 - 为什么您没有 Windsor 的类(class)经理?

关于c# - 城堡记录设施,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5819323/

相关文章:

c# - 防止所有机器人访问页面

c# - 从代码访问 div 元素

c++ - 延迟评估和/或灵活的宏名称

java - slf4j 日志记录 - 两种错误日志记录方法之间的差异(带和不带 Throwable)

c# - CaSTLe 温莎 Controller 工厂和 RenderAction

c# - 城堡温莎传递参数

c# - html:点击 href 链接后执行其他操作

c# - mvvmcross 与 xamarin.ios

python - 记录格式右对齐级别名称

c# - CaSTLe 组件处理顺序