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

ktesting: handle test completion #337

Merged
merged 3 commits into from
Jul 6, 2022

Conversation

pohly
Copy link

@pohly pohly commented Jun 29, 2022

What this PR does / why we need it:

When testing.T.Log gets called after the test has completed, it panics. There's
also a data race (kubernetes/kubernetes#110854).

Normally that should never happen because tests should ensure that all
goroutines have stopped before returning. But sometimes it is not possible to
do that. Now when a test is completed, ktesting will automatically cause all
future usage of the testing.T instance to be redirected
to klog with a prefix that indicates that a goroutine has leaked.

Which issue(s) this PR fixes:

Related-to #kubernetes/kubernetes#110811

Special notes for your reviewer:

Release note:

Tests using ktesting and goroutines which continue to log through it after test completion used to trigger a data race in testing.T and a panic. Now such output goes to the global klog logger with `<test name> leaked goroutine` as prefix.

It makes it more obvious what calls to the ktesting API will look like in real
code.
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jun 29, 2022
func (l *tlogger) stop() {
l.mutex.Lock()
defer l.mutex.Unlock()
l.t = nil
Copy link
Author

@pohly pohly Jun 29, 2022

Choose a reason for hiding this comment

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

Commenting out this line triggers the problem in the new unit test:

panic: Log in goroutine after TestStop/Sub has completed: INFO hello world


goroutine 22 [running]:
testing.(*common).logDepth(0xc0000f8000, {0xc000124000, 0x11}, 0x3)
	/nvme/gopath/go-1.18.1/src/testing/testing.go:887 +0x4c7
testing.(*common).log(...)
	/nvme/gopath/go-1.18.1/src/testing/testing.go:869
testing.(*common).Log(0xc0000f8000, {0xc00011c000?, 0x50?, 0x1?})
	/nvme/gopath/go-1.18.1/src/testing/testing.go:910 +0x4e
k8s.io/klog/v2/ktesting.(*tlogger).log(0xc0000aae60, {0x52990b, 0x4}, {0x52af37, 0xb}, 0x0, 0xc0000aeed8, {0x0, 0x0}, {0x0, ...})
	/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger.go:328 +0x36c
k8s.io/klog/v2/ktesting.(*tlogger).Info(0xc0000aae60, 0x558008?, {0x52af37, 0xb}, {0x0, 0x0, 0x0})
	/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger.go:293 +0x1d6
github.com/go-logr/logr.Logger.Info({{0x558008?, 0xc0000aae60?}, 0x0?}, {0x52af37, 0xb}, {0x0, 0x0, 0x0})
	/nvme/gopath/pkg/mod/github.com/go-logr/logr@v1.2.0/logr.go:249 +0xd0
k8s.io/klog/v2/ktesting_test.TestStop.func1.1()
	/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger_test.go:169 +0x65
created by k8s.io/klog/v2/ktesting_test.TestStop.func1
	/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger_test.go:166 +0x105
FAIL	k8s.io/klog/v2/ktesting	0.008s
FAIL

@pohly
Copy link
Author

pohly commented Jun 29, 2022

I verified that adding defer ktesting.Stop(logger) to the kubelet shutdown test avoids the panic and data race in testing. However, the test had other problems because of the leaking goroutines.

@pohly
Copy link
Author

pohly commented Jun 29, 2022

/assign @serathius

@@ -94,6 +105,25 @@ func NewLogger(t TL, c *Config) logr.Logger {
})
}

// Stop ensures that all future log entries get discarded. This is necessary
Copy link
Author

Choose a reason for hiding this comment

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

Discarding output will make it hard to see that goroutines have leaked and debug why they are still running.

I think a better solution will be to redirect output to the global klog logger with a unique prefix. Something like

<test>: leaked goroutine: <message>

Copy link
Author

Choose a reason for hiding this comment

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

Also, this entire new API call is unnecessary.

There is testing.T.Cleanup, so ktesting itself can ensure that it gets notified when the test is done.

/hold

Copy link
Author

Choose a reason for hiding this comment

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

/hold cancel

Using testing.T.Cleanup implies extending out TL interface, which is an API change. ktesting is still experimental, so I think it is okay and worth it.

Copy link
Author

Choose a reason for hiding this comment

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

I found a way around the API break: instead of requiring Name and Cleanup, the constructor now only uses them if implemented.

