- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 log4j2 编写了一个自定义 Appender。有什么简单的方法可以使其成为单例吗?我正在使用@Plugin 和@PluginFactory。
实际上,这是我遇到的问题(是的,看起来使其成为单例并不是一个解决方案)。我使用以下代码创建了一个自定义附加程序
MyAppender myAppender = MyAppender.createAppender(MyAppender.MY_APPENDER_NAME);
final LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false);
final Configuration config = loggerContext.getConfiguration();
myAppender.start();
config.addAppender(myAppender);
AppenderRef[] refs = new AppenderRef[] { AppenderRef.createAppenderRef(MyAppender.MY_APPENDER_NAME, null, null) };
LoggerConfig loggerConfig = LoggerConfig.createLogger("false", Level.DEBUG, Logger.getRootLogger().getName(), "true", refs, null, config, null);
loggerConfig.addAppender(myAppender, Level.DEBUG, null);
config.addLogger(Logger.getRootLogger().getName(), loggerConfig);
ctx.updateLoggers();
return myAppender;
我的附加程序有另一个方法 xyz()。当我尝试使用以下代码调用 xyz 时,它改为调用appender 的append 方法。这非常令人惊讶,我不知道为什么会发生这种情况。
myAppender = (MyAppender) Logger.getRootLogger().getAppender(MyAppender.MY_APPENDER_NAME);
myAppender.xyz()
此外,当我创建另一个附加程序实例时,而不是使用 getAppender 获取它,它工作得很好。 :(
最佳答案
您可以创建一个实例,将其缓存在静态最终字段中,然后从带 @PluginFactory 注释的工厂方法返回该实例。
假设您希望在修改配置时明确阻止用户修改您的附加程序的参数,这就是您将其设为单例的动机吗?
关于java - 使用 @PluginFactory 的 log4j2 单例自定义附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41492947/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!