Skip to content

Conversation

exceptionfactory
Copy link
Contributor

Summary

NIFI-14991 Adds Process Group attributes to the context of Component Logs, supporting additional logging information related to Process Group containing the Component that is generating the log.

The implementation updates the SimpleProcessLogger framework implementation of the ComponentLog interface and adds the following attributes to the Mapped Diagnostic Context when writing log messages:

  • processGroupId
  • processGroupName
  • processGroupIdPath
  • processGroupNamePath

These attributes are available in the Logback MDC for optional inclusion in log messages.

The processGroupId and processGroupName values reflect the current values of the direct Process Group that contains the Component, such as a Processor or Controller Service. The processGroupIdPath starts with a forward slash character, followed by one or more Process Group Identifiers, from the root level to the lowest level, ending with the direct Process Group Identifier. The processGroupNamePath follows the same structure, using Process Group Names instead of Identifiers.

The implementation scopes MDC interaction to the SimpleProcessLogger.log() method, clearing attributes immediately after generating the log record. The framework StandardProcessGroup maintains a Map of logging attributes, updating the path fields when the name or parent fields are changed to avoid unnecessary computation.

Tracking

Please complete the following tracking steps prior to pull request creation.

Issue Tracking

Pull Request Tracking

  • Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
  • Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000

Pull Request Formatting

  • Pull Request based on current revision of the main branch
  • Pull Request refers to a feature branch with one commit containing changes

Verification

Please indicate the verification steps performed prior to pull request creation.

Build

  • Build completed using ./mvnw clean install -P contrib-check
    • JDK 21
    • JDK 25

Licensing

  • New dependencies are compatible with the Apache License 2.0 according to the License Policy
  • New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

  • Documentation formatting appears as expected in rendered files

- Added Process Group properties as attributes to Standard Logging Context
- Updated standard Component Log implementation to include Process Group attributes as MDC attributes
Copy link
Contributor

@pvillard31 pvillard31 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the improvement @exceptionfactory, I have tested the changes and it works as expected. Should we update the admin guide (or as a comment in the logback.xml) to list what we make available in the MDC? and maybe provide an example for how the log pattern can be changed to use this?

@exceptionfactory
Copy link
Contributor Author

Thanks for the feedback @pvillard31! I pushed an update adding a new section on Mapped Diagnostic Context to the Admin Guide.

Copy link
Contributor

@pvillard31 pvillard31 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @exceptionfactory - the doc update looks good to me. Given that the additional commit is purely documentation, I'll go ahead and merge.

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