@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 Jun 30, 2022
@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. labels Jun 30, 2022
ktesting/testinglogger.go Outdated Show resolved Hide resolved
@pohly pohly force-pushed the testing-logger-stop branch 2 times, most recently from 965b786 to 7ac2aed Compare June 30, 2022 07:35
@pohly pohly changed the title ktesting: add Stop ktesting: handle test completion Jun 30, 2022
pohly added a commit to pohly/kubernetes that referenced this pull request Jun 30, 2022
It turned out that using testing.T for logging had a race condition and
potential panic because the tests keep goroutines running and testing.T is not
supposed to be used anymore after test
completion (kubernetes#110854).

Either the code must be fixed to terminate all goroutines before a test
ends (seems non-trivial because the usage of goroutines is fairly complex in
the shutdown manager code), or ktesting must handle this case. A solution for
this is pending in kubernetes/klog#337.

Either way, solving this will take a bit longer. In the meantime, we should
revert the change to get unit testing stable again.

In order to make this a local change, ktesting is kept as a dependency of the
test and thus Kubernetes.
defer l.shared.mutex.Unlock()
if l.shared.t == nil {
l.fallbackLogger().V(level).Info(msg, kvList...)
return
Copy link
Author

Choose a reason for hiding this comment

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

Returning here without capturing the output in the buffer is intentional: if the test has completed, there is no-one left who needs the additional log entries.

Due a missing space, _TL was a variable of type NopTL instead
of asserting that NopTL implements the TL interface.
l.shared.mutex.Lock()
defer l.shared.mutex.Unlock()
if l.shared.t == nil {
l.fallbackLogger().V(level).Info(msg, kvList...)

Choose a reason for hiding this comment

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

Would it be better to log this message without using the V(level) switch? Would that help catch some of the issue with tests where things are still getting written to log after test is done?

Copy link
Author

Choose a reason for hiding this comment

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

That's an interesting idea. I'm just worried that this might increase the log volume of tests which currently have no way of cleaning up goroutines.

What if we instead print one warning per test logger the first time that a leaked goroutine is detected? That warning then can provide information about that goroutine, which is more than a developer gets from the prefix.

Choose a reason for hiding this comment

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

That is a better option for sure. Do we need to handle the cases where more than one go-routine is trying to still write to test logger? It would be one line of warning per leaked go routine per test

Copy link
Author

Choose a reason for hiding this comment

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

I think one warning is enough. That gives some indication that something is amiss without overwhelming with output.

Copy link
Author

Choose a reason for hiding this comment

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

I added:

        testinglogger_test.go:195] "TestStop/Sub leaked goroutine: WARNING: test kept at least one goroutine running after test completion" callstack=<
        	goroutine 35 [running]:
        	k8s.io/klog/v2/internal/dbg.Stacks(0x0)
        		/nvme/gopath/src/k8s.io/klog/internal/dbg/dbg.go:34 +0x8a
        	k8s.io/klog/v2/ktesting.tlogger.fallbackLogger({0xc000160780, {0x0, 0x0}, {0x0, 0x0, 0x0}})
        		/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger.go:292 +0x232
        	k8s.io/klog/v2/ktesting.tlogger.Info({0xc000160780, {0x0, 0x0}, {0x0, 0x0, 0x0}}, 0x0, {0x5454f1, 0x13}, {0x0, ...})
        		/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger.go:316 +0x28a
        	github.com/go-logr/logr.Logger.Info({{0x5735f8?, 0xc00011d020?}, 0x0?}, {0x5454f1, 0x13}, {0x0, 0x0, 0x0})
        		/nvme/gopath/pkg/mod/github.com/go-logr/logr@v1.2.0/logr.go:249 +0xd0
        	k8s.io/klog/v2/ktesting_test.TestStop.func1.1()
        		/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger_test.go:195 +0xd0
        	created by k8s.io/klog/v2/ktesting_test.TestStop.func1
        		/nvme/gopath/src/k8s.io/klog/ktesting/testinglogger_test.go:186 +0xf8
         >

This could be made a bit nicer by skipping frames, but I want to keep the code simple, so I am just using the same helper as for goroutine dumps in klog (= wrapper around runtime.Stacks), except that I am only dumping one goroutine.

Dumping only one is intentional: "go test" itself uses goroutines and the test suite might run other tests in parallel.

Choose a reason for hiding this comment

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

Makes sense. This already give us good enough good information to start digging into failures better.

Choose a reason for hiding this comment

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

Please mark this as resolved

},
}

type testCleanup interface {

Choose a reason for hiding this comment

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

Can this be made a global interface so that eventually we can decide it this can be integrated into the standard TL interface ? Any advantages of keeping this local ?

Copy link
Author

Choose a reason for hiding this comment

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

TL is part of the ktesting API. Changing it triggers an apidiff error.

We could ignore that error because the ktesting API is still marked EXPERIMENTAL, but I think it is simpler to make implementation of these additional methods optional. There are some TL implementations in our own ktesting code which then don''t need to be modified.

Choose a reason for hiding this comment

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

I am fine with not making this part of the default TL interface. I was only suggesting moving this interface definition outside of the local scope. But that is mostly a cosmetic thing.

},
}

type testCleanup interface {

Choose a reason for hiding this comment

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

I am fine with not making this part of the default TL interface. I was only suggesting moving this interface definition outside of the local scope. But that is mostly a cosmetic thing.

ktesting/testinglogger.go Show resolved Hide resolved
l.shared.mutex.Lock()
defer l.shared.mutex.Unlock()
if l.shared.t == nil {
l.fallbackLogger().V(level).Info(msg, kvList...)

Choose a reason for hiding this comment

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

That is a better option for sure. Do we need to handle the cases where more than one go-routine is trying to still write to test logger? It would be one line of warning per leaked go routine per test

@@ -227,35 +247,85 @@ func (b *buffer) Data() Log {
return b.log.DeepCopy()
}

// tloggerShared holds values that are the same for all instances.

Choose a reason for hiding this comment

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

// loggerShared holds values that are common across all instances.

Might be a small rewording required here to make it read a bit better ?

Copy link
Author

Choose a reason for hiding this comment

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

Added some more text.

Choose a reason for hiding this comment

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

Please mark this as resolved

// Ensure that goroutine has completed.
wg2.Wait()

actual := output.String()

Choose a reason for hiding this comment

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

Can we please also extend this test to show that these lines are not captured in the buffer?

Choose a reason for hiding this comment

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

If we setup your ktesting.NewTestContext(t) to a global logger logr.Logger we can do the following to show how things work when someone writes to logger post test context. Would this be useful to have ?

	testingLogger, _ := logger.GetSink().(ktesting.Underlier)
	if len(testingLogger.GetBuffer().Data()) != 1 {
		t.Error("Expected this one to not catch logs from leaked goroutines")
	}

Copy link
Author

Choose a reason for hiding this comment

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

Added

Choose a reason for hiding this comment

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

Please mark this as resolved

When testing.T.Log gets called after the test has completed, it panics. There's
also a data race (kubernetes/kubernetes#110854).

Normally that should never happen because tests should ensure that all
goroutines have stopped before returning. But sometimes it is not possible to
do that. ktesting now automatically protects against that by registering a
cleanup function and redirecting all future output into klog.
@pohly
Copy link
Author

pohly commented Jul 6, 2022

@harshanarayana : I have pushed the enhancements, please take another look: https://github.com/kubernetes/klog/compare/5564ba3b4f48cccaf8d7faf0b11ffe5663f04c88..9405f8edad47f2b2bef7caa3cea95c8278fbea44

Copy link

@harshanarayana harshanarayana left a comment

Choose a reason for hiding this comment

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

@pohly I went through the changes. Looks good to me. I have no more comments to add at this point.

I will do one more scan of this to make sure I did not miss anything and update back if I find anything else.

@pohly
Copy link
Author

pohly commented Jul 6, 2022

@harshanarayana I appreciate your thoroughness, thanks. When you are done, then please assign to dims.

BTW, are you okay with adding you to the reviewers of the OWNERS file?

@harshanarayana
Copy link

harshanarayana commented Jul 6, 2022

@pohly No more comments from me on the changes that are part of this PR. It looks great.

@harshanarayana
Copy link

@pohly

BTW, are you okay with adding you to the reviewers of the OWNERS file?

Sure. I am fine with that. Thanks for the consideration.

@harshanarayana
Copy link

/cc @dims

@k8s-ci-robot k8s-ci-robot requested a review from dims July 6, 2022 18:50
@harshanarayana
Copy link

/assign @dims

@dims
Copy link
Member

dims commented Jul 6, 2022

/approve
/lgtm

thanks @pohly @harshanarayana

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

[APPROVALNOTIFIER] This PR is APPROVED

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

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 added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 6, 2022
@k8s-ci-robot k8s-ci-robot merged commit ea66a13 into kubernetes:main Jul 6, 2022
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. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants