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

Fix goroutine leak: make flushDaemon stoppable #293

Merged
merged 5 commits into from
Feb 27, 2022
Merged

Fix goroutine leak: make flushDaemon stoppable #293

merged 5 commits into from
Feb 27, 2022

Conversation

katexochen
Copy link

What this PR does / why we need it:
Previously, klog's init function started a goroutine to continuously flush buffers. This goroutine couldn't be stopped and made a shutdown without leaking goroutines impossible.

This PR makes it possible to stop and test the flushDaemon. It adds an API function so users can stop the daemon as well.

There was a previous attempt to fix this issue by someone else in #190.

In #190, someone requested to add goleak to detect leaking goroutines in the future, so this PR introduces such validation.

Which issue(s) this PR fixes:
fixes #282, fixes #188

Release note:

Make flushDaemon stoppable to prevent goroutine leak

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Feb 10, 2022

CLA Signed

The committers are authorized under a signed CLA.

@k8s-ci-robot k8s-ci-robot added the cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. label Feb 10, 2022
@k8s-ci-robot
Copy link

Welcome @katexochen!

It looks like this is your first PR to kubernetes/klog 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes/klog has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Feb 10, 2022
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. and removed cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. labels Feb 10, 2022
@pohly
Copy link

pohly commented Feb 11, 2022

I prefer the approach suggested in #282 (comment)

klog_test.go Outdated
@@ -35,11 +35,24 @@ import (
"time"

"github.com/go-logr/logr"
"go.uber.org/goleak"
Copy link

Choose a reason for hiding this comment

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

We can't have go.uber.org/goleak as dependency of klog itself.

You can create an examples/flushing directory where you provide a main.go file which shows how to use the new API and a test that uses goleak.

Copy link
Author

Choose a reason for hiding this comment

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

Sure, I already thought so. I'll move this in into a separate directory.

@katexochen
Copy link
Author

I prefer the approach suggested in #282 (comment)

sorry @pohly, it was my intention to stick to your suggestion. Maybe I misunderstood your proposal.

That means that we can move the flush daemon startup from init into createFiles #282 (comment)

This is what is happening now, the flushDaemon is started in createFiles.

Of course it must only be started once. #282 (comment)

FlushDaemon's run function will only start a new flushing goroutine if it isn't already running.

An API for stopping and waiting for it to stop can be added as an API extension at the same time. #282 (comment)

I've added the API extension you proposed.

Adding some unit tests for this would be good. #282 (comment)

The new code is easily testable. I don't have a lot of experience testing packages with global state. Maybe there is a better way to do this.

I'd be happy if you could clarify how I could improve this PR in the direction of your initial proposal. 🙂

Copy link

@pohly pohly left a comment

Choose a reason for hiding this comment

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

it was my intention to stick to your suggestion. Maybe I misunderstood your proposal.

No, you got it right. I just didn't read the entire PR and didn't see that newFlushDaemon doesn't start a goroutine.

klog.go Outdated
// run starts a goroutine that periodically calls the daemons flush function.
// Calling run on an already running daemon will have no effect.
func (f *flushDaemon) run() {
if f.isRunning() {
Copy link

Choose a reason for hiding this comment

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

Some more code and/or documentation is needed to ensure that this code is thread-safe.

As it stands now, the user might call StopFlushDaemon while the daemon is being started. Not very likely, but still...

We can probably require that logging.mu must be held when calling run, stop or isRunning and then lock that mutex in StopFlushDaemon.

Copy link
Author

Choose a reason for hiding this comment

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

I'd prefer to lock the flushDaemon separate from the loggingT, by giving the daemon its own mutex. This way, flushDaemon can do the locking itself, which reduces complexity for the caller.

Copy link

Choose a reason for hiding this comment

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

I agree, this better. I was worried that run might be called frequently, but because createFile itself is under an if check, that won't be the case.

klog.go Outdated
case <-ticker.C:
f.flush()
case <-f.stopC:
ticker.Stop()
Copy link

Choose a reason for hiding this comment

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

nit: I prefer to have this in a defer directly after setting up the ticker.

klog.go Outdated
f.flush()
case <-f.stopC:
ticker.Stop()
f.stopDone <- struct{}{}
Copy link

Choose a reason for hiding this comment

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

nit: also a candidate for a defer.

@pohly
Copy link

pohly commented Feb 11, 2022

BTW, as far as I am concerned you can squash right away and force-push a single commit. Then we can merge it right away when it is done.

@pohly
Copy link

pohly commented Feb 12, 2022

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. and removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Feb 12, 2022
Copy link

@pohly pohly left a comment

Choose a reason for hiding this comment

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

/lgtm

/assign @dims

Still needs ok-to-test, it looks like I can't add that.

@k8s-ci-robot k8s-ci-robot added lgtm "Looks good to me", indicates that a PR is ready to be merged. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. and removed lgtm "Looks good to me", indicates that a PR is ready to be merged. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Feb 16, 2022
@pohly
Copy link

pohly commented Feb 16, 2022

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 16, 2022
@dims
Copy link
Member

dims commented Feb 17, 2022

/approve
/assign @thockin

/hold let's give Tim a chance to peek, please remove hold in a couple of days.

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Feb 17, 2022
@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 17, 2022
Copy link
Member

@thockin thockin left a comment

Choose a reason for hiding this comment

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

No objections

klog.go Outdated
@@ -1022,6 +1024,9 @@ const bufferSize = 256 * 1024
// createFiles creates all the log files for severity from sev down to infoLog.
// l.mu is held.
func (l *loggingT) createFiles(sev severity.Severity) error {
if l.flushD != nil {
Copy link
Member

Choose a reason for hiding this comment

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

under what conditions would this be nil?

Copy link
Author

Choose a reason for hiding this comment

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

I guess it shouldn't happen during normal operation, I will remove the check.

Refactor flushDaemon function into a seperate struct. Instead of
starting the daemon in the init function, it is now started during
createFile, where it is only used. Add function to stop daemon.
This way, users can gracefully shut down klog and prevent goroutine
leakage. Test daemon flushing.
@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 19, 2022
@katexochen
Copy link
Author

Since TestFlushDaemon failed, I've increased the sleep duration to give the flushDaemon more time to start and lowered the expected flush count.

klog.go Show resolved Hide resolved
klog_test.go Outdated
t.Error("expected flushD to be running")
}

time.Sleep(400 * time.Millisecond)
Copy link
Member

Choose a reason for hiding this comment

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

Comment on why sleep? This is usually a smell...

Copy link
Member

Choose a reason for hiding this comment

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

Or inject a fake ticket so you can manually "advance time" rather than sleep. Deterministic tests FTW

Copy link
Author

Choose a reason for hiding this comment

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

Thanks for your feedback. I'm not quite sure what you mean by "fake ticket". Did you mean ticker? I think the problem here is the startup time of the goroutine, not the flush interval, so I don't understand how a fake ticker could help with that.
But I agree that tests should be deterministic if possible and I'd be glad if you could give me some more hints on how to make it deterministic. 🙂

Copy link
Member

@thockin thockin Feb 22, 2022

Choose a reason for hiding this comment

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

Sorry, I meant "ticker".

e.g. staging/src/k8s.io/client-go/util/workqueue/rate_limiting_queue_test.go - it uses testingclock.NewFakeClock (k8s.io/utils/clock/testing) which has a NewTicker method.

Pass a k8s.io/utils/clock.WithTicker to newFlushDaemon() (passing nil means "use time.NewTicker()") and store that in the flushDaemon struct. In run() you can check if the passed-in clock.WithTicker is nil. If so, do what this does now (use a real ticker) but if it is not nil, use it instead.

Then your test manipulates the fake clock's time to cause ticks when you expect them.

As for the daemon startup - you already call isRunning(), so you know it's alive...

Copy link
Author

Choose a reason for hiding this comment

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

I've added the clock, thanks for the great tip.
In addition, I had to move the creation of the ticker out of the go function and add a channel for communication between the spy function and the test.

klog.go Outdated
stopDone chan struct{}
}

// newFlushDaemon retrun a new flushDaemon.
Copy link
Member

Choose a reason for hiding this comment

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

s/retrun/return

klog.go Outdated
}

// newFlushDaemon retrun a new flushDaemon.
func newFlushDaemon(interval time.Duration, flush func()) *flushDaemon {
Copy link
Member

Choose a reason for hiding this comment

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

I think you should take a clock.WithTicker argument, and if it is passed in as nil, use clock.RealClock. And document it in the comment above :)

klog_test.go Show resolved Hide resolved
klog_test.go Outdated
}

testClock.Step(time.Second)
<-flushed
Copy link
Member

Choose a reason for hiding this comment

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

Should this be verifying something? What happens if there was a bug and flush-daemon did not call the func properly, what would this test report?

Copy link
Author

Choose a reason for hiding this comment

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

The statement verifies that flush was called and let's the test wait until the flush execution finished. If the function isn't called, the test will time out. If I don't wait for the function here, the testClock.Step() statements will be all executed directly after each other, without flushDaemon having time to flush in between, so the flushDaemon would only enter the case <-ticker.C() once, regardless of how many steps the clock does.

Copy link
Member

Choose a reason for hiding this comment

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

What I meant is maybe we should control the timeout and produce an error ourselves. The default is something like 10 minutes, right? It seems like we could wrap these reads in a timeout of 10 seconds and produce a better error.

Copy link
Member

@thockin thockin left a comment

Choose a reason for hiding this comment

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

I'm going to go ahead an approve - my last comment is pretty incremental :)

/approve
/lgtm

klog_test.go Outdated
}

