What about scanning the classpath and removing any known logging backends
so that ours is the only one present?

On Wed, Feb 5, 2025 at 11:37 AM Shunping Huang <mark.sphu...@gmail.com>
wrote:

> I agree that, ideally, users should delegate control of the logging
> backend to the runner or SDK harness to ensure logs are correctly captured.
> Dataflow, as you know, has a mechanism for collecting logs written by the
> JUL backend (via the default slf4j-jdk14 bridge) and sending them to Cloud
> Logging. This approach may not work natively with other logging backends.
> For example, when slf4j-simple is used, logs will be written to stdout or
> stderr, and eventually appear in a different Cloud Logging category.
>
> However, we have received customer support tickets (internal bug IDs:
> 307965737, 319291955, and 381398168) requesting support for alternative
> backends like Log4j or Logback. These customers often have transitive Log4j
> or Logback dependencies and user-customized logging configurations within
> their pipelines that are difficult to get rid of. Rather than failing
> their pipeline runs (e.g., a crash loop can happen when users have both
> the log4j-slf4j-impl bridge and the Log4j backend, due to our prepending
> log4j-to-slf4j to the classpath) or forcing the default JUL backend (due to
> the previous higher priority of slf4j-jdk14 on the classpath), we propose
> allowing them to use their own dependencies at their own discretion and
> risk.
>
> Honestly, if we want to fully support other logging backends in Dataflow
> and Cloud Logging, there will be some adjustments to the Dataflow
> codebase.
>
> On Wed, Feb 5, 2025 at 10:04 AM Kenneth Knowles <k...@apache.org> wrote:
>
>> Thanks for the very nice document. Logging has been a source of
>> complexity since the beginning of Beam, and upgrading to SLF4J2 is getting
>> urgent.
>>
>> I do have big picture questions/concerns:
>>
>>  - For non-portable runners/pipelines, shouldn't the runner totally
>> control logging backends so that it can capture logs correctly?
>>
>>  - For portable runners, shouldn't the SDK harness totally control
>> logging backends so it can ship logs out of the container correctly?
>>
>> Can you explain the intended use of having the user override the backend?
>> (I totally understand that since we don't control dependencies we need all
>> the frontend bridges)
>>
>> Kenn
>>
>> On Tue, Feb 4, 2025 at 3:15 PM Shunping Huang <mark.sphu...@gmail.com>
>> wrote:
>>
>>> Hi everyone,
>>>
>>> I put together a short doc to summarize the existing logging
>>> infrastructure(dependencies) in Beam Java and outline a plan to improve it.
>>> Basically, we are on the path towards slf4j 2.x.
>>>
>>>
>>> https://docs.google.com/document/d/1IkbiM4m8D-aB3NYI1aErFZHt6M7BQ-8eCULh284Davs/edit?usp=sharing
>>>
>>> If you are interested in this topic, please take a look and share any
>>> feedback.
>>>
>>> Regards,
>>>
>>> Shunping
>>>
>>

Reply via email to