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

Add support for Log4j 1 configuration formats #145

Merged
merged 6 commits into from
Nov 27, 2024

Conversation

ppkarwasz
Copy link
Contributor

This adds support for Log4j 1 configuration formats. Since Log4j Core 2 is a complete rewrite for Log4j 1, the converter:

  • Needs to know exactly what configuration parameters a Log4j 1 component supports to create an equivalent Log4j Core 2 configuration.
  • Introduces a pluggable spi/v1/Log4j1ComponentParser interface. For each supported Log4j 1 component, an implementation of this interface must be provided and registered with ServiceLoader.

The following Log4j 1 components are currently supported:

  • Appenders: ConsoleAppender, DailyRollingFileAppender, FileAppender and RollingFileAppender.
  • Filters: DenyAllFilter, LevelMatchFilter, LevelRangeFilter and StringMatchFilter.
  • Layouts: HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout.

Part of apache/logging-log4j2#3220

Adds an API to perform automatic conversions between different logging configuration file formats and a basic implementation.
The implementation supports the following configuration file formats:

- Log4j Core 2 XML,
- Log4j Core 2 JSON,
- Log4j Core 2 YAML,
- Log4j Core 2 Properties (read-only),
- Log4j Core 3 Properties.

The API is extensible through `ServiceLoader` and allows integrators to provide support for additional configuration file formats.

Read-only support for the Log4j 1 Properties and Log4j 1 XML configuration formats will be provided in a separate PR.

**Note**: Currently the API is only accessible from Java code.
Its main purpose is to provide a "Migrate Log4j 1.x to Log4j Core 2.x", a "Migrate Logback to Log4j Core 2.x" and a "Migrate JUL to Log4j Core 2.x" [OpenRewrite recipe](https://docs.openrewrite.org/recipes/java/logging/log4j).
A `picocli`-based `log4j-transform-cli` tool to access all the goodies in this repository, will be provided later.

Closes apache/logging-log4j2#2080
This adds support for Log4j 1 configuration formats.
Since Log4j Core 2 is a complete rewrite for Log4j 1, the converter:

- Needs to know exactly what configuration parameters a Log4j 1 component supports to create an equivalent Log4j Core 2 configuration.
- Introduces a pluggable `spi/v1/Log4j1ComponentParser` interface.
  For each supported Log4j 1 component, an implementation of this interface must be provided and registered with `ServiceLoader`.

The following Log4j 1 components are currently supported:

- Appenders: `ConsoleAppender`, `DailyRollingFileAppender`, `FileAppender` and `RollingFileAppender`.
- Filters: `DenyAllFilter`, `LevelMatchFilter`, `LevelRangeFilter` and `StringMatchFilter`.
- Layouts: `HTMLLayout`, `PatternLayout`, `SimpleLayout`, `TTCCLayout`.

Part of apache/logging-log4j2#3220
Base automatically changed from feature/new-config-converter to main November 27, 2024 13:57
…erter

# Conflicts:
#	log4j-converter-config/pom.xml
#	log4j-converter-config/src/main/java/org/apache/logging/converter/config/ConfigurationConverter.java
#	log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/ComponentUtils.java
#	log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/DefaultConfigurationConverter.java
#	log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/XmlUtils.java
#	log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/AbstractJacksonConfigurationMapper.java
#	log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/PropertiesV2ConfigurationParser.java
#	log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/XmlConfigurationMapper.java
#	log4j-converter-config/src/test/java/org/apache/logging/converter/config/ConfigurationConverterTest.java
#	log4j-converter-config/src/test/java/org/apache/logging/converter/config/internal/AbstractConfigurationMapperTest.java
@ppkarwasz ppkarwasz merged commit e0ccc53 into main Nov 27, 2024
9 checks passed
@ppkarwasz ppkarwasz deleted the feature/log4j1-configuration-converter branch November 27, 2024 14:29
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.

1 participant