Skip to content

Commit 784af2c

Browse files
committed
Move to logging contexts
Also restructured config_tx so it doesn't need copies of config data.
1 parent 1f78665 commit 784af2c

File tree

14 files changed

+189
-223
lines changed

14 files changed

+189
-223
lines changed

internal/logging/pion.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ func (c pionLogger) Errorf(format string, args ...any) {
4848
type pionLoggerFactory struct{}
4949

5050
func (c pionLoggerFactory) NewLogger(subsystem string) logging.LeveledLogger {
51-
logger := rootLogger.getLogger(subsystem).With().
52-
Str("scope", "pion").
51+
logger := GetSubsystemLogger("pion").
52+
With().
5353
Str("component", subsystem).
5454
Logger()
5555

internal/logging/utils.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,17 +93,22 @@ func LogError(context zerolog.Context, err error, msg string, args ...any) error
9393
return err
9494
}
9595

96+
func LogAlways(context zerolog.Context, msg string, args ...any) {
97+
logger := context.Logger()
98+
logger.Log().Msgf(msg, args...)
99+
}
100+
96101
func LogFatal(context zerolog.Context, err error, msg string, args ...any) error {
97102
context, err = AddRequiredError(context, err, msg, args...)
98103
logger := context.Logger()
99-
logger.Fatal().Msgf(msg, args...)
104+
logger.Fatal().AnErr("err", err).Msgf(msg, args...)
100105
return err
101106
}
102107

103108
func LogPanic(context zerolog.Context, err error, msg string, args ...any) error {
104109
context, err = AddRequiredError(context, err, msg, args...)
105110
logger := context.Logger()
106-
logger.Panic().Msgf(msg, args...)
111+
logger.Panic().AnErr("err", err).Msgf(msg, args...)
107112
return err
108113
}
109114

internal/usbgadget/changeset.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import (
88
"reflect"
99
"time"
1010

11+
"github.com/jetkvm/kvm/internal/logging"
1112
"github.com/prometheus/procfs"
13+
"github.com/rs/zerolog"
1214
"github.com/sourcegraph/tf-dag/dag"
1315
)
1416

@@ -194,15 +196,15 @@ func (fc *FileChange) checkIfDirIsMountPoint() error {
194196
}
195197

196198
// GetActualState returns the actual state of the file at the given path.
197-
func (fc *FileChange) getActualState() error {
198-
l := defaultLogger.With().Str("path", fc.Path).Logger()
199+
func (fc *FileChange) getActualState(loggingContext *zerolog.Context) error {
200+
context := loggingContext.Str("path", fc.Path)
199201

200202
fi, err := os.Lstat(fc.Path)
201203
if err != nil {
202204
if os.IsNotExist(err) {
203205
fc.ActualState = FileStateAbsent
204206
} else {
205-
l.Warn().Err(err).Msg("failed to stat file")
207+
_ = logging.LogWarnE(context, err, "failed to stat file")
206208
fc.ActualState = FileStateUnknown
207209
}
208210
return nil
@@ -214,15 +216,15 @@ func (fc *FileChange) getActualState() error {
214216
// get the target of the symlink
215217
target, err := os.Readlink(fc.Path)
216218
if err != nil {
217-
l.Warn().Err(err).Msg("failed to read symlink")
219+
_ = logging.LogWarnE(context, err, "failed to read symlink")
218220
return fmt.Errorf("failed to read symlink")
219221
}
220222
// check if the target is a relative path
221223
if !filepath.IsAbs(target) {
222224
// make it absolute
223225
target, err = filepath.Abs(filepath.Join(filepath.Dir(fc.Path), target))
224226
if err != nil {
225-
l.Warn().Err(err).Msg("failed to make symlink target absolute")
227+
_ = logging.LogWarnE(context, err, "failed to make symlink target absolute")
226228
return fmt.Errorf("failed to make symlink target absolute")
227229
}
228230
}
@@ -237,22 +239,20 @@ func (fc *FileChange) getActualState() error {
237239
case FileStateMountedConfigFS:
238240
err := fc.checkIfDirIsMountPoint()
239241
if err != nil {
240-
l.Warn().Err(err).Msg("failed to check if dir is mount point")
241-
return err
242+
return logging.LogWarnE(context, err, "failed to check if dir is mount point")
242243
}
243244
case FileStateSymlinkInOrderConfigFS:
244-
state, err := checkIfSymlinksInOrder(fc, &l)
245+
state, err := checkIfSymlinksInOrder(fc, &context)
245246
if err != nil {
246-
l.Warn().Err(err).Msg("failed to check if symlinks are in order")
247-
return err
247+
return logging.LogWarnE(context, err, "failed to check if symlinks are in order")
248248
}
249249
fc.ActualState = state
250250
}
251251
return nil
252252
}
253253

254254
if fi.Mode()&os.ModeDevice == os.ModeDevice {
255-
l.Info().Msg("file is a device")
255+
logging.LogInfo(context, "file is a device")
256256
return nil
257257
}
258258

@@ -262,15 +262,14 @@ func (fc *FileChange) getActualState() error {
262262
// get the content of the file
263263
content, err := os.ReadFile(fc.Path)
264264
if err != nil {
265-
l.Warn().Err(err).Msg("failed to read file")
265+
logging.LogWarnE(context, err, "failed to read file")
266266
return fmt.Errorf("failed to read file")
267267
}
268268
fc.ActualContent = content
269269
return nil
270270
}
271271

272-
l.Warn().Interface("file_info", fi.Mode()).Bool("is_dir", fi.IsDir()).Msg("unknown file type")
273-
272+
logging.LogWarn(context.Interface("file_info", fi.Mode()).Bool("is_dir", fi.IsDir()), "unknown file type")
274273
return fmt.Errorf("unknown file type")
275274
}
276275

@@ -280,18 +279,16 @@ func (fc *FileChange) ResetActionResolution() {
280279
fc.changed = ChangeStateUnknown
281280
}
282281

283-
func (fc *FileChange) Action() FileChangeResolvedAction {
282+
func (fc *FileChange) Action(loggingContext *zerolog.Context) FileChangeResolvedAction {
284283
if !fc.checked {
285-
fc.action = fc.getFileChangeResolvedAction()
284+
fc.action = fc.getFileChangeResolvedAction(loggingContext)
286285
fc.checked = true
287286
}
288287

289288
return fc.action
290289
}
291290

292-
func (fc *FileChange) getFileChangeResolvedAction() FileChangeResolvedAction {
293-
l := defaultLogger.With().Str("path", fc.Path).Logger()
294-
291+
func (fc *FileChange) getFileChangeResolvedAction(loggingContext *zerolog.Context) FileChangeResolvedAction {
295292
// some actions are not needed to be checked
296293
switch fc.ExpectedState {
297294
case FileStateFileWrite:
@@ -300,8 +297,10 @@ func (fc *FileChange) getFileChangeResolvedAction() FileChangeResolvedAction {
300297
return FileChangeResolvedActionTouch
301298
}
302299

300+
context := loggingContext.Interface("expected_state", FileStateString[fc.ExpectedState])
301+
303302
// get the actual state of the file
304-
err := fc.getActualState()
303+
err := fc.getActualState(&context)
305304
if err != nil {
306305
return FileChangeResolvedActionDoNothing
307306
}
@@ -348,7 +347,7 @@ func (fc *FileChange) getFileChangeResolvedAction() FileChangeResolvedAction {
348347
}
349348
return FileChangeResolvedActionCreateSymlink
350349
case FileStateSymlinkInOrderConfigFS:
351-
// if the file is already a symlink, check if the target is the same
350+
// if the file is already a symlink to configfs, check if the target is the same
352351
if fc.ActualState == FileStateSymlinkInOrderConfigFS {
353352
return FileChangeResolvedActionDoNothing
354353
}
@@ -364,7 +363,7 @@ func (fc *FileChange) getFileChangeResolvedAction() FileChangeResolvedAction {
364363
}
365364
return FileChangeResolvedActionMountConfigFS
366365
default:
367-
l.Warn().Interface("file_change", FileStateString[fc.ExpectedState]).Msg("unknown expected state")
366+
logging.LogWarn(context, "unknown expected state")
368367
return FileChangeResolvedActionDoNothing
369368
}
370369
}
@@ -387,18 +386,19 @@ func (c *ChangeSet) AddFileChange(component string, path string, expectedState F
387386
})
388387
}
389388

390-
func (c *ChangeSet) ApplyChanges() error {
389+
func (c *ChangeSet) ApplyChanges(loggingContext *zerolog.Context) error {
391390
r := ChangeSetResolver{
392391
changeset: c,
393392
g: &dag.AcyclicGraph{},
394-
l: defaultLogger,
395393
}
396394

397-
return r.Apply()
395+
return r.Apply(loggingContext)
398396
}
399397

400-
func (c *ChangeSet) applyChange(change *FileChange) error {
401-
switch change.Action() {
398+
func (c *ChangeSet) applyChange(change *FileChange, loggingContext *zerolog.Context) error {
399+
action := change.Action(loggingContext)
400+
401+
switch action {
402402
case FileChangeResolvedActionWriteFile:
403403
return os.WriteFile(change.Path, change.ExpectedContent, 0644)
404404
case FileChangeResolvedActionUpdateFile:
@@ -413,7 +413,7 @@ func (c *ChangeSet) applyChange(change *FileChange) error {
413413
}
414414
return os.Symlink(string(change.ExpectedContent), change.Path)
415415
case FileChangeResolvedActionReorderSymlinks:
416-
return recreateSymlinks(change, nil)
416+
return recreateSymlinks(change, loggingContext)
417417
case FileChangeResolvedActionCreateDirectory:
418418
return os.MkdirAll(change.Path, 0755)
419419
case FileChangeResolvedActionRemove:
@@ -427,10 +427,10 @@ func (c *ChangeSet) applyChange(change *FileChange) error {
427427
case FileChangeResolvedActionDoNothing:
428428
return nil
429429
default:
430-
return fmt.Errorf("unknown action: %d", change.Action())
430+
return fmt.Errorf("unknown action: %d", action)
431431
}
432432
}
433433

434-
func (c *ChangeSet) Apply() error {
435-
return c.ApplyChanges()
434+
func (c *ChangeSet) Apply(loggingContext *zerolog.Context) error {
435+
return c.ApplyChanges(loggingContext)
436436
}

internal/usbgadget/changeset_arm_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,20 +75,20 @@ var oldAbsoluteMouseCombinedReportDesc = []byte{
7575

7676
func TestUsbGadgetInit(t *testing.T) {
7777
assert := assert.New(t)
78-
usbGadget = NewUsbGadget(usbGadgetName, usbDevices, usbConfig, nil)
78+
usbGadget = NewUsbGadget(usbGadgetName, usbDevices, usbConfig)
7979

8080
assert.NotNil(usbGadget)
8181
}
8282

8383
func TestUsbGadgetStrictModeInitFail(t *testing.T) {
8484
usbConfig.strictMode = true
85-
u := NewUsbGadget("test", usbDevices, usbConfig, nil)
85+
u := NewUsbGadget("test", usbDevices, usbConfig)
8686
assert.Nil(t, u, "should be nil")
8787
}
8888

8989
func TestUsbGadgetUDCNotBoundAfterReportDescrChanged(t *testing.T) {
9090
assert := assert.New(t)
91-
usbGadget = NewUsbGadget(usbGadgetName, usbDevices, usbConfig, nil)
91+
usbGadget = NewUsbGadget(usbGadgetName, usbDevices, usbConfig)
9292
assert.NotNil(usbGadget)
9393

9494
// release the usb gadget and create a new one
@@ -100,7 +100,7 @@ func TestUsbGadgetUDCNotBoundAfterReportDescrChanged(t *testing.T) {
100100
oldAbsoluteMouseConfig.reportDesc = oldAbsoluteMouseCombinedReportDesc
101101
altGadgetConfig["absolute_mouse"] = oldAbsoluteMouseConfig
102102

103-
usbGadget = newUsbGadget(usbGadgetName, altGadgetConfig, usbDevices, usbConfig, nil)
103+
usbGadget = newUsbGadget(usbGadgetName, altGadgetConfig, usbDevices, usbConfig)
104104
assert.NotNil(usbGadget)
105105

106106
udcs := getUdcs()

0 commit comments

Comments
 (0)