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 a settings option to log to console in json format. #25649

Merged
merged 7 commits into from
Jan 8, 2025

Conversation

jum
Copy link

@jum jum commented Jan 7, 2025

For deployments in docker containers it is very useful to just log to console in a structured json format without any color escapes. This adds the advanced option log_console_json (default false) to enable this.

jum added 2 commits January 7, 2025 14:47
For deployments in docker containers it is very useful to just log to console in a structured json format without any color escapes. This adds the advanced option log_console_json (default false) to enable this.
@jum
Copy link
Author

jum commented Jan 7, 2025

Unfortunately the currently failing tests on the dev branch are a bit over my head.

@@ -168,6 +168,7 @@ declare global {
device_options: KeyValue;
advanced: {
log_rotation: boolean;
log_console_json: boolean;
Copy link
Owner

Choose a reason for hiding this comment

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

Suggested change
log_console_json: boolean;
log_fromat: 'json' | 'text';

I think this is more extendable in the future

Copy link
Author

Choose a reason for hiding this comment

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

Shouldn't that be log_format_console if you want to do it that way? The file logs are a different category.

Copy link
Owner

Choose a reason for hiding this comment

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

Just had a chat with @Nerivec, let's keep it as is, could you make a PR for the docs then I can merge this.

Choose a reason for hiding this comment

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

@Koenkk I liked your idea more (with adding the console postfix) - I'm courious what is the reason you decided to keep it as is?

Copy link
Author

Choose a reason for hiding this comment

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

I believe in general that apps should not spend a huge amount of work for multiple logging destinations and various formatting options. That is nowadays mostly the task of the deployment infrastructure, for example systemd or docker, and they do a decent job at that.

If you want a big refactoring of the current logging, you would have to order all the options on a per channel basis, for example having a file channel, a syslog channel, a console channel each having a format and extra channel specific options. I think this is going overboard and not worth the effort.

Copy link
Owner

Choose a reason for hiding this comment

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

@andrejsoucek because it is unlikely that there will be any other formats than the existing one or json.

@Koenkk
Copy link
Owner

Koenkk commented Jan 7, 2025

Could you also make a PR for the docs?

@jum
Copy link
Author

jum commented Jan 8, 2025

docs

Here it is: Koenkk/zigbee2mqtt.io#3404

@Koenkk Koenkk enabled auto-merge (squash) January 8, 2025 19:21
@Koenkk Koenkk merged commit 26ef565 into Koenkk:dev Jan 8, 2025
11 checks passed
@Koenkk
Copy link
Owner

Koenkk commented Jan 8, 2025

Thanks!

@jum jum deleted the console_log_dev branch January 8, 2025 20:57
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.

4 participants