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 Socket Logging Handler with basic ECS format logging #43232

Merged
merged 1 commit into from
Nov 8, 2024

Conversation

troosan
Copy link
Contributor

@troosan troosan commented Sep 12, 2024

This pull request is a followup of PR #23128 and is greatly inspired by the following provided by @geoand https://github.com/quarkusio/quarkus/compare/main...geoand:%2323127?expand=1

It allows sending logs in ECS format to a socket (typically a logstash tcp input)

fixes #23127 and answers my own question on StackOverFlow

@troosan
Copy link
Contributor Author

troosan commented Sep 12, 2024

I'm still working on updating the documentation for it (logging and centralized-log-management)

The logging one is easy, the centralized log management is more complicated, as it promotes the use of the GELF format.
I think I'll just add a section under "GELF alternative: use Syslog" for now.

But I believe logging in ECS format should be promoted over the GELF format as it fits better in the ELK stack

@geoand
Copy link
Contributor

geoand commented Sep 12, 2024

Looks good, thanks!

@dmlloyd any comments?

Copy link

github-actions bot commented Sep 12, 2024

🙈 The PR is closed and the preview is expired.

This comment has been minimized.

@troosan
Copy link
Contributor Author

troosan commented Sep 12, 2024

The resulting json is the following

{
            "threadId": 449,
           "timestamp": "2024-09-12T08:56:17.609151+02:00",
          "@timestamp": 2024-09-12T06:56:17.610853593Z,
          "threadName": "Shutdown thread",
             "message": "my-app stopped in 0.118s",
                 "ndc": "",
            "sequence": 4335,
     "loggerClassName": "org.jboss.logging.Logger",
          "loggerName": "io.quarkus",
         "processName": "/Users/antoine/.sdkman/candidates/java/17.0.9-graalce/bin/java",
           "processId": 65262,
               "level": "INFO",
            "@version": "1",
                "mdc": {},
            "hostName": "macbook-m1-pro.localdomain"
}

I guess it's a good start, but we could add default values for parameters as serviceName, serviceVersion, serviceEnvironment, ...

https://www.elastic.co/guide/en/ecs-logging/java/1.x/setup.html#_add_the_dependency

or we let the generation of an ECS compatible json to the https://github.com/quarkiverse/quarkus-logging-json/blob/main/runtime/src/main/java/io/quarkiverse/loggingjson/LoggingJsonRecorder.java#L92 extension.

I'm not sure why there are 2 impl for json logging actually.

This comment has been minimized.

This comment has been minimized.

@troosan
Copy link
Contributor Author

troosan commented Sep 13, 2024

@dmlloyd @geoand should we natively provide an valid ECS json?

or should I update the documentation to mention the quarkiverse version of the quarkus-logging-json, which supports ECS encoding. This will need a PR for that extension though to enable using the socket handler.

@geoand
Copy link
Contributor

geoand commented Sep 13, 2024

@loicmathieu you've used the logging-json stuff IIRC, what's your take?

@loicmathieu
Copy link
Contributor

quarkus-logging-json is the official way to log in JSON.

What I don't understand is why it mandates modification in the logging-json library, socket loggings should be a log handler so it should work with all supported log format/pattern?

By the way, logging-gelf already support that.

@troosan
Copy link
Contributor Author

troosan commented Sep 13, 2024

I think the reason this required a change in the logging-json is because it's configured in a different way.
The json logging can be configured per handler (console, file and now socket) whereas the gelf handler handles only it's own format.
Maybe indeed this should be reversed, and the socket handler should allow only the ECS format, just as the GELF handler is allowing only the GELF format.

I know the gelf logging already supports sending logs to logstash, but my operations team is not too keen on enabling & maintaining another input (and the filters that go with it) in the logstash pipeline.

@loicmathieu
Copy link
Contributor

OK then.

@troosan
Copy link
Contributor Author

troosan commented Sep 16, 2024

@geoand @gsmet Contrary to what I put int the documentation, with this current PR, the format of the JSON does not follow the ECS standards.

For now I have gone around this by setting field key overrides through the configuration, hiding/adding additional fields, like this:

quarkus.log.socket.json.exception-output-type=formatted
quarkus.log.socket.json.key-overrides=timestamp=@timestamp,\
	logger_name=log.logger,\
	level=log.level,\
	thread_name=process.thread.name,\
	thread_id=process.thread.id,\
	host_name=host.hostname,\
	stack_trace=error.stack_trace
