jhl221123 opened a new pull request, #3812:
URL: https://github.com/apache/logging-log4j2/pull/3812

   This PR addresses issue #3667 by adding guard logic to methods in `Category` 
and `LogManager` that can modify the configuration. These changes ensure that 
programmatic configuration using the Log4j 1.x API is ignored unless the 
`log4j1.compatibility` flag is explicitly set to `true`.
   
   I have confirmed the fix by running the 
[reproducer](https://github.com/rschmitt/logging-log4j2/tree/log4j-1.2-init-bug-repro)
 provided in the issue, which now yields the following corrected output for the 
latest snapshot:
   
   ```
   Testing 2.22.0
   00:11:30.417 [main] INFO  org.example.App - Initializing Log4j 1.2 API...
   00:11:30.423 [main] INFO  org.example.App - Log4j 1.2 API initialized.
   Recorded 2 events (expected 2)
   
   Testing 2.23.0
   00:11:32.276 [main] INFO  org.example.App - Initializing Log4j 1.2 API...
   Recorded 1 events (expected 2)
   
   Testing 2.25.0
   2025-07-09T15:11:36.970645Z main INFO Initializing Log4j 1.2 API...Recorded 
1 events (expected 2)
   
   Testing 2.26.0-SNAPSHOT
   2025-07-09T15:11:39.258845Z main INFO Initializing Log4j 1.2 
API...2025-07-09T15:11:39.262583Z main INFO Log4j 1.2 API initialized.Recorded 
2 events (expected 2)
   ```
   
   Additionally, I have updated the existing unit tests and added new tests to 
verify that the guard logic works as expected when the compatibility mode is 
disabled. I am not entirely confident that the new unit tests are perfect. 
Please let me know if there are any areas for improvement.
   
   ## Checklist
   
   Before we can review and merge your changes, please go through the checklist 
below. If you're still working on some items, feel free to submit your pull 
request as a draft—our CI will help guide you through the remaining steps.
   
   ### ✅ Required checks
   
   - [X] **License**: I confirm that my changes are submitted under the [Apache 
License, Version 2.0](https://apache.org/licenses/LICENSE-2.0).
   - [X] **Commit signatures**: All commits are signed and verifiable. (See 
[GitHub Docs on Commit Signature 
Verification](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification)).
   - [X] **Code formatting**: The code is formatted according to the project’s 
style guide.
     <details>
       <summary>How to check and fix formatting</summary>
   
       - To **check** formatting: `./mvnw spotless:check`
       - To **fix** formatting: `./mvnw spotless:apply`
   
       See [the build 
instructions](https://logging.apache.org/log4j/2.x/development.html#building) 
for details.
     </details>
   - [X] **Build & Test**: I verified that the project builds and all unit 
tests pass.
     <details>
       <summary>How to build the project</summary>
   
       Run: `./mvnw verify`
   
       See [the build 
instructions](https://logging.apache.org/log4j/2.x/development.html#building) 
for details.
     </details>
   
   ### 🧪 Tests (select one)
   
   - [X] I have added or updated tests to cover my changes.
   - [ ] No additional tests are needed for this change.
   
   ### 📝 Changelog (select one)
   
   - [X] I added a changelog entry in `src/changelog/.2.x.x`. (See [Changelog 
Entry File 
Guide](https://logging.apache.org/log4j/tools/log4j-changelog.html#changelog-entry-file)).
   - [ ] This is a trivial change and does not require a changelog entry.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to