Hi,

Anyone knew or met similar issue below? Thanks in advance.

Best regards.

-----Original Message-----
From: Maple Wang [mailto:maple.feng.w...@hotmail.com] 
Sent: Tuesday, August 09, 2016 6:15 PM
To: Log4J Users List
Subject: why MutableLogEvent don't keep the ReusableObjectMessage

Hi,

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.

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to