You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Adwait Kumar Singh (Jira)" <ji...@apache.org> on 2019/11/13 04:17:00 UTC

[jira] [Updated] (LOG4J2-2720) TestAppender based on MutableLogEvent stop working in Log4j2.11

     [ https://issues.apache.org/jira/browse/LOG4J2-2720?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Adwait Kumar Singh updated LOG4J2-2720:
---------------------------------------
    Priority: Critical  (was: Blocker)

> 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)