我在Spring做这样的静态变量。
public class A {
private static final Map<String, Session> listMap = new HashMap<>();
public static Map<String> getMap() { return this.listMap.values() }
public static void addMap(String name, Session s) { return this.listMap.put(name, s) }
}
我保存在服务层。
@Slf4j
public class BService {
public void addSession(String name, Session s) {
A.addMap("a", s);
log.info("added!");
}
}
保存后,我在自定义appender中使用了它。(https://www.baeldung.com/log4j2-custom-appender)
@Plugin(
name = "MapAppender",
category = Core.CATEGORY_NAME,
elementType = Appender.ELEMENT_TYPE)
public class MapAppender extends AbstractAppender {
private ConcurrentMap<String, LogEvent> eventMap = new ConcurrentHashMap<>();
protected MapAppender(String name, Filter filter) {
super(name, filter, null);
}
@PluginFactory
public static MapAppender createAppender(
@PluginAttribute("name") String name,
@PluginElement("Filter") Filter filter) {
return new MapAppender(name, filter);
}
@Override
public void append(LogEvent event) {
Map<> resultMap = A.getMap();
send()
}
}
但是,当执行appender的append()方法时,A.getMap()
不返回任何内容(大小为0)。(A.getMap()在服务层中正确返回。)为什么静态值不同?。。
调用addSession
时加载listMap
,因此调用append()
方法时,它为空
我对使用Spring、SLF4J和logback是新手。我试图实现一个自定义数据库追加器,它将只记录Spring批处理期间数据库的特定类型的异常。 到目前为止,我已经开始在spring中设置一个扩展AppenderBase类的Logback Database Appender,然后设置一个扩展InitializingBean的初始化器,以便在spring初始化后将Appender添加到根记录器(这
我正在我的web项目中使用log4j2。我试图通过扩展AbstractAppender将日志直接放入Kafka。根据文档,我的理解是我可以为一个自定义的附加器指定patternlayout,并且设置好了,我的记录器将用格式化的字符串向kafka发送日志事件,但这并没有发生。log4j2.xml看起来像
主要内容:Log4j Appender Properties配置Log4j 提供 Appender 对象,主要负责将日志消息打印到不同的目的地,例如控制台、文件、NT 事件日志、Swing 组件、JMS、远程 UNIX 系统日志守护进程、Socket套接字等。 每个 Appender 对象都有与其相关的不同属性,这些属性指定了该对象的行为。 属性 描述 layout Appender 使用 Layout 对象和与它们关联的转换模式来格式化日志信息。 targe
下面是我使用的一些代码: 如何只打印信息日志?
我创建了一个自定义的Log4J2Kafka附加器,因为我需要以协议缓冲区格式发送消息。当我运行应用程序时,我看到以下警告。如何使自定义追加器覆盖默认追加器? 插件[kafka]已经映射到类org.apache.logging.log4j.core.appender.mom.kafka.kafkaappender,忽略了类com.abc.appender.kafkaappender 注意:我阅读了h
我正在尝试为log4j2.0创建一个自定义appender,但是在获取log4j配置以识别appender时遇到问题。我知道log4j 2.0不支持配置属性中的包。因此,正如这里所建议的,我尝试使用纯javac运行代码,但即使如此,它也会出现以下错误: 这是我的自定义附件: 和我的配置xml: 提前感谢您提供的有用信息