- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是被困住了,需要一些指导。我已经按照说明创建了自己的日志记录实现、日志记录工厂和 guice 模块;但只是不确定我错过了什么......
我的自定义记录器是通过工厂实现的。这从 jClouds BaseLogger 延伸而来。 ;未显示的是实际的日志记录功能。还创建了工厂,它是我基于其 Log4JLogger Factory 的实现而创建的。 。在此,我需要一个静态 getLogger 并使用 slf4j 的 LoggerFactory 并将其转换为 jClouds 接口(interface)类型 Logger。我添加了“@Inject”注释,但我觉得这应该是在 jClouds 端,而不是我的。 (没有把握)。我错过了什么??
import org.jclouds.logging.BaseLogger;
import org.jclouds.logging.Logger;
import com.google.inject.Inject;
public class NullLoggerExt extends BaseLogger {
private final org.jclouds.logging.Logger logger;
public static class NullLoggerExtFactory implements LoggerFactory {
public Logger getLogger(String category) {
return new NullLoggerExt( (Logger) org.slf4j.LoggerFactory.getLogger(category) );
}
}
@Inject <--- is this what I need?
public NullLoggerExt(org.jclouds.logging.Logger logger) {
this.logger = logger;
}
.
. (implemented abstract methods)
.
}
我的自定义记录器模块
import NullLoggerExt;
import org.jclouds.logging.Logger.LoggerFactory;
import org.jclouds.logging.config.LoggingModule;
public class NullLoggerModuleExt extends LoggingModule {
@Override
public LoggerFactory createLoggerFactory() {
return new NullLoggerExt.NullLoggerExtFactory();
}
}
我的 Guice 模块
import NullLoggerExt;
import com.google.inject.AbstractModule;
import org.jclouds.logging.Logger;
public class BindLoggerModule extends AbstractModule {
@Override
protected void configure() {
bind(Logger.class).to(NullLoggerExt.class);
}
}
本节将描述我在哪里使用它。
public class CloudHandler
{
//Actual logger
private static final Iterable<Module> detailedTrace =
ImmutableSet.<Module> of( new SLF4JLoggingModule() );
Injector injector = Guice.createInjector(new BindLoggerModule());
NullLoggerModuleExt customLog = injector.getInstance(NullLoggerModuleExt.class);
//My performance logger
private final Iterable<Module> baseLog =
ImmutableSet.<Module> of( customLog );
public int connect( ... ) {
contextBuilder...
//Problem area
if (debug mode == true)
contextBuilder.modules( detailedTrace );
else
contextBuilder.modules( baseLog );
//Throws CreationException
ctx = contextBuilder.buildView( BlobStoreContext.class );
return Success or Failure;
}
}
最佳答案
这种方法是错误的,因为您试图注入(inject)绑定(bind)到完全相同的类的 Logger 实现,因此您将在那里得到一个递归循环。
如果您只是想修改 SLF4j 日志记录驱动程序的工作方式,您可以扩展它的类。但是,如果您尝试使用 null 记录器“装饰”任何 jclouds 记录器,然后在需要时委托(delegate)给日志记录驱动程序,则可以使用以下日志记录类和模块来寻求更通用的方法:
static class DelegatingNullLogger extends BaseLogger {
private final Logger logger;
public static class DelegatingNullLoggerFactory implements LoggerFactory {
private final LoggerFactory delegate;
public DelegatingNullLoggerFactory(LoggerFactory delegate) {
this.delegate = checkNotNull(delegate, "delegate");
}
@Override
public Logger getLogger(String category) {
return new DelegatingNullLogger(delegate.getLogger(category));
}
}
public DelegatingNullLogger(Logger logger) {
this.logger = logger;
}
// Implement methods
}
static class NullDelegatingLoggingModule extends LoggingModule {
private final LoggerFactory loggerFactory;
public NullDelegatingLoggingModule(LoggerFactory loggerFactory) {
this.loggerFactory = checkNotNull(loggerFactory, "loggerFactory");
}
@Override
public LoggerFactory createLoggerFactory() {
return new DelegatingNullLogger.DelegatingNullLoggerFactory(loggerFactory);
}
}
此代码将首先创建一个记录器,当涉及到日志消息时,该记录器将委托(delegate)给底层记录器,可以是 Log4j、SLF4j 或其他记录器,并且提供的模块配置将传递的委托(delegate)记录器。
您可以按如下方式使用它,例如将 null 记录器委托(delegate)给 SLF4j 日志记录驱动程序:
LoggerFactory loggerFactory = new SLF4JLogger.SLF4JLoggerFactory();
LoggingModule loggingModule = new NullDelegatingLoggingModule(loggerFactory);
BlobStoreContext ctx = ContextBuilder.newBuilder("provider")
.modules(ImmutableSet.of(loggingModule))
(...)
.buildView(BlobStoreContext.class);
关于java - 使用 JClouds 和 Guice 依赖注入(inject)创建自定义记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28722666/
我正在尝试测试依赖于其他服务 authService 的服务 documentViewer angular .module('someModule') .service('docu
如果我的网站上线(不要认为它会,目前它只是一个学习练习)。 我一直在使用 mysql_real_escape_string();来自 POST、SERVER 和 GET 的数据。另外,我一直在使用 i
我有以下代码,它容易受到 SQL 注入(inject)的攻击(我认为?): $IDquery = mysqli_query($connection, "SELECT `ID` FROM users W
我一直在自学如何创建扩展,以期将它们用于 CSS 注入(inject)(以及最终以 CSS 为载体的 SVG 注入(inject),但那是以后的问题)。 这是我当前的代码: list .json {
这个简单的代码应该通过 Java Spring 实现一个简单的工厂。然而结果是空指针,因为 Human 对象没有被注入(inject)对象(所以它保持空)。 我做错了什么? 谢谢 配置 @Config
我正在编写一个 ASP.NET MVC4 应用程序,它最终会动态构建一个 SQL SELECT 语句,以便稍后存储和执行。动态 SQL 的结构由用户配置以用户友好的方式确定,具有标准复选框、下拉列表和
首先让我说我是我为确保 SQL 注入(inject)攻击失败而采取的措施的知己。所有 SQL 查询值都是通过事件记录准备语句完成的,所有运算符(如果不是硬编码)都是通过数字白名单系统完成的。这意味着如
这是 SQL 映射声称可注入(inject)的负载: user=-5305' UNION ALL SELECT NULL,CONCAT(0x716b6b7071,0x4f5577454f76734
我正在使用 Kotlin 和 Android 架构组件(ViewModel、LiveData)构建一个新的 Android 应用程序的架构,并且我还使用 Koin 作为我的依赖注入(inject)提供
假设 RequestScope 处于 Activity 状态(使用 cdi-unit 的 @InRequestScope) 给定 package at.joma.stackoverflow.cdi;
我有一个搜索表单,可以在不同的提供商中搜索。 我从拥有一个基本 Controller 开始 public SearchController : Controller { protected r
SQLite 注入 如果您的站点允许用户通过网页输入,并将输入内容插入到 SQLite 数据库中,这个时候您就面临着一个被称为 SQL 注入的安全问题。本章节将向您讲解如何防止这种情况的发生,确保脚
我可以从什么 dll 中获得 Intercept 的扩展?我从 http://github.com/danielmarbach/ninject.extensions.interception 添加了
使用 NInject 解析具有多个构造函数的类似乎不起作用。 public class Class1 : IClass { public Class1(int param) {...} public
我有一个 MetaManager 类: @Injectable() export class MetaManager{ constructor(private handlers:Handler
我是 Angular 的新手,我不太清楚依赖注入(inject)是如何工作的。我的问题是我有依赖于服务 B 的服务 A,但是当我将服务 A 注入(inject)我的测试服务 B 时,服务 B 变得未定
我正在为我的项目使用 android 应用程序启动、刀柄和空间。我在尝试排队工作时遇到错误: com.test E/WM-WorkerFactory: Could not instantiate co
我不确定这是什么糖语法,但让我向您展示问题所在。 def factors num (1..num).select {|n| num % n == 0} end def mutual_factors
简单的问题,我已经看过这个了:Managing imports in Scalaz7 ,但我不知道如何最小化注入(inject) right和 left方法到我的对象中以构造 \/ 的实例. 我确实尝
在我的 Aurelia SPA 中,我有一些我想在不同模块中使用的功能。它依赖于调用时给出的参数和单例的参数。有没有办法创建一个导出函数,我可以将我的 Auth 单例注入(inject)其中,而不必在
我是一名优秀的程序员,十分优秀!