- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于此类:
class Foo
{
readonly ILog log;
public Foo(ILog log)
{
this.log = log;
}
...
}
我想配置 Unity 以注入(inject) ILog。这很简单:
container.RegisterInstance<ILog>(LogManager.GetLogger(typeof(XYZ)));
但我想让 Unity 调用 LogManager.GetLogger
并解析父类型的类型。
这很接近:
container.RegisterType<ILog>(new InjectionFactory((c, t, s) => LogManager.GetLogger(t)));
但在本例中,t
是正在解析的类型 (ILog
),而不是正在解析的对象的类型 (Foo
)。
我知道我能做到:
container.RegisterType<Foo>(new InjectionFactory(c => new Foo(LogManager.GetLogger(typeof(Foo)));
但我不想每次注册对象时都添加那个疯狂的声明。
我知道这可以在 Autofac 中完成,而且我知道真正的答案不是首先使用 Unity,但这可以完成吗? :)
最佳答案
Unity 可能无法为您提供其他一些容器提供的所有好处,但我还没有找到您无法轻松添加的功能。
var container = new UnityContainer();
container.AddNewExtension<TrackingExtension>();
container.RegisterType<ILog>(
new InjectionFactory((ctr, type, name) =>
{
var tracker = ctr.Resolve<ITracker>();
var parentType = tracker.CurrentBuildNode.Parent.BuildKey.Type;
return LogManager.GetLogger(parentType);
}));
var sut = container.Resolve<UsesLog>();
Assert.AreEqual(typeof(UsesLog), sut.Log.Type);
您可以找到 TrackingExtension 的源代码 here 。它位于 TecX.Unity 项目文件夹中。
关于log4net - 将 LogManager.GetLogger 与 Unity 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576842/
我正在努力提高我的 Java 优化技能。为了实现这一目标,我制作了一个旧程序,我正在尽最大努力让它变得更好。在这个程序中,我使用 SL4J 进行日志记录。为了获得记录器,我做了: private st
我正在尝试使用 log4j2 在 Java 中创建一个简单的日志记录应用程序。 看起来是这样的: package com.company; import java.io.IOException; im
我创建了一个扩展 logging.Logger 的 CustomLogger。我正在尝试使用 getLogger 来获取我的记录器实例化。这是我的代码: import os import sys im
我尝试将 getLogger 放在模块级别。然而,它也有一些缺点。这是我的例子: from logging.handlers import TimeRotatingFileHandler log_mo
在我的模块我有这个: import logging import my_module_name.log log = logging.getLogger(__name__) 这工作正常,但我希望能够覆盖
如何获取给定 python 实例的日志文件路径 logging调用 getLogger() 后的对象? 我的 python 应用程序在主 python 脚本中设置日志记录如下。 import logg
我将 copy-webpack-plugin 从 4.6.0 升级为 6.0.2我改变了我的代码 plugins: [ new CopyWebpackPlugin([{ from:
我设置了一个基本的 Java 程序。我正在关注这个tutorial并有这个确切的代码: import org.slf4j.Logger; import org.slf4j.LoggerFactory;
我想知道如何获取我的自定义记录器通过log4j的LogManger.getLogger()方法。 我几乎确定我的项目不需要自定义记录器并使用默认的 log4j 记录器。 但是,如有必要,我想使用自定义
我已经阅读了大量帖子和文档(在本网站和其他地方),指出 SFL4J 日志记录的推荐模式是: public class MyClass { final static Logger logger
为什么大多数 log4net 示例通过这样做来获取类的记录器: private static ILog logger = LogManager.GetLogger( System.Re
这个问题在这里已经有了答案: python & suds “ImportError: cannot import name getLogger” 但是我好像遇到了一个无法用答案解释的情况。 详情如下:
当我执行以下代码时,日志事件仅记录一次。我正在使用 log4j2 记录器。但是当我使用 java.util.logger 时,所有 3 个日志事件均已成功发布。 public class Tes
稍后编辑:(为什么我认为这与 here 的情况不同) 所有操作都在一个实例方法中完成,进进出出,我处理的每个文件一次。我提取的本地字段(而不是内联)没有在其他任何地方使用,所以 GC 在迭代后无论如何
要在 Java 中使用记录器,现在我使用如下代码: Logger logger = Logger.getLogger("MyLog"); FileHandler fh; try { // This
来自logging howto对于 Python 2.7(我的重点): A good convention to use when naming loggers is to use a module-
我有这段代码要测试: log = logging.getLogger(__name__) class A(object): def __init__(self): log.de
Logger来自log4j自己的包。如果用Logger.getLogger,需要一个log4j的jar包,用此方式你只能依log4j: LogFactory来自common-logging包。如果
我知道应该通过 LogManager.getLogger() 创建一个 log4j 记录器实例,它会执行一些反射魔法来检测调用类,因此名称对于特定的日志级别配置很重要。但是,如果我不喜欢手动创建记录器
我正在处理一些遗留代码,其中包含很多代码 private final Logger logger = LogManager.getLogger(ThisClassName.class); 我想知道输入
我是一名优秀的程序员,十分优秀!