Skip to content

logback-appender structured arguments incorrect subclass #15290

@defields923

Description

@defields923

Describe the bug

For reference: #14959

This PR was released in the newest version. I noticed that the check for instanceof in isLogstashStructuredArgument may not be targeting the correct class, and so MapEntriesAppendingMarker instances will not pass the check. There is logic further down the line that attempts to handle it, but the code will fail this first check.

@NoMuzzle
  private static boolean isLogstashStructuredArgument(Object argument) {
    return argument instanceof SingleFieldAppendingMarker;
  }

MapEntriesAppendingMarker is not extending/implementing SingleFieldAppendingMarker

public class MapEntriesAppendingMarker extends LogstashMarker implements StructuredArgument {
public abstract class SingleFieldAppendingMarker extends LogstashMarker implements StructuredArgument {

Steps to reproduce

Create a log using StructuredArguments.entries:

Map<String, Object> eventData = new HashMap<>();
eventData.put("functionName", "LoggerController.logCustomEvent");
log.info("STRUCTURED ARGS 2: Logging mock object:", StructuredArguments.entries(eventData));

Expected behavior

Resulting log should include the Map entries in the record.

Actual behavior

The resulting log is completely missing any data from entries.

The actual result in fluentbit:

[8] v1_logs: [[1763049975.678229241, {"otlp"=>{"observed_timestamp"=>1763049975409049851, "timestamp"=>1763049975408948976, "severity_number"=>9, "severity_text"=>"INFO", "trace_id"=>"\xfb\x9e\x11\xf95%\xdd\xa8dx!q\xb1\x8f^\xee", "span_id"=>"\x01\x1e\x0c\x83G\xc0n|", "trace_flags"=>1}}], {"log"=>"STRUCTURED ARGS 2: Logging mock object:"}]

Javaagent or library instrumentation version

2.21.0

Environment

JDK: openJDK 21
OS: macOS 15.7.1 (24G231)
Spring Boot: 3.5.5

Additional context

No response

Tip

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds triageNew issue that requires triage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions