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 ColorHeaderAndFields logger option #118

Merged
merged 7 commits into from
Aug 29, 2022
Merged

Conversation

picatz
Copy link
Contributor

@picatz picatz commented Aug 29, 2022

This PR builds on #108, extending the ability to color fields as well as the level header.

When I have log lines with multiple fields (especially with long values), I find it hard to visually pinpoint the part of the log message I'm interested in. I think by dimming the key= part of the field, it'll be faster and easier to visually parse the information. For multi-line values, this will also dim the | prefix.

Usage

log := hclog.New(&hclog.LoggerOptions{
	Color:                hclog.AutoColor,
	ColorHeaderAndFields: true,
})

Note: if ColorHeaderOnly is also set as true, that takes precedence.

Before

Screen Shot 2022-08-29 at 12 48 07 PM

After

Screen Shot 2022-08-29 at 12 45 21 PM

@picatz picatz requested a review from evanphx August 29, 2022 16:52
Copy link
Contributor

@evanphx evanphx left a comment

Choose a reason for hiding this comment

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

Mostly a lot of questions about formatting and logic

intlogger.go Outdated Show resolved Hide resolved
intlogger.go Outdated
// Optionally apply the ANSI "dim" (faint) and "bold"
// SGR values to the key.
if l.fieldColor != ColorOff {
color := color.New(color.Faint, color.Bold)
Copy link
Contributor

Choose a reason for hiding this comment

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

It seems weird to use faint and bold. Why not just bold?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I feel like faint helps break up a log line visually, for me, better than just bold.

Just Bold

Screen Shot 2022-08-29 at 1 31 52 PM

Bold and Faint

Screen Shot 2022-08-29 at 1 32 25 PM

Copy link
Contributor

Choose a reason for hiding this comment

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

The concern is mostly how other folks default terminal fonts will handle faint+bold. We have to be careful picking here because it has a big influence on all the users.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's a fair point. I think the Windows terminal would likely be the odd one to consider, and it seems like they do support this style: microsoft/terminal#6703 (comment)

Faint/dim is a fairly standard SGR style, implemented in VSCode's terminal emulator (xtermjs) as well (which is what those screenshots are showing).

Bold, I believe, is the more widely supported style. But, I would really rather have faint than bold here to help break up the line. I feel it's important. I don't know if we can actually detect if it's supported?

intlogger.go Outdated Show resolved Hide resolved
intlogger.go Outdated Show resolved Hide resolved
intlogger.go Outdated Show resolved Hide resolved
intlogger.go Outdated Show resolved Hide resolved
@picatz picatz requested a review from evanphx August 29, 2022 19:07
Copy link
Contributor

@evanphx evanphx left a comment

Choose a reason for hiding this comment

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

Looks great! Be sure to squash the history on merging. One minor question about fainting the = is all.

intlogger.go Outdated Show resolved Hide resolved
intlogger.go Outdated Show resolved Hide resolved
intlogger.go Outdated Show resolved Hide resolved
@picatz picatz merged commit 9846b38 into main Aug 29, 2022
@picatz picatz deleted the color-header-and-fields branch August 29, 2022 19:44
apricote pushed a commit to hetznercloud/fleeting-plugin-hetzner that referenced this pull request Sep 12, 2024
…loud/fleeting-plugin-hetzner!37)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | require | minor | `v1.1.0` -> `v1.6.3` |

---

### Release Notes

<details>
<summary>hashicorp/go-hclog (github.com/hashicorp/go-hclog)</summary>

### [`v1.6.3`](https://github.com/hashicorp/go-hclog/releases/tag/v1.6.3): Optional JSON escaping

[Compare Source](hashicorp/go-hclog@v1.6.2...v1.6.3)

#### What's Changed

