diff --git a/lib/log/context.go b/lib/log/context.go
new file mode 100644
index 0000000000000000000000000000000000000000..b40fa839191ad36e014f8b7907bc3d06b13cfb5e
--- /dev/null
+++ b/lib/log/context.go
@@ -0,0 +1,18 @@
+package log
+
+import "context"
+
+type loggerContextKeyType int
+
+const loggerContextKey loggerContextKeyType = 0
+
+func WithLogger(ctx context.Context, logger RawLogger) context.Context {
+	return context.WithValue(ctx, loggerContextKey, logger)
+}
+
+func FromContext(ctx context.Context) *Logger {
+	if logger, ok := ctx.Value(loggerContextKey).(RawLogger); ok {
+		return &Logger{logger}
+	}
+	return DefaultLogger
+}