quarkus.log.socket.json.excluded-keys=sequence,loggerClassName
quarkus.log.socket.json.additional-field."service.environment".value=${quarkus.profile}
quarkus.log.socket.json.additional-field."service.name".value=${quarkus.application.name}
quarkus.log.socket.json.additional-field."service.version".value=${quarkus.application.version}
quarkus.log.socket.json.additional-field."data_stream.type".value=logs
quarkus.log.socket.json.additional-field."ecs.version".value=1.12

This is only however not a very clean solution, I could also do this programmatically like this in the LoggingJsonRecorder

    public RuntimeValue<Optional<Formatter>> initializeSocketJsonLogging(JsonLogConfig config) {
        if (config.socketJson.logFormat == JsonConfig.LogFormat.ECS) {
            addEcsFields(config.socketJson);
        }
        return getFormatter(config.socketJson);
    }

    private void addEcsFields(JsonConfig config) {
        EnumMap<Key, String> keyOverrides = PropertyValues.stringToEnumMap(Key.class, config.keyOverrides.orElse(null));
        keyOverrides.putIfAbsent(Key.TIMESTAMP, "@timestamp");
        keyOverrides.putIfAbsent(Key.LOGGER_CLASS_NAME, "log.logger");
        keyOverrides.putIfAbsent(Key.LOGGER_NAME, "log.logger");
        keyOverrides.putIfAbsent(Key.LEVEL, "log.level");
        keyOverrides.putIfAbsent(Key.PROCESS_ID, "process.pid");
        keyOverrides.putIfAbsent(Key.PROCESS_NAME, "process.name");
        keyOverrides.putIfAbsent(Key.THREAD_NAME, "process.thread.name");
        keyOverrides.putIfAbsent(Key.THREAD_ID, "process.thread.id");
        keyOverrides.putIfAbsent(Key.HOST_NAME, "host.hostname");
        keyOverrides.putIfAbsent(Key.SEQUENCE, "event.sequence");
        keyOverrides.putIfAbsent(Key.EXCEPTION_MESSAGE, "error.message");
        keyOverrides.putIfAbsent(Key.STACK_TRACE, "error.stack_trace");
        config.keyOverrides = Optional.of(PropertyValues.mapToString(keyOverrides));

        config.additionalField.computeIfAbsent("ecs.version", k -> buildFieldConfig("1.12.2", Type.STRING));
        config.additionalField.computeIfAbsent("data_stream.type", k -> buildFieldConfig("logs", Type.STRING));

        quarkusConfig.getOptionalValue("quarkus.application.name", String.class).ifPresent(
                s -> config.additionalField.computeIfAbsent("service.name", k -> buildFieldConfig(s, Type.STRING)));
        quarkusConfig.getOptionalValue("quarkus.application.version", String.class).ifPresent(
                s -> config.additionalField.computeIfAbsent("service.version", k -> buildFieldConfig(s, Type.STRING)));
        quarkusConfig.getOptionalValue("quarkus.profile", String.class).ifPresent(
                s -> config.additionalField.computeIfAbsent("service.environment", k -> buildFieldConfig(s, Type.STRING)));
    }

which is not very clean either.

Also missing is the addition of fields like trace.id and span.id instead (or in addition to) of having them in the mdc.traceId and mdc.spanId

So question is, shall I commit this working (but far from perfect) solution and adapt the documentation accordingly?
Or do I just specify in the documentation how to make it ECS compatible through properties?

@geoand
Copy link
Contributor

geoand commented Sep 17, 2024

Or do I just specify in the documentation how to make it ECS compatible through properties?

I think this is best for now. @loicmathieu WDYT?

@troosan
Copy link
Contributor Author

troosan commented Sep 19, 2024

@geoand in case we go for the code solution instead of the properties solution, do you know how I can get the traceId and spanId? Those will obviously only be available if the OpenTelemetry dependency is present. Is there a way to retrieve those two values without relying on the io.opentelemetry.context classes?
I would like to add those in the ECS tracing fields
My current solution is to copy them in the Logstash pipeline with the following filter but it would be nicer to natively support it.

filter {
  if ![span][id] and [mdc][spanId] {
    mutate { rename => { "[mdc][spanId]" => "[span][id]" } }
  }
  if ![trace][id] and [mdc][traceId] {
    mutate { rename => {"[mdc][traceId]" => "[trace][id]"} }
  }
}

@geoand
Copy link
Contributor

geoand commented Sep 19, 2024

@geoand in case we go for the code solution instead of the properties solution, do you know how I can get the traceId and spanId? Those will obviously only be available if the OpenTelemetry dependency is present. Is there a way to retrieve those two values without relying on the io.opentelemetry.context classes?

@brunobat can give you the best way to access those, although in order to make reduce unnecessary couplinh, we'd need to put some kind of SPI in place.

@brunobat
Copy link
Contributor

@troosan You need access to the context like the MDCEnabledContextStorage does:

But this data is maintained by us in the MDC context, therefore, your solution sounds ok.

@loicmathieu
Copy link
Contributor

loicmathieu commented Sep 19, 2024

I think we should have a util for that that can extract the spanId/transactionId if present as we need to do it for all handlers. For ex it would be useful to be able to forward these ids to Google Cloud Loggin, today it must be done manually by implementing a trace extractor: https://docs.quarkiverse.io/quarkus-google-cloud-services/main/logging.html#_tracing

This is a cross-extension concern so we should have something in the core that didn't depends on OTEL.

@troosan

Or do I just specify in the documentation how to make it ECS compatible through properties?

Yes, again we may want to provide something that will work cross handler, for example this is the code we have for Google Cloud Logging: https://github.com/quarkiverse/quarkus-google-cloud-services/blob/main/logging/runtime/src/main/java/io/quarkiverse/googlecloudservices/logging/runtime/ecs/EscJsonFormat.java

@troosan
Copy link
Contributor Author

troosan commented Sep 19, 2024

@loicmathieu that is indeed exactly what we need, Ideally the generation of the json (ECS or not) and where to send it (Google, Logstash, ...) should be decoupled. Otherwise we're just duplicating code all over.

@brunobat
Copy link
Contributor

brunobat commented Sep 19, 2024

This is a cross-extension concern so we should have something in the core that didn't depends on OTEL.

But all tracing is currently impl by OTel...
What we can have is some service you can inject and get the Otel tracing data in a simple way.

This comment has been minimized.

This comment has been minimized.

@troosan
Copy link
Contributor Author

troosan commented Sep 23, 2024

@geoand I have updated the documentation on how to make the json ECS compatible through properties.
https://quarkus-pr-main-43232-preview.surge.sh/version/main/guides/centralized-log-management#logstash_ecs

Do you think this could get merged as is in next iteration? (I can squash the commits before merging)

Longer term the logging facility probably needs to be reviewed to avoid unnecessary duplication across the extensions.

Copy link
Member

@gsmet gsmet left a comment

Choose a reason for hiding this comment

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

I added some minor suggestions and questions.

Other than that, I think the patch looks good and it's a very nice contribution.

docs/src/main/asciidoc/centralized-log-management.adoc Outdated Show resolved Hide resolved
docs/src/main/asciidoc/centralized-log-management.adoc Outdated Show resolved Hide resolved
docs/src/main/asciidoc/centralized-log-management.adoc Outdated Show resolved Hide resolved
docs/src/main/asciidoc/centralized-log-management.adoc Outdated Show resolved Hide resolved
docs/src/main/asciidoc/logging.adoc Outdated Show resolved Hide resolved
import io.quarkus.runtime.annotations.ConfigItem;

@ConfigGroup
public class SocketConfig {
Copy link
Member

Choose a reason for hiding this comment

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

Sorry for the late review, but if this is being used specifically to talk to one kind of service, then should we be having a general socket config? I think that users might have a harder time configuring a generic socket handler to talk to some service than if they could have a configuration specific to the kind of service they're talking to.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Theoretically the socket to which you are writing is independent of the format in which you send the data to it.
The current setup will allow you to format the logs however you want, JSON is only one of those.

The Socket handler should allow you to send logs to Splunk too for instance. I've not tried it out though.

* socket logging formatting configuration and use the formatter provided instead. If multiple formatters
* are enabled at runtime, a warning message is printed and only one is used.
*/
public final class LogSocketFormatBuildItem extends MultiBuildItem {
Copy link
Member

Choose a reason for hiding this comment

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

Won't this break if we have more than one socket handler configured for some reason?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

you mean that we should be able to work with "named" handlers? To allow writing logs to 2 different socket appenders? (Logstash and Splunk for instance)

I must admit I don't know. This is just a copy of LogFileFormatBuildItem for instance

@troosan
Copy link
Contributor Author

troosan commented Oct 14, 2024

I guess everybody was in Antwerp at Devoxx last week :-)
Any chance to have this part of the next iteration?

Comment on lines 297 to 321
quarkus.log.socket.json.key-overrides=timestamp=@timestamp,\
logger_name=log.logger,\
level=log.level,\
process_id=process.pid,\
process_name=process.name,\
thread_name=process.thread.name,\
thread_id=process.thread.id,\
sequence=event.sequence,\
host_name=host.hostname,\
stack_trace=error.stack_trace
quarkus.log.socket.json.excluded-keys=loggerClassName
quarkus.log.socket.json.additional-field."service.environment".value=${quarkus.profile}
quarkus.log.socket.json.additional-field."service.name".value=${quarkus.application.name}
quarkus.log.socket.json.additional-field."service.version".value=${quarkus.application.version}
quarkus.log.socket.json.additional-field."data_stream.type".value=logs
quarkus.log.socket.json.additional-field."ecs.version".value=1.12.2
Copy link
Member

Choose a reason for hiding this comment

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

This I just don't like. Could we at least have a enum property on the JSON formatter for format presets? Asking every user to provide all of this each time is not OK IMO.

Copy link
Contributor Author

@troosan troosan Oct 15, 2024

Choose a reason for hiding this comment

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

that's indeed what I proposed here: #43232 (comment)
@dmlloyd let me know what you prefer

@troosan troosan requested a review from dmlloyd October 21, 2024 19:28
@troosan
Copy link
Contributor Author

troosan commented Oct 23, 2024

looks like the move of the logging to @ConfigMapping made a mess out of my PR. I'll update it.
@geoand @dmlloyd @gsmet what do you prefer concerning #43232 (comment) ?

This comment has been minimized.

This comment has been minimized.

@troosan
Copy link
Contributor Author

troosan commented Oct 30, 2024

@dmlloyd what shall I do for this PR? I personally would tend to agree with you that it's much easier for the enduser to just specify quarkus.log.socket.json.log-format=ECS and do the key-overrides programmatically.
Once someone comes up with a "clean" way to produce the ECS formatted json, we can just swap the impl. The config key can stay the same, so it would be backward compatible.

@dmlloyd
Copy link
Member

dmlloyd commented Oct 30, 2024

@dmlloyd what shall I do for this PR? I personally would tend to agree with you that it's much easier for the enduser to just specify quarkus.log.socket.json.log-format=ECS and do the key-overrides programmatically. Once someone comes up with a "clean" way to produce the ECS formatted json, we can just swap the impl. The config key can stay the same, so it would be backward compatible.

Sure, I like this approach. That would cover my two concerns (configurability, plus being able to clean up things in the future).

This comment has been minimized.

Copy link

quarkus-bot bot commented Nov 3, 2024

Status for workflow Quarkus Documentation CI

This is the status report for running Quarkus Documentation CI on commit 3d110d1.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

Warning

There are other workflow runs running, you probably need to wait for their status before merging.

Copy link

quarkus-bot bot commented Nov 4, 2024

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit 3d110d1.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

@troosan troosan changed the title Add support for Socket Logging Handler, enable json format for it Add support for Socket Logging Handler with basic ECS format logging Nov 4, 2024
@troosan
Copy link
Contributor Author

troosan commented Nov 4, 2024

@dmlloyd changes done and documentation updated accordingly

Copy link
Member

@dmlloyd dmlloyd left a comment

Choose a reason for hiding this comment

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

Looks OK. I think we'll probably want to revisit some of these internals at some point, but you've really done your best to accommodate and I think the current state is probably acceptable for now. Thanks.

@troosan
Copy link
Contributor Author

troosan commented Nov 5, 2024

you're welcome. I really need to dive into the quarkus build specificities to understand better how all this works !

@cescoffier
Copy link
Member

@loicmathieu @dmlloyd Are we good on this one?

@dmlloyd
Copy link
Member

dmlloyd commented Nov 8, 2024

I'm good with it

@cescoffier cescoffier merged commit 901675f into quarkusio:main Nov 8, 2024
54 checks passed
@quarkus-bot quarkus-bot bot added the kind/enhancement New feature or request label Nov 8, 2024
@quarkus-bot quarkus-bot bot added this to the 3.17 - main milestone Nov 8, 2024
@cescoffier
Copy link
Member

Thanks @dmlloyd !

@loicmathieu
Copy link
Contributor

Good for me.

I'll open a discussion so review all ou centralized log solutions now that we have 3 of them: socket appender, logstash gelf and Open telemetry logs we would want to document the differences and maybe deprecate the old logstash gelf.

I'm also have a look if I can reuse the new ECS formatter in Google Cloud Logging

@troosan troosan deleted the #23127 branch November 8, 2024 19:24
DeMol-EE added a commit to DeMol-EE/quarkus that referenced this pull request Nov 12, 2024
commit d1394b6
Merge: 52ebb92 c41dfd6
Author: RobinDM <[email protected]>
Date:   Tue Nov 12 08:56:25 2024 +0100

    Merge branch 'quarkusio:main' into datasource-devservices-showLogs-squashed

commit c41dfd6
Merge: 52286bf 0611099
Author: Georgios Andrianakis <[email protected]>
Date:   Tue Nov 12 09:32:18 2024 +0200

    Merge pull request quarkusio#44431 from phillip-kruger/filename-openapi

    Add option to name stored openapi files

commit 52286bf
Merge: 81679eb 5a2d46c
Author: Georgios Andrianakis <[email protected]>
Date:   Tue Nov 12 08:08:49 2024 +0200

    Merge pull request quarkusio#44299 from Sgitario/41689_good

    REST Server/Client allows configuring the removal of trailing slashs

commit 52ebb92
Merge: 0348db6 81679eb
Author: RobinDM <[email protected]>
Date:   Tue Nov 12 06:59:08 2024 +0100

    Merge branch 'main' into datasource-devservices-showLogs-squashed

commit 0348db6
Author: RobinDM <[email protected]>
Date:   Tue Nov 12 06:58:50 2024 +0100

    Update extensions/datasource/runtime/src/main/java/io/quarkus/datasource/runtime/DevServicesBuildTimeConfig.java

    Co-authored-by: George Gastaldi <[email protected]>

commit 81679eb
Merge: 10ed7b1 0878a19
Author: George Gastaldi <[email protected]>
Date:   Tue Nov 12 00:10:40 2024 -0300

    Merge pull request quarkusio#44415 from radcortez/quarkus-44400

    Propagate Runtime properties in JBang Dev mode

commit 0611099
Author: Phillip Kruger <[email protected]>
Date:   Tue Nov 12 13:54:41 2024 +1100

    Add option to name stored openapi files

    Signed-off-by: Phillip Kruger <[email protected]>

commit 10ed7b1
Merge: 6329fda f23faa2
Author: Georgios Andrianakis <[email protected]>
Date:   Mon Nov 11 19:53:21 2024 +0200

    Merge pull request quarkusio#44421 from mariofusco/q44417

    Fix deserialization of null maps in reflection-free Jackson deserializers

commit 6329fda
Merge: e7fb440 8ce3dc5
Author: Andy Damevin <[email protected]>
Date:   Mon Nov 11 18:36:35 2024 +0100

    Merge pull request quarkusio#44416 from mkouba/issue-44412

    QuteErrorPageSetup: support templates that are not backed by a file

commit e7fb440
Merge: 7a6b0ee 95fea0b
Author: Bruno Baptista <[email protected]>
Date:   Mon Nov 11 16:48:59 2024 +0000

    Merge pull request quarkusio#43983 from alesj/simplespanprocessor_i29448

    Add SimpleSpanProcessor support

commit f23faa2
Author: mariofusco <[email protected]>
Date:   Mon Nov 11 17:47:29 2024 +0100

    Fix deserialization of null maps in reflection-free Jackson deserializers

commit 8ce3dc5
Author: Martin Kouba <[email protected]>
Date:   Mon Nov 11 14:56:20 2024 +0100

    QuteErrorPageSetup: support templates that are not backed by a file

    - fixes quarkusio#44412

commit 0878a19
Author: Roberto Cortez <[email protected]>
Date:   Mon Nov 11 13:37:42 2024 +0000

    Propagate Runtime properties in JBang Dev mode

commit 95fea0b
Author: Ales Justin <[email protected]>
Date:   Thu Oct 17 12:50:53 2024 +0200

    Add SimpleSpanProcessor support

commit 7a6b0ee
Merge: ddee2e0 686cc7d
Author: Clement Escoffier <[email protected]>
Date:   Mon Nov 11 09:03:11 2024 +0100

    Merge pull request quarkusio#44351 from cescoffier/workshop-structure-adr

    Propose ADR for restructuring Quarkus workshops organization

commit 686cc7d
Author: Clement Escoffier <[email protected]>
Date:   Wed Nov 6 16:28:07 2024 +0100

    Propose ADR for restructuring Quarkus workshops organization

    - Suggests moving from a single repository to individual repositories per workshop
    - Aims to simplify management, improve discoverability, and enable GitHub Pages for documentation
    - Addresses limitations of current structure in hosting and maintaining multiple workshops

commit ddee2e0
Merge: b3d5937 2ffe012
Author: Martin Kouba <[email protected]>
Date:   Mon Nov 11 08:48:15 2024 +0100

    Merge pull request quarkusio#44224 from mkouba/issue-44048

    Quartz: introduce Nonconcurrent

commit b3d5937
Merge: b5a1eac bd03e6c
Author: Phillip Krüger <[email protected]>
Date:   Mon Nov 11 09:28:20 2024 +1100

    Merge pull request quarkusio#44407 from michalvavrik/feature/add-roles-allowed-vals-to-openapi

    Include allowed roles in security scheme scopes when OpenApi version is 3.1.0 or greater

commit bd03e6c
Author: Michal Vavřík <[email protected]>
Date:   Sun Nov 10 12:57:36 2024 +0100

    Include allowed roles in security scheme scopes in OpenApi 3.1+

commit b5a1eac
Merge: 0782ecc 998c3ee
Author: Sergey Beryozkin <[email protected]>
Date:   Sun Nov 10 11:23:33 2024 +0000

    Merge pull request quarkusio#44406 from michalvavrik/feature/handle-oidc-extension-deprecations

    Handle InjectionPointsTransformer deprecations in OIDC extension

commit 998c3ee
Author: Michal Vavřík <[email protected]>
Date:   Sun Nov 10 10:39:10 2024 +0100

    Handle InjectionPointsTransformer deprecations in OIDC extension

commit 0782ecc
Merge: 1e2140d e5a21e4
Author: Georgios Andrianakis <[email protected]>
Date:   Sat Nov 9 19:28:37 2024 +0200

    Merge pull request quarkusio#44273 from Vinche59/kubernetest-nodeSelector-without-dekorate-bump

    Add nodeSelector capability to kubernetes extension

commit e5a21e4
Author: Vincent Sourin <[email protected]>
Date:   Sun Oct 27 13:31:27 2024 +0100

    Add nodeSelect capability to kubernetes extension.

    Fix quarkusio#44122

    Signed-off-by: Vinche <[email protected]>

commit 1e2140d
Merge: 00f271c 48d8fb7
Author: Guillaume Smet <[email protected]>
Date:   Sat Nov 9 16:53:01 2024 +0100

    Merge pull request quarkusio#44394 from quarkusio/dependabot/maven/io.quarkus.bot-build-reporter-maven-extension-3.9.6

    Bump io.quarkus.bot:build-reporter-maven-extension from 3.9.5 to 3.9.6

commit 00f271c
Merge: ee2100b 9361944
Author: Guillaume Smet <[email protected]>
Date:   Sat Nov 9 16:52:27 2024 +0100

    Merge pull request quarkusio#44396 from quarkusio/dependabot/maven/org.apache.groovy-groovy-4.0.24

    Bump org.apache.groovy:groovy from 4.0.23 to 4.0.24

commit ee2100b
Merge: 3321050 f983e20
Author: Sergey Beryozkin <[email protected]>
Date:   Sat Nov 9 12:17:00 2024 +0000

    Merge pull request quarkusio#44389 from michalvavrik/feature/kc-dev-svc-for-kc-admin-client

    Start Keycloak Dev Services for standalone Keycloak Admin REST/RESTEasy clients

commit 3321050
Merge: 76cba8c 3f10b51
Author: Sergey Beryozkin <[email protected]>
Date:   Sat Nov 9 11:29:52 2024 +0000

    Merge pull request quarkusio#44374 from sberyozkin/optimize_oidc_tenants_grouping

    Improve the way OIDC tenants are grouped and their properties are generated

commit 76cba8c
Merge: 4221467 af78f41
Author: Sergey Beryozkin <[email protected]>
Date:   Sat Nov 9 11:28:55 2024 +0000

    Merge pull request quarkusio#44397 from quarkusio/dependabot/maven/com.nimbusds-nimbus-jose-jwt-9.46

    Bump com.nimbusds:nimbus-jose-jwt from 9.45 to 9.46

commit 4221467
Merge: 81d5343 bfb59fc
Author: George Gastaldi <[email protected]>
Date:   Fri Nov 8 21:27:01 2024 -0300

    Merge pull request quarkusio#44398 from sberyozkin/keycloak_devservice_prop_doc_typo

    Fix Keycloak DevService property doc typo

commit bfb59fc
Author: Sergey Beryozkin <[email protected]>
Date:   Fri Nov 8 23:18:02 2024 +0000

    Fix Keycloak DevService property doc typo

commit af78f41
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Nov 8 22:28:30 2024 +0000

    Bump com.nimbusds:nimbus-jose-jwt from 9.45 to 9.46

    Bumps [com.nimbusds:nimbus-jose-jwt](https://bitbucket.org/connect2id/nimbus-jose-jwt) from 9.45 to 9.46.
    - [Changelog](https://bitbucket.org/connect2id/nimbus-jose-jwt/src/master/CHANGELOG.txt)
    - [Commits](https://bitbucket.org/connect2id/nimbus-jose-jwt/branches/compare/9.46..9.45)

    ---
    updated-dependencies:
    - dependency-name: com.nimbusds:nimbus-jose-jwt
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit 9361944
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Nov 8 22:27:26 2024 +0000

    Bump org.apache.groovy:groovy from 4.0.23 to 4.0.24

    Bumps [org.apache.groovy:groovy](https://github.com/apache/groovy) from 4.0.23 to 4.0.24.
    - [Commits](https://github.com/apache/groovy/commits)

    ---
    updated-dependencies:
    - dependency-name: org.apache.groovy:groovy
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit 48d8fb7
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Nov 8 22:24:14 2024 +0000

    Bump io.quarkus.bot:build-reporter-maven-extension from 3.9.5 to 3.9.6

    Bumps [io.quarkus.bot:build-reporter-maven-extension](https://github.com/quarkusio/build-reporter) from 3.9.5 to 3.9.6.
    - [Commits](quarkusio/build-reporter@3.9.5...3.9.6)

    ---
    updated-dependencies:
    - dependency-name: io.quarkus.bot:build-reporter-maven-extension
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit 3f10b51
Author: Sergey Beryozkin <[email protected]>
Date:   Thu Nov 7 19:12:09 2024 +0000

    Improve the way OIDC tenants are grouped and their properties are generated

commit 81d5343
Merge: 901675f a4d7e2f
Author: Guillaume Smet <[email protected]>
Date:   Fri Nov 8 22:26:14 2024 +0100

    Merge pull request quarkusio#44390 from gsmet/better-deployment-detection

    Fix runtime/deployment detection and propagate it

commit 901675f
Merge: d1c3ae8 3d110d1
Author: Clement Escoffier <[email protected]>
Date:   Fri Nov 8 19:34:29 2024 +0100

    Merge pull request quarkusio#43232 from troosan/quarkusio#23127

    Add support for Socket Logging Handler with basic ECS format logging

commit d1c3ae8
Merge: 7603085 1813c5a
Author: Sergey Beryozkin <[email protected]>
Date:   Fri Nov 8 17:33:42 2024 +0000

    Merge pull request quarkusio#44388 from gsmet/fix-config-generation

    Fix some invalid configuration cases for doc generation and fail the build if some description are missing

commit 7603085
Merge: 30d733f 77747da
Author: Georgios Andrianakis <[email protected]>
Date:   Fri Nov 8 17:37:21 2024 +0200

    Merge pull request quarkusio#44373 from geoand/quarkusio#44231

    Ensure that custom Jackson modules work in dev-mode

commit a4d7e2f
Author: Guillaume Smet <[email protected]>
Date:   Fri Nov 8 15:46:23 2024 +0100

    Fix runtime/deployment detection and propagate it

    That way, we can assert if the module is a deployment module later in
    the process.

    Related to quarkusio#43513

commit f983e20
Author: Michal Vavřík <[email protected]>
Date:   Fri Nov 8 16:06:21 2024 +0100

    Start Keycloak Dev Svc for standalone KC Admin client

commit 1813c5a
Author: Guillaume Smet <[email protected]>
Date:   Fri Nov 8 14:47:20 2024 +0100

    Generate a report for missing Javadoc and fail the build if not empty

commit bab4a5a
Author: Guillaume Smet <[email protected]>
Date:   Fri Nov 8 14:46:20 2024 +0100

    Fix some invalid configuration cases

    TransactionManagerConfiguration was just plain weird so fixed it.
    For the others, we need to mark the interfaces as being config or we
    won't generate the Javadoc for them.

commit 30d733f
Merge: 5be2257 959a2e1
Author: Martin Kouba <[email protected]>
Date:   Fri Nov 8 11:28:14 2024 +0100

    Merge pull request quarkusio#44385 from mkouba/issue-44366

    Qute: fix generation of qute-i18n-examples

commit 77747da
Author: Georgios Andrianakis <[email protected]>
Date:   Thu Nov 7 20:22:31 2024 +0200

    Ensure that custom Jackson modules work in dev-mode

    Fixes: quarkusio#44231

commit 959a2e1
Author: Martin Kouba <[email protected]>
Date:   Fri Nov 8 08:43:36 2024 +0100

    Qute: fix generation of qute-i18n-examples

    - handle localized enums correctly
    - fixes quarkusio#44366

commit 611f5e0
Author: Robin De Mol <[email protected]>
Date:   Thu Nov 7 22:04:13 2024 +0100

    datasource devservices: showLogs

    Brings support for JBossLoggingConsumer to container-based datasource
    dev services, and adds a little section to the documentation about the
    new "showLogs" option.

    Also contains a minor correction to the AppCDS documentation.

commit 5be2257
Merge: 9761a6e b0339bd
Author: Georgios Andrianakis <[email protected]>
Date:   Fri Nov 8 08:25:50 2024 +0200

    Merge pull request quarkusio#44377 from quarkusio/dependabot/maven/flyway.version-10.21.0

    Bump flyway.version from 10.20.1 to 10.21.0

commit 9761a6e
Merge: 5810fca dd2201e
Author: Georgios Andrianakis <[email protected]>
Date:   Fri Nov 8 08:16:56 2024 +0200

    Merge pull request quarkusio#44376 from dmlloyd/log-docs

    Clarify logging rotation docs a little bit

commit 5a2d46c
Author: Roberto Cortez <[email protected]>
Date:   Wed Nov 6 12:02:09 2024 +0000

    Avoid possible concurrency issues with RestClientsConfig.RestClientKeysProvider.KEYS in build time

commit 606143b
Author: Jose <[email protected]>
Date:   Wed Nov 6 07:38:16 2024 +0100

    REST Server/Client allows configuring the removal of trailing slashs

    Before these changes, the REST server and client extensions were removing the trailing slashes that were set by users in the `@Path` annotations.

    For example, when creating a resource like:

    ```java
    @path("/a/")
    @produces(MediaType.TEXT_PLAIN)
    public class HelloResource {

            @get
            public String echo() {
                // ...
            }
    }
    ```

    The effective path was `/a` instead of `/a/`. Note that it does not matter whether we place the `@Path` annotation at method level because the behaviour will be the same.

    At the client side, when having the following client:

    ```
    @RegisterRestClient(configKey = "test")
    @path("/a/") <1>
    public interface HelloClient {
            @get
            @produces(MediaType.TEXT_PLAIN)
            @path("/b/")  <2>
            String echo();
    }
    ```

    In this case, the trailing slash will be removed from <1> but not from <2>.

    After these changes, we are adding the following properties:
    - `quarkus.rest.removes-trailing-slash`

    To configure the server extension to not remove any trailing slash from the `@Path` annotations.

    - `quarkus.rest-client.removes-trailing-slash`

    To configure the client extension to not remove any traling slash from the `@Path` annotations used at interface level. The annotations set at method level will behave the same.

    Note that this does not introduce any change in behaviour, so everything should keep working as before unless users use the new properties.

commit ae36baf
Author: Jose <[email protected]>
Date:   Wed Nov 6 07:36:36 2024 +0100

    REST Client build time fix for DevServices

commit b0339bd
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Nov 7 22:55:05 2024 +0000

    Bump flyway.version from 10.20.1 to 10.21.0

    Bumps `flyway.version` from 10.20.1 to 10.21.0.

    Updates `org.flywaydb:flyway-core` from 10.20.1 to 10.21.0
    - [Release notes](https://github.com/flyway/flyway/releases)
    - [Commits](flyway/flyway@flyway-10.20.1...flyway-10.21.0)

    Updates `org.flywaydb:flyway-sqlserver` from 10.20.1 to 10.21.0

    Updates `org.flywaydb:flyway-mysql` from 10.20.1 to 10.21.0

    Updates `org.flywaydb:flyway-database-oracle` from 10.20.1 to 10.21.0

    Updates `org.flywaydb:flyway-database-postgresql` from 10.20.1 to 10.21.0

    Updates `org.flywaydb:flyway-database-db2` from 10.20.1 to 10.21.0

    Updates `org.flywaydb:flyway-database-derby` from 10.20.1 to 10.21.0

    Updates `org.flywaydb:flyway-database-mongodb` from 10.20.1 to 10.21.0

    ---
    updated-dependencies:
    - dependency-name: org.flywaydb:flyway-core
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.flywaydb:flyway-sqlserver
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.flywaydb:flyway-mysql
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.flywaydb:flyway-database-oracle
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.flywaydb:flyway-database-postgresql
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.flywaydb:flyway-database-db2
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.flywaydb:flyway-database-derby
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.flywaydb:flyway-database-mongodb
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit dd2201e
Author: David M. Lloyd <[email protected]>
Date:   Thu Nov 7 15:32:47 2024 -0600

    Clarify logging rotation docs a little bit

    Fixes quarkusio#44346

commit 2ffe012
Author: Martin Kouba <[email protected]>
Date:   Thu Oct 31 13:56:39 2024 +0100

    Quartz: introduce Nonconcurrent

    - the behavior is identical to a Job class annotated with DisallowConcurrentExecution
    - fixes quarkusio#44048

commit 3d110d1
Author: Antoine de Troostembergh <[email protected]>
Date:   Sun Nov 3 20:54:47 2024 +0100

    add socket log appender and basic ECS json formatting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Logging into socket
7 participants