Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LOG4J2-2749 - fix JSON Layout output containing empty values while configured otherwise #362

Merged

Conversation

akhomchenko
Copy link
Contributor

@akhomchenko akhomchenko commented May 29, 2020

Description

Log4jJsonObjectMapper has JsonInclude.Include.NON_EMPTY enabled but it is not working at the moment - keys with empty values are still present in output. It is caused by bug in jackson-databind which I have fixed. Fix was released as part of jackson-databind:2.11.x.

Why LOG4J2-2749?

I feel this fix will address user request.

Issue itself

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <JsonLayout compact="true" properties="true">
                <KeyValuePair key="empty" value="${ctx:empty:-}"/>
            </JsonLayout>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Main.java

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Main {
    private static final Logger logger = LogManager.getLogger();

    public static void main(String[] args) {
        logger.info("info");
    }
}

Output

{"instant":{"epochSecond":1590743485,"nanoOfSecond":93000000},"thread":"main","level":"INFO","loggerName":"org.apache.logging.log4j.core.Main","message":"info","endOfBatch":false,"loggerFqcn":"org.apache.logging.log4j.spi.AbstractLogger","contextMap":{},"threadId":1,"threadPriority":5,"empty":""}

Notes

  • I have chosen release-2.x while I have actually developed a patch on 2.13.3 tag. I can rebase to any other brach, just let me know which one.

@vy
Copy link
Member

vy commented May 29, 2020

Thanks for the patch @gagoman! release-2.x builds are failing right now due to some other problem. Once they got fixed, I will merge the PR.

@akhomchenko
Copy link
Contributor Author

Awesome, thanks! Please let me know if any changes or rebase to other branch is required.

@akhomchenko
Copy link
Contributor Author

@vy sorry for a ping. Any chance to get this merged?

@vy
Copy link
Member

vy commented Jun 30, 2020

Hey @gagoman! We already have the Jackson version upgrade along with another change (#335) waiting for its last review by @rgoers. Nevertheless, your changes include a test, which is good. Hence I am merging it.

@vy vy merged commit 583df1a into apache:release-2.x Jun 30, 2020
@akhomchenko akhomchenko deleted the feature/update-jackson-empty-string branch August 30, 2020 19:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants