Maple Wang created LOG4J2-1510:
----------------------------------

             Summary: why MutableLogEvent don't keep the ReusableObjectMessage
                 Key: LOG4J2-1510
                 URL: https://issues.apache.org/jira/browse/LOG4J2-1510
             Project: Log4j 2
          Issue Type: Question
          Components: Core
    Affects Versions: 2.6.2
            Reporter: Maple Wang
            Priority: Blocker


After upgrading Log4j from 2.5 to 2.6.2, I found that log event catched by my 
appender is changed from Log4jLogEvent to MutableLogEvent, it's fine except 
that I can't get the ObjectMessage from MutableLogEvent. If I sent object 
message thought log4j API like log.info(object);, I assume object can be 
obtained in ReusableObjectMessage, but since MutableLogEvent look like don't 
keep it as below:

public void setMessage(final Message msg) {
        if (msg instanceof ReusableMessage) {
            final ReusableMessage reusable = (ReusableMessage) msg;
            reusable.formatTo(getMessageTextForWriting());
            if (parameters != null) {
                parameters = reusable.swapParameters(parameters);
                parameterCount = reusable.getParameterCount();
            }
        } else {
            // if the Message instance is reused, there is no point in freezing 
its message here
            if (!Constants.FORMAT_MESSAGES_IN_BACKGROUND && msg != null) { // 
LOG4J2-898: user may choose
                msg.getFormattedMessage(); // LOG4J2-763: ask message to freeze 
parameters
            }
            this.message = msg;
        }
}

So ,  when I call the getMessage from MutableLogEvent like below, I only can 
get the instance of MutableLogEvent itself.

public Message getMessage() {
        if (message == null) {
            return (messageText == null) ? EMPTY : this;
        }
        return message;
    }

I know I can use other MessageFactory to bypass it, but why MutableLogEvent 
don't keep the ReusableObjectMessage, is that on purpose? Is there other way to 
get the ReusableObjectMessage from MutableLogEvent?

Best reagrds.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to