[
https://issues.apache.org/jira/browse/LOG4J2-2720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16973027#comment-16973027
]
Ralph Goers commented on LOG4J2-2720:
-------------------------------------
This appender is very similar to the ListAppender used in Log4j's unit tests
which is known to work. Can you provide a sample project that demonstrates the
problem?
> TestAppender based on MutableLogEvent stop working in Log4j2.11
> ---------------------------------------------------------------
>
> Key: LOG4J2-2720
> URL: https://issues.apache.org/jira/browse/LOG4J2-2720
> Project: Log4j 2
> Issue Type: Question
> Affects Versions: 2.11.2
> Environment: JDK 11, Log4J-2.11.2
> Reporter: Adwait Kumar Singh
> Priority: Critical
> Fix For: 2.8
>
>
> I have written unit tests on Logs by creating a custom appender
>
> {color:#000080}import {color}java.io.Serializable;
> {color:#000080}import {color}java.util.ArrayList;
> {color:#000080}import {color}java.util.List;
> {color:#000080}import {color}org.apache.logging.log4j.core.Filter;
> {color:#000080}import {color}org.apache.logging.log4j.core.Layout;
> {color:#000080}import {color}org.apache.logging.log4j.core.LogEvent;
> {color:#000080}import
> {color}org.apache.logging.log4j.core.appender.AbstractAppender;
> {color:#000080}import
> {color}org.apache.logging.log4j.core.config.plugins.{color:#808000}Plugin{color};
> {color:#000080}import
> {color}org.apache.logging.log4j.core.config.plugins.{color:#808000}PluginAttribute{color};
> {color:#000080}import
> {color}org.apache.logging.log4j.core.config.plugins.{color:#808000}PluginElement{color};
> {color:#000080}import
> {color}org.apache.logging.log4j.core.config.plugins.{color:#808000}PluginFactory{color};
> {color:#000080}import
> {color}org.apache.logging.log4j.core.impl.MutableLogEvent;
> {color:#000080}import
> {color}org.apache.logging.log4j.core.layout.PatternLayout;
> {color:#808000}@Plugin{color}(name = {color:#008000}"TestAppender"{color},
> category = {color:#008000}"Core"{color}, elementType =
> {color:#008000}"appender"{color}, printObject = {color:#000080}true{color})
> {color:#000080}public class {color}TestAppender {color:#000080}extends
> {color}AbstractAppender {
> {color:#000080}private {color}List<String> {color:#660e7a}messages {color}=
> {color:#000080}new {color}ArrayList<>();
> TestAppender(String name, Filter filter, Layout<? {color:#000080}extends
> {color}Serializable> layout) {
> {color:#000080}super{color}(name, filter, layout);
> }
> {color:#808000}@Override
> {color} {color:#000080}public void {color}append(LogEvent event) {
> getMessages().add(((MutableLogEvent) (event)).getFormattedMessage());
> }
> {color:#808000}@PluginFactory
> {color} {color:#000080}public static {color}TestAppender createAppender(
> {color:#808000}@PluginAttribute{color}({color:#008000}"name"{color}) String
> name,
> {color:#808000}@PluginElement{color}({color:#008000}"Layout"{color})
> Layout<? {color:#000080}extends {color}Serializable> layout,
> {color:#808000}@PluginElement{color}({color:#008000}"Filter"{color})
> {color:#000080}final {color}Filter filter,
>
> {color:#808000}@PluginAttribute{color}({color:#008000}"otherAttribute"{color})
> String otherAttribute) {
> {color:#000080}if {color}(name == {color:#000080}null{color}) {
> {color:#660e7a}LOGGER{color}.error({color:#008000}"No name provided for
> TestAppender"{color});
> {color:#000080}return null{color};
> }
> {color:#000080}if {color}(layout == {color:#000080}null{color}) {
> layout = PatternLayout.createDefaultLayout();
> }
> {color:#000080}return new {color}TestAppender(name, filter, layout);
> }
> {color:#000080}public {color}List<String> getMessages() {
> {color:#000080}return {color}{color:#660e7a}messages{color};
> }
> {color:#000080}public void {color}clearAppender() {
> {color:#000080}this{color}.{color:#660e7a}messages {color}=
> {color:#000080}new {color}ArrayList<>();
> }
> }
> After moving to Log4j2.11, I am seeing that the getMessages is returning
> empty after I am logging something. I attached a debugger and can see that
> the append() method is being invoked and the message list is getting
> populated, however at the time of verififcation it is magically vanishing
> off. Reverting back to 2.8 fixes this.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)