-   hclogvet: updates for go1.22 by [@&#8203;shoenig](https://github.com/shoenig) in hashicorp/go-hclog#138
-   support configure json escape when log in json format by [@&#8203;Ericwww](https://github.com/Ericwww) in hashicorp/go-hclog#141

#### New Contributors

-   [@&#8203;Ericwww](https://github.com/Ericwww) made their first contribution in hashicorp/go-hclog#141

**Full Changelog**: hashicorp/go-hclog@v1.6.2...v1.6.3

### [`v1.6.2`](https://github.com/hashicorp/go-hclog/releases/tag/v1.6.2): Fix level syncing

[Compare Source](hashicorp/go-hclog@v1.6.1...v1.6.2)

#### What's Changed

-   Conside if the level is to be used separately from if the levels should be calculated by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#137

**Full Changelog**: hashicorp/go-hclog@v1.6.1...v1.6.2

### [`v1.6.1`](https://github.com/hashicorp/go-hclog/releases/tag/v1.6.1): Fix forcing color

[Compare Source](hashicorp/go-hclog@v1.6.0...v1.6.1)

#### What's Changed

-   Fix colors not being forced on correctly. by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#136

**Full Changelog**: hashicorp/go-hclog@v1.6.0...v1.6.1

### [`v1.6.0`](https://github.com/hashicorp/go-hclog/releases/tag/v1.6.0): New level inheritance mode

[Compare Source](hashicorp/go-hclog@v1.5.0...v1.6.0)

This release adds the ability to have sub-loggers arrange themselves into a tree and sync the level changes downward in the tree.

#### What's Changed

-   SEC-090: Automated trusted workflow pinning (2023-04-03) by [@&#8203;hashicorp-tsccr](https://github.com/hashicorp-tsccr) in hashicorp/go-hclog#128
-   Docs: InferLevelsWithTimestamp relies on InferLevels being true by [@&#8203;peteski22](https://github.com/peteski22) in hashicorp/go-hclog#135
-   Implement the ability to more logically share level hierarchies by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#134

#### New Contributors

-   [@&#8203;hashicorp-tsccr](https://github.com/hashicorp-tsccr) made their first contribution in hashicorp/go-hclog#128
-   [@&#8203;peteski22](https://github.com/peteski22) made their first contribution in hashicorp/go-hclog#135

**Full Changelog**: hashicorp/go-hclog@v1.5.0...v1.6.0

### [`v1.5.0`](https://github.com/hashicorp/go-hclog/releases/tag/v1.5.0): Better color and sublogger mods

[Compare Source](hashicorp/go-hclog@v1.4.0...v1.5.0)

#### What's Changed

-   Update LICENSE by [@&#8203;CalebAlbers](https://github.com/CalebAlbers) in hashicorp/go-hclog#121
-   build: update to go1.20 and x/tools to 0.5.0 by [@&#8203;shoenig](https://github.com/shoenig) in hashicorp/go-hclog#125
-   Improve AutoColor functionality by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#123
-   Add ability to wrap new subloggers by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#126
-   \[COMPLIANCE] Add Copyright and License Headers by [@&#8203;hashicorp-copywrite](https://github.com/hashicorp-copywrite) in hashicorp/go-hclog#124

#### New Contributors

-   [@&#8203;CalebAlbers](https://github.com/CalebAlbers) made their first contribution in hashicorp/go-hclog#121
-   [@&#8203;hashicorp-copywrite](https://github.com/hashicorp-copywrite) made their first contribution in hashicorp/go-hclog#124

**Full Changelog**: hashicorp/go-hclog@v1.4.0...v1.5.0

### [`v1.4.0`](https://github.com/hashicorp/go-hclog/releases/tag/v1.4.0): Add GetLevel

[Compare Source](hashicorp/go-hclog@v1.3.1...v1.4.0)

What it says on the tin, add GetLevel to the Logger interface.

#### What's Changed

-   Add GetLevel to Logger interface by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#120

**Full Changelog**: hashicorp/go-hclog@v1.3.1...v1.4.0

### [`v1.3.1`](https://github.com/hashicorp/go-hclog/releases/tag/v1.3.1): Improved multi line output rendering

[Compare Source](hashicorp/go-hclog@v1.3.0...v1.3.1)

#### What's Changed

-   When rendering multiple line output, still quote the individual lines by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#119

**Full Changelog**: hashicorp/go-hclog@v1.3.0...v1.3.1

### [`v1.3.0`](https://github.com/hashicorp/go-hclog/releases/tag/v1.3.0): Field Colorization

[Compare Source](hashicorp/go-hclog@v1.2.2...v1.3.0)

This version adds the ability to colorize fields for improved readability.

#### What's Changed

-   build: update go tools dependency by [@&#8203;pkazmierczak](https://github.com/pkazmierczak) in hashicorp/go-hclog#117
-   Add `ColorHeaderAndFields` logger option by [@&#8203;picatz](https://github.com/picatz) in hashicorp/go-hclog#118

#### New Contributors

-   [@&#8203;pkazmierczak](https://github.com/pkazmierczak) made their first contribution in hashicorp/go-hclog#117
-   [@&#8203;picatz](https://github.com/picatz) made their first contribution in hashicorp/go-hclog#118

**Full Changelog**: hashicorp/go-hclog@v1.2.2...v1.3.0

### [`v1.2.2`](https://github.com/hashicorp/go-hclog/releases/tag/v1.2.2): Minor formatting fix

[Compare Source](hashicorp/go-hclog@v1.2.1...v1.2.2)

#### What's Changed

-   fix various typos in comments by [@&#8203;marco-m](https://github.com/marco-m) in hashicorp/go-hclog#115
-   Omit empty colon when message is empty. Fixes [#&#8203;109](hashicorp/go-hclog#109) by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#116

**Full Changelog**: hashicorp/go-hclog@v1.2.1...v1.2.2

### [`v1.2.1`](https://github.com/hashicorp/go-hclog/releases/tag/v1.2.1): testify/go.yaml fix

[Compare Source](hashicorp/go-hclog@v1.2.0...v1.2.1)

This bumps the version of testify and go.yaml that are referenced by go-hclog to fix a security issue in go.yaml.

### [`v1.2.0`](https://github.com/hashicorp/go-hclog/releases/tag/v1.2.0): More Restrained Color

[Compare Source](hashicorp/go-hclog@v1.1.0...v1.2.0)

#### What's Changed

-   Add Windows, MacOS to GitHub Actions build matrix by [@&#8203;dolmen](https://github.com/dolmen) in hashicorp/go-hclog#107
-   Add ability to only colorize the header, not the whole log message by [@&#8203;evanphx](https://github.com/evanphx) in hashicorp/go-hclog#108

#### New Contributors

-   [@&#8203;dolmen](https://github.com/dolmen) made their first contribution in hashicorp/go-hclog#107

**Full Changelog**: hashicorp/go-hclog@v1.1.0...v1.2.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMjQuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMyNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
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.

2 participants