testClock.Step(time.Second)
<-flushed
Copy link
Member

Choose a reason for hiding this comment

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

What I meant is maybe we should control the timeout and produce an error ourselves. The default is something like 10 minutes, right? It seems like we could wrap these reads in a timeout of 10 seconds and produce a better error.

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 24, 2022
@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 26, 2022
@thockin thockin added tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. and removed do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. labels Feb 27, 2022
@thockin
Copy link
Member

thockin commented Feb 27, 2022

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 27, 2022
@k8s-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dims, katexochen, pohly, thockin

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot merged commit 7ea6d6a into kubernetes:main Feb 27, 2022
require github.com/go-logr/logr v1.2.0
require (
github.com/go-logr/logr v1.2.0
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
Copy link
Member

Choose a reason for hiding this comment

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

this adds a circular dependency... utils already depends on klog, we should avoid making klog also depend on utils

Copy link

Choose a reason for hiding this comment

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

I think the test is useful enough that we should not remove it and instead carry a copy of the clock code -> #310

@thockin
Copy link
Member

thockin commented Oct 11, 2022 via email

TylerHelmuth referenced this pull request in open-telemetry/opentelemetry-collector-contrib Dec 19, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [k8s.io/klog](https://github.com/kubernetes/klog) | require | major
| `v1.0.0` -> `v2.110.1` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>kubernetes/klog (k8s.io/klog)</summary>

###
[`v2.110.1`](https://github.com/kubernetes/klog/releases/tag/v2.110.1):
Prepare klog release for Kubernetes v1.29 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.100.1...v2.110.1)

#### What's Changed

- fix: SetLogger via klog.SetLogger will output an unexpected newline by
[@&#8203;aimuz](https://github.com/aimuz) in
[https://github.com/kubernetes/klog/pull/378](https://github.com/kubernetes/klog/pull/378)
- resolve comments warning by
[@&#8203;lowang-bh](https://github.com/lowang-bh) in
[https://github.com/kubernetes/klog/pull/379](https://github.com/kubernetes/klog/pull/379)
- stderrthreshold: fix flag comment by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/376](https://github.com/kubernetes/klog/pull/376)
- enable "go vet" checks for parameters by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/390](https://github.com/kubernetes/klog/pull/390)
- promote experimental code to stable by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/392](https://github.com/kubernetes/klog/pull/392)
- golangci-lint action by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/380](https://github.com/kubernetes/klog/pull/380)
- output: handle WithName like zapr does by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/391](https://github.com/kubernetes/klog/pull/391)
- slog support + logr 1.3.0 update by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/384](https://github.com/kubernetes/klog/pull/384)

#### New Contributors

- [@&#8203;aimuz](https://github.com/aimuz) made their first
contribution in
[https://github.com/kubernetes/klog/pull/378](https://github.com/kubernetes/klog/pull/378)
- [@&#8203;lowang-bh](https://github.com/lowang-bh) made their first
contribution in
[https://github.com/kubernetes/klog/pull/379](https://github.com/kubernetes/klog/pull/379)

**Full Changelog**:
kubernetes/klog@v2.100.1...v2.110.1

###
[`v2.100.1`](https://github.com/kubernetes/klog/releases/tag/v2.100.1):
Prepare klog release for Kubernetes v1.28 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.90.1...v2.100.1)

#### What's Changed

- expose logBridge via NewStandardLog() by
[@&#8203;mikedanese](https://github.com/mikedanese) in
[https://github.com/kubernetes/klog/pull/369](https://github.com/kubernetes/klog/pull/369)
- add Format wrapper by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/374](https://github.com/kubernetes/klog/pull/374)
- JSON as fallback encoding by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/375](https://github.com/kubernetes/klog/pull/375)

#### New Contributors

- [@&#8203;mikedanese](https://github.com/mikedanese) made their first
contribution in
[https://github.com/kubernetes/klog/pull/369](https://github.com/kubernetes/klog/pull/369)

**Full Changelog**:
kubernetes/klog@v2.90.1...v2.100.1

###
[`v2.90.1`](https://github.com/kubernetes/klog/releases/tag/v2.90.1):
Prepare klog release for Kubernetes v1.27 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.90.0...v2.90.1)

#### What's Changed

- buffer: restore dropping of too large buffers by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/366](https://github.com/kubernetes/klog/pull/366)
- ktesting improvements by [@&#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/365](https://github.com/kubernetes/klog/pull/365)
- ktesting + textlogger config api by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/368](https://github.com/kubernetes/klog/pull/368)
- textlogger write through by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/363](https://github.com/kubernetes/klog/pull/363)

**Full Changelog**:
kubernetes/klog@v2.90.0...v2.90.1

###
[`v2.90.0`](https://github.com/kubernetes/klog/releases/tag/v2.90.0):
Prepare klog release for Kubernetes v1.27 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.80.1...v2.90.0)

#### What's Changed

- klog: benchmark the overhead when logging is off by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/355](https://github.com/kubernetes/klog/pull/355)
- improve textlogger by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/362](https://github.com/kubernetes/klog/pull/362)

**Full Changelog**:
kubernetes/klog@v2.80.1...v2.90.0

##### There are some API differences from previous version

    k8s.io/klog/v2/klogr contains incompatible changes:
     - klogger.Enabled: removed
     - klogger.Error: removed
     - klogger.Info: removed

    k8s.io/klog/v2/test contains incompatible changes:
     - InitKlog: changed from func() to func(testing.TB) *flag.FlagSet

###
[`v2.80.1`](https://github.com/kubernetes/klog/releases/tag/v2.80.1):
Prepare klog release for Kubernetes v1.26 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.80.0...v2.80.1)

#### What's Changed

- InitFlags concurrency fix by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/349](https://github.com/kubernetes/klog/pull/349)

**Full Changelog**:
kubernetes/klog@v2.80.0...v2.80.1

###
[`v2.80.0`](https://github.com/kubernetes/klog/releases/tag/v2.80.0):
Prepare klog release for Kubernetes v1.26 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.70.1...v2.80.0)

#### What's Changed

- OWNERS: add harshanarayana by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/342](https://github.com/kubernetes/klog/pull/342)
- kvlistformat: fix the issue with display marshalled value for non
string type by
[@&#8203;harshanarayana](https://github.com/harshanarayana) in
[https://github.com/kubernetes/klog/pull/344](https://github.com/kubernetes/klog/pull/344)
- Bump version of golang to 1.19 and drop older versions by
[@&#8203;dims](https://github.com/dims) in
[https://github.com/kubernetes/klog/pull/345](https://github.com/kubernetes/klog/pull/345)

**Full Changelog**:
kubernetes/klog@v2.70.1...v2.80.0

###
[`v2.70.1`](https://github.com/kubernetes/klog/releases/tag/v2.70.1):
Prepare klog release for Kubernetes v1.25 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.70.0...v2.70.1)

#### What's Changed

- ktesting: handle test completion by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/337](https://github.com/kubernetes/klog/pull/337)
- contextual logging: enable by default again by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/341](https://github.com/kubernetes/klog/pull/341)

**Full Changelog**:
kubernetes/klog@v2.70.0...v2.70.1

###
[`v2.70.0`](https://github.com/kubernetes/klog/releases/tag/v2.70.0):
Prepare klog release for Kubernetes v1.25 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.60.1...v2.70.0)

#### What's Changed

- logcheck: contextual logging + enhanced checks by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/297](https://github.com/kubernetes/klog/pull/297)
- hack/tools: drop dependency on golangci-lint by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/313](https://github.com/kubernetes/klog/pull/313)
- StopFlushDaemon: document flushing on shutdown by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/314](https://github.com/kubernetes/klog/pull/314)
- logcheck: fix detection of invalid \* regexp in filter by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/315](https://github.com/kubernetes/klog/pull/315)
- README.md: clarify -logtostderr by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/319](https://github.com/kubernetes/klog/pull/319)
- Trim duplicates by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/324](https://github.com/kubernetes/klog/pull/324)
- replace KObjs with KObjSlice by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/322](https://github.com/kubernetes/klog/pull/322)
- support logr.Marshaler by [@&#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/325](https://github.com/kubernetes/klog/pull/325)
- internal: remove unused TrimDuplicates by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/326](https://github.com/kubernetes/klog/pull/326)
- save and restore state by [@&#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/320](https://github.com/kubernetes/klog/pull/320)
- GitHub: use apidiff with more recent Go by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/329](https://github.com/kubernetes/klog/pull/329)
- remove hack/tools by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/330](https://github.com/kubernetes/klog/pull/330)
- GIT-331: fix shadowing key from the kv pair by
[@&#8203;harshanarayana](https://github.com/harshanarayana) in
[https://github.com/kubernetes/klog/pull/332](https://github.com/kubernetes/klog/pull/332)
- klog.Fatal backtrace revert by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/328](https://github.com/kubernetes/klog/pull/328)
- ktesting: capture log data in memory by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/327](https://github.com/kubernetes/klog/pull/327)
- GIT-275: add tests for int and struct keys by
[@&#8203;harshanarayana](https://github.com/harshanarayana) in
[https://github.com/kubernetes/klog/pull/333](https://github.com/kubernetes/klog/pull/333)

#### New Contributors

- [@&#8203;harshanarayana](https://github.com/harshanarayana) made
their first contribution in
[https://github.com/kubernetes/klog/pull/332](https://github.com/kubernetes/klog/pull/332)

**Full Changelog**:
kubernetes/klog@v2.60.1...v2.70.0

###
[`v2.60.1`](https://github.com/kubernetes/klog/releases/tag/v2.60.1):
Prepare klog release for Kubernetes v1.24 (Take 6)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.60.0...v2.60.1)

#### What's Changed

- Cleanup OWNERS file by
[@&#8203;serathius](https://github.com/serathius) in
[https://github.com/kubernetes/klog/pull/309](https://github.com/kubernetes/klog/pull/309)
- dependencies: avoid k8s.io/utils, fork clock code instead by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/310](https://github.com/kubernetes/klog/pull/310)
- promote contextual logging APIs to stable by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/311](https://github.com/kubernetes/klog/pull/311)

**Full Changelog**:
kubernetes/klog@v2.60.0...v2.60.1

###
[`v2.60.0`](https://github.com/kubernetes/klog/releases/tag/v2.60.0):
Prepare klog release for Kubernetes v1.24 (Take 5)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.50.2...v2.60.0)

#### What's Changed

- SetContextualLogger: remove unintentionally merged API call by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/308](https://github.com/kubernetes/klog/pull/308)

**Full Changelog**:
kubernetes/klog@v2.50.2...v2.60.0

###
[`v2.50.2`](https://github.com/kubernetes/klog/compare/v2.50.1...v2.50.2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.50.1...v2.50.2)

###
[`v2.50.1`](https://github.com/kubernetes/klog/releases/tag/v2.50.1):
Prepare klog release for Kubernetes v1.24 (Take 4)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.50.0...v2.50.1)

#### What's Changed

- SetLoggerWithOptions: support flushing by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/306](https://github.com/kubernetes/klog/pull/306)

**Full Changelog**:
kubernetes/klog@v2.50.0...v2.50.1

###
[`v2.50.0`](https://github.com/kubernetes/klog/releases/tag/v2.50.0):
Prepare klog release for Kubernetes v1.24 (Take 3)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.40.1...v2.50.0)

#### What's Changed

- Panic on empty info with custom logr by
[@&#8203;jklaw90](https://github.com/jklaw90) in
[https://github.com/kubernetes/klog/pull/283](https://github.com/kubernetes/klog/pull/283)
- Add missing Depth logging functions. by
[@&#8203;s3rj1k](https://github.com/s3rj1k) in
[https://github.com/kubernetes/klog/pull/280](https://github.com/kubernetes/klog/pull/280)
- fix typo in klog.go by
[@&#8203;cocaccola](https://github.com/cocaccola) in
[https://github.com/kubernetes/klog/pull/270](https://github.com/kubernetes/klog/pull/270)
- Update README.md by
[@&#8203;noaabarki](https://github.com/noaabarki) in
[https://github.com/kubernetes/klog/pull/281](https://github.com/kubernetes/klog/pull/281)
- log filter: ignored by V, used during log call by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/290](https://github.com/kubernetes/klog/pull/290)
- SetLogger/ClearLogger/SetLogFilter cleanup by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/289](https://github.com/kubernetes/klog/pull/289)
- fixes for PR
[#&#8203;280](https://github.com/kubernetes/klog/issues/280),
refactoring, textlogger, unit test by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/287](https://github.com/kubernetes/klog/pull/287)
- klogr verbosity by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/295](https://github.com/kubernetes/klog/pull/295)
- test: fix Go version matrix by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/298](https://github.com/kubernetes/klog/pull/298)
- handle panics in MarshalLog, Error, String by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/299](https://github.com/kubernetes/klog/pull/299)
- Fix goroutine leak: make flushDaemon stoppable by
[@&#8203;katexochen](https://github.com/katexochen) in
[https://github.com/kubernetes/klog/pull/293](https://github.com/kubernetes/klog/pull/293)
- structured logging: replacing Fatal/Exit/etc. without loss of flushing
by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/303](https://github.com/kubernetes/klog/pull/303)
- contextual logging by [@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/296](https://github.com/kubernetes/klog/pull/296)
- remove side effects of tests by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/305](https://github.com/kubernetes/klog/pull/305)
- tests: stop testing with Go 1.14 by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/304](https://github.com/kubernetes/klog/pull/304)

#### New Contributors

- [@&#8203;jklaw90](https://github.com/jklaw90) made their first
contribution in
[https://github.com/kubernetes/klog/pull/283](https://github.com/kubernetes/klog/pull/283)
- [@&#8203;s3rj1k](https://github.com/s3rj1k) made their first
contribution in
[https://github.com/kubernetes/klog/pull/280](https://github.com/kubernetes/klog/pull/280)
- [@&#8203;cocaccola](https://github.com/cocaccola) made their first
contribution in
[https://github.com/kubernetes/klog/pull/270](https://github.com/kubernetes/klog/pull/270)
- [@&#8203;noaabarki](https://github.com/noaabarki) made their first
contribution in
[https://github.com/kubernetes/klog/pull/281](https://github.com/kubernetes/klog/pull/281)
- [@&#8203;katexochen](https://github.com/katexochen) made their first
contribution in
[https://github.com/kubernetes/klog/pull/293](https://github.com/kubernetes/klog/pull/293)

**Full Changelog**:
kubernetes/klog@v2.40.1...v2.50.0

###
[`v2.40.1`](https://github.com/kubernetes/klog/releases/tag/v2.40.1):
Prepare klog release for Kubernetes v1.24 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.40.0...v2.40.1)

#### What's Changed

- Using OS targeted go files to separate out the username logic. by
[@&#8203;phillipsj](https://github.com/phillipsj) in
[https://github.com/kubernetes/klog/pull/271](https://github.com/kubernetes/klog/pull/271)
- Recover from nil pointers when logging by
[@&#8203;dims](https://github.com/dims) in
[https://github.com/kubernetes/klog/pull/279](https://github.com/kubernetes/klog/pull/279)

#### New Contributors

- [@&#8203;phillipsj](https://github.com/phillipsj) made their first
contribution in
[https://github.com/kubernetes/klog/pull/271](https://github.com/kubernetes/klog/pull/271)

**Full Changelog**:
kubernetes/klog@v2.40.0...v2.40.1

###
[`v2.40.0`](https://github.com/kubernetes/klog/releases/tag/v2.40.0):
Prepare klog release for Kubernetes v1.24

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.30.0...v2.40.0)

#### What's Changed

- structured logging: support values with line breaks by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/273](https://github.com/kubernetes/klog/pull/273)
- Fix klog lock release on panic error by
[@&#8203;astraw99](https://github.com/astraw99) in
[https://github.com/kubernetes/klog/pull/272](https://github.com/kubernetes/klog/pull/272)
- add format test for KObjs by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/276](https://github.com/kubernetes/klog/pull/276)
- add Verbose.InfoSDepth by [@&#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/277](https://github.com/kubernetes/klog/pull/277)

#### Known Issues

-
[https://github.com/kubernetes/klog/issues/278](https://github.com/kubernetes/klog/issues/278)

#### New Contributors

- [@&#8203;astraw99](https://github.com/astraw99) made their first
contribution in
[https://github.com/kubernetes/klog/pull/272](https://github.com/kubernetes/klog/pull/272)

**Full Changelog**:
kubernetes/klog@v2.30.0...v2.40.0

###
[`v2.30.0`](https://github.com/kubernetes/klog/releases/tag/v2.30.0):
Prepare klog release for Kubernetes v1.23 (take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.20.0...v2.30.0)

#### What's Changed

- Fix logcheck exit function by
[@&#8203;luyou86](https://github.com/luyou86) in
[https://github.com/kubernetes/klog/pull/265](https://github.com/kubernetes/klog/pull/265)
- custom marshaler for ObjectRef by
[@&#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/266](https://github.com/kubernetes/klog/pull/266)

#### New Contributors

- [@&#8203;luyou86](https://github.com/luyou86) made their first
contribution in
[https://github.com/kubernetes/klog/pull/265](https://github.com/kubernetes/klog/pull/265)

**Full Changelog**:
kubernetes/klog@v2.20.0...v2.30.0

###
[`v2.20.0`](https://github.com/kubernetes/klog/releases/tag/v2.20.0):
Prepare klog release for Kubernetes v1.23

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.10.0...v2.20.0)

Changes are here :
kubernetes/klog@v2.10.0...v2.20.0

since we moved to logr v1.0.0, there are incompatible changes:

    - klogger.Enabled: changed from func() bool to func(int) bool
- klogger.Info: changed from func(string, ...interface{}) to func(int,
string, ...interface{})
    - klogger.V: removed
- klogger.WithCallDepth: changed from func(int)
github.com/go-logr/logr.Logger to func(int)
github.com/go-logr/logr.LogSink
- klogger.WithName: changed from func(string)
github.com/go-logr/logr.Logger to func(string)
github.com/go-logr/logr.LogSink
- klogger.WithValues: changed from func(...interface{})
github.com/go-logr/logr.Logger to func(...interface{})
github.com/go-logr/logr.LogSink

[`83653a6`](https://github.com/kubernetes/klog/commit/83653a6deebf)
Update to newest versions of golang 1.17.x
[`d648c2e`](https://github.com/kubernetes/klog/commit/d648c2e42d30)
fix file-based filtering symbolization
[`8ee3d65`](https://github.com/kubernetes/klog/commit/8ee3d652c96b)
export ClearLogger
[`4171f3c`](https://github.com/kubernetes/klog/commit/4171f3c1be1b)
Switching to logr tag v1.0.0
[`9ab3c2b`](https://github.com/kubernetes/klog/commit/9ab3c2b56cb2)
add serathius as approvers of klog

###
[`v2.10.0`](https://github.com/kubernetes/klog/releases/tag/v2.10.0):
One more change to support 1.22 release

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.9.0...v2.10.0)

Changes are here :
kubernetes/klog@v2.9.0...v2.10.0

new function added:

    func KObjs(arg interface{}) []ObjectRef

###
[`v2.9.0`](https://github.com/kubernetes/klog/releases/tag/v2.9.0):
Prepare release for Kubernetes v1.22

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.8.0...v2.9.0)

Changes are here :
kubernetes/klog@v2.8.0...v2.9.0

[`6a9ef3f`](https://github.com/kubernetes/klog/commit/6a9ef3fa9a15)
fix typo
[`59f7cb5`](https://github.com/kubernetes/klog/commit/59f7cb505f58)
fix byte array display in InfoS and ErrorS
[`cf22f1e`](https://github.com/kubernetes/klog/commit/cf22f1e79721)
Call logr with call depth
[`e95c7e3`](https://github.com/kubernetes/klog/commit/e95c7e303755)
make SetLogger thread-safe
[`2728fe1`](https://github.com/kubernetes/klog/commit/2728fe192acc)
check usage of format specifier in structured log func
[`a18bc97`](https://github.com/kubernetes/klog/commit/a18bc976a212)
Fix by pr suggestions
[`4e4135c`](https://github.com/kubernetes/klog/commit/4e4135c3dd8a)
Add check for InfoS & ErrorS parameters

###
[`v2.8.0`](https://github.com/kubernetes/klog/releases/tag/v2.8.0):
Bug fixes for structured logging for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.7.0...v2.8.0)

###
[`v2.7.0`](https://github.com/kubernetes/klog/releases/tag/v2.7.0):
Miscellaneous fixes for structured logging for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.6.0...v2.7.0)

Changes are here :
kubernetes/klog@v2.6.0...v2.7.0

###
[`v2.6.0`](https://github.com/kubernetes/klog/releases/tag/v2.6.0):
Adding a linter for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.5.0...v2.6.0)

Changes are here :
kubernetes/klog@v2.5.0...v2.6.0

please see
https://github.com/kubernetes/klog/tree/master/hack/tools/logcheck

###
[`v2.5.0`](https://github.com/kubernetes/klog/releases/tag/v2.5.0):
Prepare release for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.4.0...v2.5.0)

Changes are here :
kubernetes/klog@v2.4.0...v2.5.0

klog.go has new API:

+func ErrorSDepth(depth int, err error, msg string, keysAndValues
...interface{}) {
+func InfoSDepth(depth int, msg string, keysAndValues ...interface{}) {

klogr/klogr.go has new API:

    func (l klogger) WithCallDepth(depth int) logr.Logger {
    func NewWithOptions(options ...Option) logr.Logger {
    func WithFormat(format Format) Option {

###
[`v2.4.0`](https://github.com/kubernetes/klog/releases/tag/v2.4.0):
Prepare release for Kubernetes v1.20

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.3.0...v2.4.0)

Changes are here :
kubernetes/klog@v2.3.0...v2.4.0

###
[`v2.3.0`](https://github.com/kubernetes/klog/releases/tag/v2.3.0):
Fix Typo-ed Method Error -&gt; ErrorS

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.2.0...v2.3.0)

Changes are here :
kubernetes/klog@v2.2.0...v2.3.0

###
[`v2.2.0`](https://github.com/kubernetes/klog/releases/tag/v2.2.0):
Dependency update and bugfix for InfoS

[Compare
Source](https://github.com/kubernetes/klog/compare/2.1.0...v2.2.0)

- [`2e691eb`](https://github.com/kubernetes/klog/commit/2e691eb3eeb3)
Fix missing fields in verbose InfoS
- [`966c986`](https://github.com/kubernetes/klog/commit/966c98681ca0)
feat use go-logr v0.2.0

Changes are here :
kubernetes/klog@v2.1.0...v2.2.0

###
[`v2.1.0`](https://github.com/kubernetes/klog/releases/tag/v2.1.0):
Better support for Structured Logging

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.0.0...2.1.0)

We are now enforcing API compatibility, added Windows based tests, and
have tweaked the structured logging methods after some real world
experience updating kubernetes main repo.

- [`bbd9ca1`](https://github.com/kubernetes/klog/commit/bbd9ca1) Add
tests for error in InfoS
- [`1ccc0e1`](https://github.com/kubernetes/klog/commit/1ccc0e1) fix
imported bug time encode format form kvlistFormat
- [`dd4d1a6`](https://github.com/kubernetes/klog/commit/dd4d1a6) fix
typo in README.md
- [`49123d4`](https://github.com/kubernetes/klog/commit/49123d4)
ErrorS(nil, ...) should call loggr.Error(nil, ...)
- [`5b199cd`](https://github.com/kubernetes/klog/commit/5b199cd) Fix
documentation for V(level)
- [`d1eb30f`](https://github.com/kubernetes/klog/commit/d1eb30f) Add
apidiff script to check go signature changes
- [`dc505bf`](https://github.com/kubernetes/klog/commit/dc505bf)
Switch slack channel to #klog
- [`a47ebb9`](https://github.com/kubernetes/klog/commit/a47ebb9) Add
example for co-existence of klog v1 and v2
- [`134f148`](https://github.com/kubernetes/klog/commit/134f148)
logName(): lazily lookup userName instead of on init()
- [`db06a1b`](https://github.com/kubernetes/klog/commit/db06a1b) fix
serialization of special html chars
- [`5727d2a`](https://github.com/kubernetes/klog/commit/5727d2a) Fix
Windows integration tests
- [`edbc1d3`](https://github.com/kubernetes/klog/commit/edbc1d3)
test(\*): TestRollover failed randomly on Windows
- [`6f99060`](https://github.com/kubernetes/klog/commit/6f99060) Add
LogToStderr, a programatic way to log exclusively to stderr or not

###
[`v2.0.0`](https://github.com/kubernetes/klog/releases/tag/v2.0.0):
Release to support Kubernetes v1.19

[Compare
Source](https://github.com/kubernetes/klog/compare/v1.0.0...v2.0.0)

Beware of type change: `Verbose`

New Methods:

-   `SetLogger` (override logger to set a custom implementation)
-   `InfoS` (structured logging)
-   `ErrorS` (structured logging)

Changes are here :
kubernetes/klog@v2.0.0-rc.1...v2.0.0

</details>

---

### Configuration

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

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

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

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

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
Co-authored-by: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com>
cparkins referenced this pull request in AmadeusITGroup/opentelemetry-collector-contrib Jan 10, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [k8s.io/klog](https://github.com/kubernetes/klog) | require | major
| `v1.0.0` -> `v2.110.1` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>kubernetes/klog (k8s.io/klog)</summary>

###
[`v2.110.1`](https://github.com/kubernetes/klog/releases/tag/v2.110.1):
Prepare klog release for Kubernetes v1.29 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.100.1...v2.110.1)

#### What's Changed

- fix: SetLogger via klog.SetLogger will output an unexpected newline by
[@&open-telemetry#8203;aimuz](https://github.com/aimuz) in
[https://github.com/kubernetes/klog/pull/378](https://github.com/kubernetes/klog/pull/378)
- resolve comments warning by
[@&open-telemetry#8203;lowang-bh](https://github.com/lowang-bh) in
[https://github.com/kubernetes/klog/pull/379](https://github.com/kubernetes/klog/pull/379)
- stderrthreshold: fix flag comment by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/376](https://github.com/kubernetes/klog/pull/376)
- enable "go vet" checks for parameters by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/390](https://github.com/kubernetes/klog/pull/390)
- promote experimental code to stable by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/392](https://github.com/kubernetes/klog/pull/392)
- golangci-lint action by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/380](https://github.com/kubernetes/klog/pull/380)
- output: handle WithName like zapr does by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/391](https://github.com/kubernetes/klog/pull/391)
- slog support + logr 1.3.0 update by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/384](https://github.com/kubernetes/klog/pull/384)

#### New Contributors

- [@&open-telemetry#8203;aimuz](https://github.com/aimuz) made their first
contribution in
[https://github.com/kubernetes/klog/pull/378](https://github.com/kubernetes/klog/pull/378)
- [@&open-telemetry#8203;lowang-bh](https://github.com/lowang-bh) made their first
contribution in
[https://github.com/kubernetes/klog/pull/379](https://github.com/kubernetes/klog/pull/379)

**Full Changelog**:
kubernetes/klog@v2.100.1...v2.110.1

###
[`v2.100.1`](https://github.com/kubernetes/klog/releases/tag/v2.100.1):
Prepare klog release for Kubernetes v1.28 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.90.1...v2.100.1)

#### What's Changed

- expose logBridge via NewStandardLog() by
[@&open-telemetry#8203;mikedanese](https://github.com/mikedanese) in
[https://github.com/kubernetes/klog/pull/369](https://github.com/kubernetes/klog/pull/369)
- add Format wrapper by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/374](https://github.com/kubernetes/klog/pull/374)
- JSON as fallback encoding by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/375](https://github.com/kubernetes/klog/pull/375)

#### New Contributors

- [@&open-telemetry#8203;mikedanese](https://github.com/mikedanese) made their first
contribution in
[https://github.com/kubernetes/klog/pull/369](https://github.com/kubernetes/klog/pull/369)

**Full Changelog**:
kubernetes/klog@v2.90.1...v2.100.1

###
[`v2.90.1`](https://github.com/kubernetes/klog/releases/tag/v2.90.1):
Prepare klog release for Kubernetes v1.27 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.90.0...v2.90.1)

#### What's Changed

- buffer: restore dropping of too large buffers by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/366](https://github.com/kubernetes/klog/pull/366)
- ktesting improvements by [@&open-telemetry#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/365](https://github.com/kubernetes/klog/pull/365)
- ktesting + textlogger config api by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/368](https://github.com/kubernetes/klog/pull/368)
- textlogger write through by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/363](https://github.com/kubernetes/klog/pull/363)

**Full Changelog**:
kubernetes/klog@v2.90.0...v2.90.1

###
[`v2.90.0`](https://github.com/kubernetes/klog/releases/tag/v2.90.0):
Prepare klog release for Kubernetes v1.27 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.80.1...v2.90.0)

#### What's Changed

- klog: benchmark the overhead when logging is off by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/355](https://github.com/kubernetes/klog/pull/355)
- improve textlogger by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/362](https://github.com/kubernetes/klog/pull/362)

**Full Changelog**:
kubernetes/klog@v2.80.1...v2.90.0

##### There are some API differences from previous version

    k8s.io/klog/v2/klogr contains incompatible changes:
     - klogger.Enabled: removed
     - klogger.Error: removed
     - klogger.Info: removed

    k8s.io/klog/v2/test contains incompatible changes:
     - InitKlog: changed from func() to func(testing.TB) *flag.FlagSet

###
[`v2.80.1`](https://github.com/kubernetes/klog/releases/tag/v2.80.1):
Prepare klog release for Kubernetes v1.26 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.80.0...v2.80.1)

#### What's Changed

- InitFlags concurrency fix by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/349](https://github.com/kubernetes/klog/pull/349)

**Full Changelog**:
kubernetes/klog@v2.80.0...v2.80.1

###
[`v2.80.0`](https://github.com/kubernetes/klog/releases/tag/v2.80.0):
Prepare klog release for Kubernetes v1.26 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.70.1...v2.80.0)

#### What's Changed

- OWNERS: add harshanarayana by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/342](https://github.com/kubernetes/klog/pull/342)
- kvlistformat: fix the issue with display marshalled value for non
string type by
[@&open-telemetry#8203;harshanarayana](https://github.com/harshanarayana) in
[https://github.com/kubernetes/klog/pull/344](https://github.com/kubernetes/klog/pull/344)
- Bump version of golang to 1.19 and drop older versions by
[@&open-telemetry#8203;dims](https://github.com/dims) in
[https://github.com/kubernetes/klog/pull/345](https://github.com/kubernetes/klog/pull/345)

**Full Changelog**:
kubernetes/klog@v2.70.1...v2.80.0

###
[`v2.70.1`](https://github.com/kubernetes/klog/releases/tag/v2.70.1):
Prepare klog release for Kubernetes v1.25 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.70.0...v2.70.1)

#### What's Changed

- ktesting: handle test completion by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/337](https://github.com/kubernetes/klog/pull/337)
- contextual logging: enable by default again by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/341](https://github.com/kubernetes/klog/pull/341)

**Full Changelog**:
kubernetes/klog@v2.70.0...v2.70.1

###
[`v2.70.0`](https://github.com/kubernetes/klog/releases/tag/v2.70.0):
Prepare klog release for Kubernetes v1.25 (Take 1)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.60.1...v2.70.0)

#### What's Changed

- logcheck: contextual logging + enhanced checks by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/297](https://github.com/kubernetes/klog/pull/297)
- hack/tools: drop dependency on golangci-lint by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/313](https://github.com/kubernetes/klog/pull/313)
- StopFlushDaemon: document flushing on shutdown by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/314](https://github.com/kubernetes/klog/pull/314)
- logcheck: fix detection of invalid \* regexp in filter by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/315](https://github.com/kubernetes/klog/pull/315)
- README.md: clarify -logtostderr by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/319](https://github.com/kubernetes/klog/pull/319)
- Trim duplicates by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/324](https://github.com/kubernetes/klog/pull/324)
- replace KObjs with KObjSlice by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/322](https://github.com/kubernetes/klog/pull/322)
- support logr.Marshaler by [@&open-telemetry#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/325](https://github.com/kubernetes/klog/pull/325)
- internal: remove unused TrimDuplicates by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/326](https://github.com/kubernetes/klog/pull/326)
- save and restore state by [@&open-telemetry#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/320](https://github.com/kubernetes/klog/pull/320)
- GitHub: use apidiff with more recent Go by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/329](https://github.com/kubernetes/klog/pull/329)
- remove hack/tools by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/330](https://github.com/kubernetes/klog/pull/330)
- GIT-331: fix shadowing key from the kv pair by
[@&open-telemetry#8203;harshanarayana](https://github.com/harshanarayana) in
[https://github.com/kubernetes/klog/pull/332](https://github.com/kubernetes/klog/pull/332)
- klog.Fatal backtrace revert by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/328](https://github.com/kubernetes/klog/pull/328)
- ktesting: capture log data in memory by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/327](https://github.com/kubernetes/klog/pull/327)
- GIT-275: add tests for int and struct keys by
[@&open-telemetry#8203;harshanarayana](https://github.com/harshanarayana) in
[https://github.com/kubernetes/klog/pull/333](https://github.com/kubernetes/klog/pull/333)

#### New Contributors

- [@&open-telemetry#8203;harshanarayana](https://github.com/harshanarayana) made
their first contribution in
[https://github.com/kubernetes/klog/pull/332](https://github.com/kubernetes/klog/pull/332)

**Full Changelog**:
kubernetes/klog@v2.60.1...v2.70.0

###
[`v2.60.1`](https://github.com/kubernetes/klog/releases/tag/v2.60.1):
Prepare klog release for Kubernetes v1.24 (Take 6)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.60.0...v2.60.1)

#### What's Changed

- Cleanup OWNERS file by
[@&open-telemetry#8203;serathius](https://github.com/serathius) in
[https://github.com/kubernetes/klog/pull/309](https://github.com/kubernetes/klog/pull/309)
- dependencies: avoid k8s.io/utils, fork clock code instead by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/310](https://github.com/kubernetes/klog/pull/310)
- promote contextual logging APIs to stable by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/311](https://github.com/kubernetes/klog/pull/311)

**Full Changelog**:
kubernetes/klog@v2.60.0...v2.60.1

###
[`v2.60.0`](https://github.com/kubernetes/klog/releases/tag/v2.60.0):
Prepare klog release for Kubernetes v1.24 (Take 5)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.50.2...v2.60.0)

#### What's Changed

- SetContextualLogger: remove unintentionally merged API call by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/308](https://github.com/kubernetes/klog/pull/308)

**Full Changelog**:
kubernetes/klog@v2.50.2...v2.60.0

###
[`v2.50.2`](https://github.com/kubernetes/klog/compare/v2.50.1...v2.50.2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.50.1...v2.50.2)

###
[`v2.50.1`](https://github.com/kubernetes/klog/releases/tag/v2.50.1):
Prepare klog release for Kubernetes v1.24 (Take 4)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.50.0...v2.50.1)

#### What's Changed

- SetLoggerWithOptions: support flushing by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/306](https://github.com/kubernetes/klog/pull/306)

**Full Changelog**:
kubernetes/klog@v2.50.0...v2.50.1

###
[`v2.50.0`](https://github.com/kubernetes/klog/releases/tag/v2.50.0):
Prepare klog release for Kubernetes v1.24 (Take 3)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.40.1...v2.50.0)

#### What's Changed

- Panic on empty info with custom logr by
[@&open-telemetry#8203;jklaw90](https://github.com/jklaw90) in
[https://github.com/kubernetes/klog/pull/283](https://github.com/kubernetes/klog/pull/283)
- Add missing Depth logging functions. by
[@&open-telemetry#8203;s3rj1k](https://github.com/s3rj1k) in
[https://github.com/kubernetes/klog/pull/280](https://github.com/kubernetes/klog/pull/280)
- fix typo in klog.go by
[@&open-telemetry#8203;cocaccola](https://github.com/cocaccola) in
[https://github.com/kubernetes/klog/pull/270](https://github.com/kubernetes/klog/pull/270)
- Update README.md by
[@&open-telemetry#8203;noaabarki](https://github.com/noaabarki) in
[https://github.com/kubernetes/klog/pull/281](https://github.com/kubernetes/klog/pull/281)
- log filter: ignored by V, used during log call by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/290](https://github.com/kubernetes/klog/pull/290)
- SetLogger/ClearLogger/SetLogFilter cleanup by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/289](https://github.com/kubernetes/klog/pull/289)
- fixes for PR
[#&open-telemetry#8203;280](https://github.com/kubernetes/klog/issues/280),
refactoring, textlogger, unit test by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/287](https://github.com/kubernetes/klog/pull/287)
- klogr verbosity by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/295](https://github.com/kubernetes/klog/pull/295)
- test: fix Go version matrix by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/298](https://github.com/kubernetes/klog/pull/298)
- handle panics in MarshalLog, Error, String by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/299](https://github.com/kubernetes/klog/pull/299)
- Fix goroutine leak: make flushDaemon stoppable by
[@&open-telemetry#8203;katexochen](https://github.com/katexochen) in
[https://github.com/kubernetes/klog/pull/293](https://github.com/kubernetes/klog/pull/293)
- structured logging: replacing Fatal/Exit/etc. without loss of flushing
by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/303](https://github.com/kubernetes/klog/pull/303)
- contextual logging by [@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/296](https://github.com/kubernetes/klog/pull/296)
- remove side effects of tests by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/305](https://github.com/kubernetes/klog/pull/305)
- tests: stop testing with Go 1.14 by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/304](https://github.com/kubernetes/klog/pull/304)

#### New Contributors

- [@&open-telemetry#8203;jklaw90](https://github.com/jklaw90) made their first
contribution in
[https://github.com/kubernetes/klog/pull/283](https://github.com/kubernetes/klog/pull/283)
- [@&open-telemetry#8203;s3rj1k](https://github.com/s3rj1k) made their first
contribution in
[https://github.com/kubernetes/klog/pull/280](https://github.com/kubernetes/klog/pull/280)
- [@&open-telemetry#8203;cocaccola](https://github.com/cocaccola) made their first
contribution in
[https://github.com/kubernetes/klog/pull/270](https://github.com/kubernetes/klog/pull/270)
- [@&open-telemetry#8203;noaabarki](https://github.com/noaabarki) made their first
contribution in
[https://github.com/kubernetes/klog/pull/281](https://github.com/kubernetes/klog/pull/281)
- [@&open-telemetry#8203;katexochen](https://github.com/katexochen) made their first
contribution in
[https://github.com/kubernetes/klog/pull/293](https://github.com/kubernetes/klog/pull/293)

**Full Changelog**:
kubernetes/klog@v2.40.1...v2.50.0

###
[`v2.40.1`](https://github.com/kubernetes/klog/releases/tag/v2.40.1):
Prepare klog release for Kubernetes v1.24 (Take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.40.0...v2.40.1)

#### What's Changed

- Using OS targeted go files to separate out the username logic. by
[@&open-telemetry#8203;phillipsj](https://github.com/phillipsj) in
[https://github.com/kubernetes/klog/pull/271](https://github.com/kubernetes/klog/pull/271)
- Recover from nil pointers when logging by
[@&open-telemetry#8203;dims](https://github.com/dims) in
[https://github.com/kubernetes/klog/pull/279](https://github.com/kubernetes/klog/pull/279)

#### New Contributors

- [@&open-telemetry#8203;phillipsj](https://github.com/phillipsj) made their first
contribution in
[https://github.com/kubernetes/klog/pull/271](https://github.com/kubernetes/klog/pull/271)

**Full Changelog**:
kubernetes/klog@v2.40.0...v2.40.1

###
[`v2.40.0`](https://github.com/kubernetes/klog/releases/tag/v2.40.0):
Prepare klog release for Kubernetes v1.24

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.30.0...v2.40.0)

#### What's Changed

- structured logging: support values with line breaks by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/273](https://github.com/kubernetes/klog/pull/273)
- Fix klog lock release on panic error by
[@&open-telemetry#8203;astraw99](https://github.com/astraw99) in
[https://github.com/kubernetes/klog/pull/272](https://github.com/kubernetes/klog/pull/272)
- add format test for KObjs by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/276](https://github.com/kubernetes/klog/pull/276)
- add Verbose.InfoSDepth by [@&open-telemetry#8203;pohly](https://github.com/pohly)
in
[https://github.com/kubernetes/klog/pull/277](https://github.com/kubernetes/klog/pull/277)

#### Known Issues

-
[https://github.com/kubernetes/klog/issues/278](https://github.com/kubernetes/klog/issues/278)

#### New Contributors

- [@&open-telemetry#8203;astraw99](https://github.com/astraw99) made their first
contribution in
[https://github.com/kubernetes/klog/pull/272](https://github.com/kubernetes/klog/pull/272)

**Full Changelog**:
kubernetes/klog@v2.30.0...v2.40.0

###
[`v2.30.0`](https://github.com/kubernetes/klog/releases/tag/v2.30.0):
Prepare klog release for Kubernetes v1.23 (take 2)

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.20.0...v2.30.0)

#### What's Changed

- Fix logcheck exit function by
[@&open-telemetry#8203;luyou86](https://github.com/luyou86) in
[https://github.com/kubernetes/klog/pull/265](https://github.com/kubernetes/klog/pull/265)
- custom marshaler for ObjectRef by
[@&open-telemetry#8203;pohly](https://github.com/pohly) in
[https://github.com/kubernetes/klog/pull/266](https://github.com/kubernetes/klog/pull/266)

#### New Contributors

- [@&open-telemetry#8203;luyou86](https://github.com/luyou86) made their first
contribution in
[https://github.com/kubernetes/klog/pull/265](https://github.com/kubernetes/klog/pull/265)

**Full Changelog**:
kubernetes/klog@v2.20.0...v2.30.0

###
[`v2.20.0`](https://github.com/kubernetes/klog/releases/tag/v2.20.0):
Prepare klog release for Kubernetes v1.23

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.10.0...v2.20.0)

Changes are here :
kubernetes/klog@v2.10.0...v2.20.0

since we moved to logr v1.0.0, there are incompatible changes:

    - klogger.Enabled: changed from func() bool to func(int) bool
- klogger.Info: changed from func(string, ...interface{}) to func(int,
string, ...interface{})
    - klogger.V: removed
- klogger.WithCallDepth: changed from func(int)
github.com/go-logr/logr.Logger to func(int)
github.com/go-logr/logr.LogSink
- klogger.WithName: changed from func(string)
github.com/go-logr/logr.Logger to func(string)
github.com/go-logr/logr.LogSink
- klogger.WithValues: changed from func(...interface{})
github.com/go-logr/logr.Logger to func(...interface{})
github.com/go-logr/logr.LogSink

[`83653a6`](https://github.com/kubernetes/klog/commit/83653a6deebf)
Update to newest versions of golang 1.17.x
[`d648c2e`](https://github.com/kubernetes/klog/commit/d648c2e42d30)
fix file-based filtering symbolization
[`8ee3d65`](https://github.com/kubernetes/klog/commit/8ee3d652c96b)
export ClearLogger
[`4171f3c`](https://github.com/kubernetes/klog/commit/4171f3c1be1b)
Switching to logr tag v1.0.0
[`9ab3c2b`](https://github.com/kubernetes/klog/commit/9ab3c2b56cb2)
add serathius as approvers of klog

###
[`v2.10.0`](https://github.com/kubernetes/klog/releases/tag/v2.10.0):
One more change to support 1.22 release

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.9.0...v2.10.0)

Changes are here :
kubernetes/klog@v2.9.0...v2.10.0

new function added:

    func KObjs(arg interface{}) []ObjectRef

###
[`v2.9.0`](https://github.com/kubernetes/klog/releases/tag/v2.9.0):
Prepare release for Kubernetes v1.22

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.8.0...v2.9.0)

Changes are here :
kubernetes/klog@v2.8.0...v2.9.0

[`6a9ef3f`](https://github.com/kubernetes/klog/commit/6a9ef3fa9a15)
fix typo
[`59f7cb5`](https://github.com/kubernetes/klog/commit/59f7cb505f58)
fix byte array display in InfoS and ErrorS
[`cf22f1e`](https://github.com/kubernetes/klog/commit/cf22f1e79721)
Call logr with call depth
[`e95c7e3`](https://github.com/kubernetes/klog/commit/e95c7e303755)
make SetLogger thread-safe
[`2728fe1`](https://github.com/kubernetes/klog/commit/2728fe192acc)
check usage of format specifier in structured log func
[`a18bc97`](https://github.com/kubernetes/klog/commit/a18bc976a212)
Fix by pr suggestions
[`4e4135c`](https://github.com/kubernetes/klog/commit/4e4135c3dd8a)
Add check for InfoS & ErrorS parameters

###
[`v2.8.0`](https://github.com/kubernetes/klog/releases/tag/v2.8.0):
Bug fixes for structured logging for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.7.0...v2.8.0)

###
[`v2.7.0`](https://github.com/kubernetes/klog/releases/tag/v2.7.0):
Miscellaneous fixes for structured logging for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.6.0...v2.7.0)

Changes are here :
kubernetes/klog@v2.6.0...v2.7.0

###
[`v2.6.0`](https://github.com/kubernetes/klog/releases/tag/v2.6.0):
Adding a linter for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.5.0...v2.6.0)

Changes are here :
kubernetes/klog@v2.5.0...v2.6.0

please see
https://github.com/kubernetes/klog/tree/master/hack/tools/logcheck

###
[`v2.5.0`](https://github.com/kubernetes/klog/releases/tag/v2.5.0):
Prepare release for Kubernetes v1.21

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.4.0...v2.5.0)

Changes are here :
kubernetes/klog@v2.4.0...v2.5.0

klog.go has new API:

+func ErrorSDepth(depth int, err error, msg string, keysAndValues
...interface{}) {
+func InfoSDepth(depth int, msg string, keysAndValues ...interface{}) {

klogr/klogr.go has new API:

    func (l klogger) WithCallDepth(depth int) logr.Logger {
    func NewWithOptions(options ...Option) logr.Logger {
    func WithFormat(format Format) Option {

###
[`v2.4.0`](https://github.com/kubernetes/klog/releases/tag/v2.4.0):
Prepare release for Kubernetes v1.20

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.3.0...v2.4.0)

Changes are here :
kubernetes/klog@v2.3.0...v2.4.0

###
[`v2.3.0`](https://github.com/kubernetes/klog/releases/tag/v2.3.0):
Fix Typo-ed Method Error -&gt; ErrorS

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.2.0...v2.3.0)

Changes are here :
kubernetes/klog@v2.2.0...v2.3.0

###
[`v2.2.0`](https://github.com/kubernetes/klog/releases/tag/v2.2.0):
Dependency update and bugfix for InfoS

[Compare
Source](https://github.com/kubernetes/klog/compare/2.1.0...v2.2.0)

- [`2e691eb`](https://github.com/kubernetes/klog/commit/2e691eb3eeb3)
Fix missing fields in verbose InfoS
- [`966c986`](https://github.com/kubernetes/klog/commit/966c98681ca0)
feat use go-logr v0.2.0

Changes are here :
kubernetes/klog@v2.1.0...v2.2.0

###
[`v2.1.0`](https://github.com/kubernetes/klog/releases/tag/v2.1.0):
Better support for Structured Logging

[Compare
Source](https://github.com/kubernetes/klog/compare/v2.0.0...2.1.0)

We are now enforcing API compatibility, added Windows based tests, and
have tweaked the structured logging methods after some real world
experience updating kubernetes main repo.

- [`bbd9ca1`](https://github.com/kubernetes/klog/commit/bbd9ca1) Add
tests for error in InfoS
- [`1ccc0e1`](https://github.com/kubernetes/klog/commit/1ccc0e1) fix
imported bug time encode format form kvlistFormat
- [`dd4d1a6`](https://github.com/kubernetes/klog/commit/dd4d1a6) fix
typo in README.md
- [`49123d4`](https://github.com/kubernetes/klog/commit/49123d4)
ErrorS(nil, ...) should call loggr.Error(nil, ...)
- [`5b199cd`](https://github.com/kubernetes/klog/commit/5b199cd) Fix
documentation for V(level)
- [`d1eb30f`](https://github.com/kubernetes/klog/commit/d1eb30f) Add
apidiff script to check go signature changes
- [`dc505bf`](https://github.com/kubernetes/klog/commit/dc505bf)
Switch slack channel to #klog
- [`a47ebb9`](https://github.com/kubernetes/klog/commit/a47ebb9) Add
example for co-existence of klog v1 and v2
- [`134f148`](https://github.com/kubernetes/klog/commit/134f148)
logName(): lazily lookup userName instead of on init()
- [`db06a1b`](https://github.com/kubernetes/klog/commit/db06a1b) fix
serialization of special html chars
- [`5727d2a`](https://github.com/kubernetes/klog/commit/5727d2a) Fix
Windows integration tests
- [`edbc1d3`](https://github.com/kubernetes/klog/commit/edbc1d3)
test(\*): TestRollover failed randomly on Windows
- [`6f99060`](https://github.com/kubernetes/klog/commit/6f99060) Add
LogToStderr, a programatic way to log exclusively to stderr or not

###
[`v2.0.0`](https://github.com/kubernetes/klog/releases/tag/v2.0.0):
Release to support Kubernetes v1.19

[Compare
Source](https://github.com/kubernetes/klog/compare/v1.0.0...v2.0.0)

Beware of type change: `Verbose`

New Methods:

-   `SetLogger` (override logger to set a custom implementation)
-   `InfoS` (structured logging)
-   `ErrorS` (structured logging)

Changes are here :
kubernetes/klog@v2.0.0-rc.1...v2.0.0

</details>

---

### Configuration

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

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

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

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

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
Co-authored-by: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

go routine created on flush logs leaks go routine created on flush logs has a leak.
6 participants