You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/06/22 09:25:04 UTC

[plc4x] branch develop updated: fix(plc4go): fall back to global logger if no logger is supplied

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new c970c27392 fix(plc4go): fall back to global logger if no logger is supplied
c970c27392 is described below

commit c970c2739234be7142d532f218d50ca9881b2966
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jun 22 11:24:57 2023 +0200

    fix(plc4go): fall back to global logger if no logger is supplied
---
 plc4go/internal/ads/Connection.go                     |  2 +-
 plc4go/internal/ads/Discoverer.go                     |  2 +-
 plc4go/internal/ads/DiscoveryMessageCodec.go          |  2 +-
 plc4go/internal/ads/Driver.go                         |  2 +-
 plc4go/internal/ads/MessageCodec.go                   |  2 +-
 plc4go/internal/ads/model/AdsSubscriptionHandle.go    |  2 +-
 plc4go/internal/bacnetip/Connection.go                |  2 +-
 plc4go/internal/bacnetip/Driver.go                    |  2 +-
 plc4go/internal/bacnetip/Reader.go                    |  2 +-
 plc4go/internal/bacnetip/Subscriber.go                |  2 +-
 plc4go/internal/cbus/Browser.go                       |  2 +-
 plc4go/internal/cbus/Connection.go                    |  2 +-
 plc4go/internal/cbus/Connection_test.go               |  5 ++++-
 plc4go/internal/cbus/Discoverer.go                    |  2 +-
 plc4go/internal/cbus/Driver.go                        |  2 +-
 plc4go/internal/cbus/MessageCodec.go                  |  2 +-
 plc4go/internal/cbus/Reader.go                        |  2 +-
 plc4go/internal/cbus/Subscriber.go                    |  2 +-
 plc4go/internal/cbus/Subscriber_test.go               |  2 ++
 plc4go/internal/cbus/ValueHandler_test.go             |  3 +++
 plc4go/internal/cbus/Writer.go                        |  2 +-
 plc4go/internal/cbus/Writer_test.go                   |  2 ++
 plc4go/internal/eip/Connection.go                     |  2 +-
 plc4go/internal/eip/Driver.go                         |  2 +-
 plc4go/internal/eip/MessageCodec.go                   |  2 +-
 plc4go/internal/eip/Reader.go                         |  2 +-
 plc4go/internal/eip/Writer.go                         |  2 +-
 plc4go/internal/knxnetip/Browser.go                   |  2 +-
 plc4go/internal/knxnetip/Connection.go                |  2 +-
 plc4go/internal/knxnetip/Discoverer.go                |  2 +-
 plc4go/internal/knxnetip/Driver.go                    |  2 +-
 plc4go/internal/knxnetip/MessageCodec.go              |  2 +-
 plc4go/internal/knxnetip/Reader.go                    |  2 +-
 plc4go/internal/knxnetip/Subscriber.go                |  2 +-
 plc4go/internal/knxnetip/SubscriptionEvent.go         |  2 +-
 plc4go/internal/modbus/AsciiDriver.go                 |  2 +-
 plc4go/internal/modbus/Connection.go                  |  2 +-
 plc4go/internal/modbus/MessageCodec.go                |  2 +-
 plc4go/internal/modbus/Reader.go                      |  2 +-
 plc4go/internal/modbus/RtuDriver.go                   |  2 +-
 plc4go/internal/modbus/Tag.go                         |  2 +-
 plc4go/internal/modbus/TagHandler.go                  |  2 +-
 plc4go/internal/modbus/TcpDriver.go                   |  2 +-
 plc4go/internal/modbus/Writer.go                      |  2 +-
 plc4go/internal/s7/Connection.go                      |  2 +-
 plc4go/internal/s7/Driver.go                          |  2 +-
 plc4go/internal/s7/MessageCodec.go                    |  2 +-
 plc4go/internal/s7/Reader.go                          |  2 +-
 plc4go/internal/s7/TagHandler.go                      |  2 +-
 plc4go/internal/s7/Writer.go                          |  2 +-
 plc4go/internal/simulated/Connection.go               |  2 +-
 plc4go/internal/simulated/Device.go                   |  2 +-
 plc4go/internal/simulated/Device_test.go              |  2 ++
 plc4go/internal/simulated/Driver.go                   |  2 +-
 plc4go/internal/simulated/Reader.go                   |  2 +-
 plc4go/internal/simulated/Writer.go                   |  2 +-
 plc4go/pkg/api/driverManager.go                       |  2 +-
 plc4go/spi/default/DefaultBrowser.go                  |  2 +-
 plc4go/spi/default/DefaultBrowser_test.go             |  5 ++++-
 plc4go/spi/default/DefaultCodec.go                    |  2 +-
 plc4go/spi/default/DefaultCodec_test.go               |  4 ++++
 plc4go/spi/default/DefaultConnection.go               |  2 +-
 plc4go/spi/default/DefaultConnection_test.go          |  9 ++++++++-
 .../spi/interceptors/SingleItemRequestInterceptor.go  |  2 +-
 .../interceptors/SingleItemRequestInterceptor_test.go |  5 ++++-
 plc4go/spi/model/DefaultPlcSubscriptionEvent.go       |  2 +-
 plc4go/spi/model/DefaultPlcSubscriptionEvent_test.go  |  6 +++++-
 plc4go/spi/model/DefaultPlcSubscriptionResponse.go    |  2 +-
 plc4go/spi/options/Option.go                          | 14 +++++++++++++-
 plc4go/spi/pool/WorkerPool.go                         |  4 ++--
 plc4go/spi/tracer/Tracer.go                           |  2 +-
 plc4go/spi/tracer/Tracer_test.go                      |  2 ++
 plc4go/spi/transactions/RequestTransactionManager.go  |  2 +-
 .../transactions/RequestTransactionManager_test.go    |  3 +++
 plc4go/spi/transports/pcap/Transport.go               |  2 +-
 plc4go/spi/transports/pcap/TransportInstance.go       |  2 +-
 plc4go/spi/transports/pcap/TransportInstance_test.go  |  5 ++++-
 plc4go/spi/transports/pcap/Transport_test.go          | 10 ++++++++--
 plc4go/spi/transports/serial/Transport.go             |  2 +-
 plc4go/spi/transports/serial/TransportInstance.go     |  2 +-
 plc4go/spi/transports/serial/Transport_test.go        |  5 ++++-
 plc4go/spi/transports/tcp/Transport.go                |  2 +-
 plc4go/spi/transports/tcp/TransportInstance.go        |  2 +-
 plc4go/spi/transports/tcp/TransportInstance_test.go   |  5 ++++-
 plc4go/spi/transports/tcp/Transport_test.go           | 14 ++++++++++++--
 plc4go/spi/transports/test/Transport.go               |  2 +-
 plc4go/spi/transports/test/TransportInstance.go       |  2 +-
 plc4go/spi/transports/test/TransportInstance_test.go  |  2 ++
 plc4go/spi/transports/test/Transport_test.go          |  4 ++++
 plc4go/spi/transports/udp/Transport.go                |  2 +-
 plc4go/spi/transports/udp/TransportInstance.go        |  2 +-
 plc4go/spi/transports/udp/TransportInstance_test.go   |  5 ++++-
 plc4go/spi/transports/udp/Transport_test.go           | 19 ++++++++++++++++---
 .../utils/DefaultBufferedTransportInstance.go         |  2 +-
 .../utils/DefaultBufferedTransportInstance_test.go    |  5 ++++-
 plc4go/spi/values/PlcValueHandler.go                  |  2 +-
 96 files changed, 192 insertions(+), 92 deletions(-)

diff --git a/plc4go/internal/ads/Connection.go b/plc4go/internal/ads/Connection.go
index 203fee936c..ffe40ada06 100644
--- a/plc4go/internal/ads/Connection.go
+++ b/plc4go/internal/ads/Connection.go
@@ -66,7 +66,7 @@ func NewConnection(messageCodec spi.MessageCodec, configuration model.Configurat
 		return nil, err
 	}
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		messageCodec:   messageCodec,
 		configuration:  configuration,
diff --git a/plc4go/internal/ads/Discoverer.go b/plc4go/internal/ads/Discoverer.go
index 406aaf7d0c..7e8eec42ca 100644
--- a/plc4go/internal/ads/Discoverer.go
+++ b/plc4go/internal/ads/Discoverer.go
@@ -54,7 +54,7 @@ type Discoverer struct {
 
 func NewDiscoverer(_options ...options.WithOption) *Discoverer {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Discoverer{
 		passLogToModel: passLoggerToModel,
 		log:            customLogger,
diff --git a/plc4go/internal/ads/DiscoveryMessageCodec.go b/plc4go/internal/ads/DiscoveryMessageCodec.go
index 7082adb0e5..f8a0655518 100644
--- a/plc4go/internal/ads/DiscoveryMessageCodec.go
+++ b/plc4go/internal/ads/DiscoveryMessageCodec.go
@@ -40,7 +40,7 @@ type DiscoveryMessageCodec struct {
 
 func NewDiscoveryMessageCodec(transportInstance transports.TransportInstance, _options ...options.WithOption) *DiscoveryMessageCodec {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	codec := &DiscoveryMessageCodec{
 		passLogToModel: passLoggerToModel,
 		log:            customLogger,
diff --git a/plc4go/internal/ads/Driver.go b/plc4go/internal/ads/Driver.go
index fccaeae999..c6a515c8f4 100644
--- a/plc4go/internal/ads/Driver.go
+++ b/plc4go/internal/ads/Driver.go
@@ -42,7 +42,7 @@ type Driver struct {
 }
 
 func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &Driver{
 		log: customLogger,
 	}
diff --git a/plc4go/internal/ads/MessageCodec.go b/plc4go/internal/ads/MessageCodec.go
index 4a7cb122c7..e3392a9ab6 100644
--- a/plc4go/internal/ads/MessageCodec.go
+++ b/plc4go/internal/ads/MessageCodec.go
@@ -41,7 +41,7 @@ type MessageCodec struct {
 }
 
 func NewMessageCodec(transportInstance transports.TransportInstance, _options ...options.WithOption) *MessageCodec {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	codec := &MessageCodec{
 		log: customLogger,
 	}
diff --git a/plc4go/internal/ads/model/AdsSubscriptionHandle.go b/plc4go/internal/ads/model/AdsSubscriptionHandle.go
index ffcfb0345e..59ba802ba6 100644
--- a/plc4go/internal/ads/model/AdsSubscriptionHandle.go
+++ b/plc4go/internal/ads/model/AdsSubscriptionHandle.go
@@ -40,7 +40,7 @@ type AdsSubscriptionHandle struct {
 }
 
 func NewAdsSubscriptionHandle(subscriber spi.PlcSubscriber, tagName string, directTag DirectPlcTag, _options ...options.WithOption) *AdsSubscriptionHandle {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &AdsSubscriptionHandle{
 		subscriber: subscriber,
 		tagName:    tagName,
diff --git a/plc4go/internal/bacnetip/Connection.go b/plc4go/internal/bacnetip/Connection.go
index 4b9c313a33..0192bfb1b6 100644
--- a/plc4go/internal/bacnetip/Connection.go
+++ b/plc4go/internal/bacnetip/Connection.go
@@ -54,7 +54,7 @@ type Connection struct {
 }
 
 func NewConnection(messageCodec spi.MessageCodec, tagHandler spi.PlcTagHandler, tm transactions.RequestTransactionManager, connectionOptions map[string][]string, _options ...options.WithOption) *Connection {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		invokeIdGenerator: InvokeIdGenerator{currentInvokeId: 0},
 		messageCodec:      messageCodec,
diff --git a/plc4go/internal/bacnetip/Driver.go b/plc4go/internal/bacnetip/Driver.go
index f9c439aadd..af9ef8b19d 100644
--- a/plc4go/internal/bacnetip/Driver.go
+++ b/plc4go/internal/bacnetip/Driver.go
@@ -52,7 +52,7 @@ type Driver struct {
 }
 
 func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &Driver{
 		applicationManager: ApplicationManager{
 			applications: map[string]*ApplicationLayerMessageCodec{},
diff --git a/plc4go/internal/bacnetip/Reader.go b/plc4go/internal/bacnetip/Reader.go
index dbecc7c036..8ef0bc99bb 100644
--- a/plc4go/internal/bacnetip/Reader.go
+++ b/plc4go/internal/bacnetip/Reader.go
@@ -49,7 +49,7 @@ type Reader struct {
 }
 
 func NewReader(invokeIdGenerator *InvokeIdGenerator, messageCodec spi.MessageCodec, tm transactions.RequestTransactionManager, _options ...options.WithOption) *Reader {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Reader{
 		invokeIdGenerator: invokeIdGenerator,
 		messageCodec:      messageCodec,
diff --git a/plc4go/internal/bacnetip/Subscriber.go b/plc4go/internal/bacnetip/Subscriber.go
index 46e65aa48e..856e98cca0 100644
--- a/plc4go/internal/bacnetip/Subscriber.go
+++ b/plc4go/internal/bacnetip/Subscriber.go
@@ -37,7 +37,7 @@ type Subscriber struct {
 }
 
 func NewSubscriber(connection *Connection, _options ...options.WithOption) *Subscriber {
-	logger, _ := options.ExtractCustomLogger(_options...)
+	logger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Subscriber{
 		connection: connection,
 		consumers:  make(map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer),
diff --git a/plc4go/internal/cbus/Browser.go b/plc4go/internal/cbus/Browser.go
index 0230aaff65..6d7170f9cb 100644
--- a/plc4go/internal/cbus/Browser.go
+++ b/plc4go/internal/cbus/Browser.go
@@ -47,7 +47,7 @@ type Browser struct {
 }
 
 func NewBrowser(connection plc4go.PlcConnection, _options ...options.WithOption) *Browser {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	browser := &Browser{
 		connection:      connection,
 		sequenceCounter: 0,
diff --git a/plc4go/internal/cbus/Connection.go b/plc4go/internal/cbus/Connection.go
index 2958ebb8f6..8b2322322b 100644
--- a/plc4go/internal/cbus/Connection.go
+++ b/plc4go/internal/cbus/Connection.go
@@ -78,7 +78,7 @@ type Connection struct {
 }
 
 func NewConnection(messageCodec *MessageCodec, configuration Configuration, driverContext DriverContext, tagHandler spi.PlcTagHandler, tm transactions.RequestTransactionManager, connectionOptions map[string][]string, _options ...options.WithOption) *Connection {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		alphaGenerator: AlphaGenerator{currentAlpha: 'g'},
 		messageCodec:   messageCodec,
diff --git a/plc4go/internal/cbus/Connection_test.go b/plc4go/internal/cbus/Connection_test.go
index 81b6561f89..1d832c140a 100644
--- a/plc4go/internal/cbus/Connection_test.go
+++ b/plc4go/internal/cbus/Connection_test.go
@@ -1827,6 +1827,7 @@ func TestNewConnection(t *testing.T) {
 		tagHandler    spi.PlcTagHandler
 		tm            transactions.RequestTransactionManager
 		options       map[string][]string
+		_options      []options.WithOption
 	}
 	tests := []struct {
 		name       string
@@ -1845,6 +1846,8 @@ func TestNewConnection(t *testing.T) {
 					assert.Error(t, codec.Disconnect())
 				})
 				args.messageCodec = codec
+
+				args._options = _options
 			},
 			wantAssert: func(t *testing.T, connection *Connection) bool {
 				return assert.NotNil(t, connection)
@@ -1856,7 +1859,7 @@ func TestNewConnection(t *testing.T) {
 			if tt.setup != nil {
 				tt.setup(t, &tt.args)
 			}
-			connection := NewConnection(tt.args.messageCodec, tt.args.configuration, tt.args.driverContext, tt.args.tagHandler, tt.args.tm, tt.args.options)
+			connection := NewConnection(tt.args.messageCodec, tt.args.configuration, tt.args.driverContext, tt.args.tagHandler, tt.args.tm, tt.args.options, tt.args._options...)
 			t.Cleanup(func() {
 				timer := time.NewTimer(1 * time.Second)
 				t.Cleanup(func() {
diff --git a/plc4go/internal/cbus/Discoverer.go b/plc4go/internal/cbus/Discoverer.go
index 58fe1346b5..6deeda3c77 100644
--- a/plc4go/internal/cbus/Discoverer.go
+++ b/plc4go/internal/cbus/Discoverer.go
@@ -51,7 +51,7 @@ type Discoverer struct {
 }
 
 func NewDiscoverer(_options ...options.WithOption) *Discoverer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Discoverer{
 		// TODO: maybe a dynamic executor would be better to not waste cycles when not in use
 		transportInstanceCreationQueue: pool.NewFixedSizeExecutor(50, 100, _options...),
diff --git a/plc4go/internal/cbus/Driver.go b/plc4go/internal/cbus/Driver.go
index 0d95ba6822..7068551722 100644
--- a/plc4go/internal/cbus/Driver.go
+++ b/plc4go/internal/cbus/Driver.go
@@ -45,7 +45,7 @@ type Driver struct {
 }
 
 func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &Driver{
 		tm:                      transactions.NewRequestTransactionManager(1, _options...),
 		awaitSetupComplete:      true,
diff --git a/plc4go/internal/cbus/MessageCodec.go b/plc4go/internal/cbus/MessageCodec.go
index 070e3b7355..587141545e 100644
--- a/plc4go/internal/cbus/MessageCodec.go
+++ b/plc4go/internal/cbus/MessageCodec.go
@@ -58,7 +58,7 @@ type MessageCodec struct {
 
 func NewMessageCodec(transportInstance transports.TransportInstance, _options ...options.WithOption) *MessageCodec {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	codec := &MessageCodec{
 		requestContext: readWriteModel.NewRequestContext(false),
 		cbusOptions:    readWriteModel.NewCBusOptions(false, false, false, false, false, false, false, false, false),
diff --git a/plc4go/internal/cbus/Reader.go b/plc4go/internal/cbus/Reader.go
index d566a5cd24..4de47034a9 100644
--- a/plc4go/internal/cbus/Reader.go
+++ b/plc4go/internal/cbus/Reader.go
@@ -46,7 +46,7 @@ type Reader struct {
 }
 
 func NewReader(tpduGenerator *AlphaGenerator, messageCodec *MessageCodec, tm transactions.RequestTransactionManager, _options ...options.WithOption) *Reader {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Reader{
 		alphaGenerator: tpduGenerator,
 		messageCodec:   messageCodec,
diff --git a/plc4go/internal/cbus/Subscriber.go b/plc4go/internal/cbus/Subscriber.go
index ee4a1a04c6..68d4d40d7b 100644
--- a/plc4go/internal/cbus/Subscriber.go
+++ b/plc4go/internal/cbus/Subscriber.go
@@ -48,7 +48,7 @@ type Subscriber struct {
 }
 
 func NewSubscriber(addSubscriber func(subscriber *Subscriber), _options ...options.WithOption) *Subscriber {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Subscriber{
 		addSubscriber: addSubscriber,
 		consumers:     make(map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer),
diff --git a/plc4go/internal/cbus/Subscriber_test.go b/plc4go/internal/cbus/Subscriber_test.go
index b36f7ae481..75c64df964 100644
--- a/plc4go/internal/cbus/Subscriber_test.go
+++ b/plc4go/internal/cbus/Subscriber_test.go
@@ -21,6 +21,7 @@ package cbus
 
 import (
 	"context"
+	"github.com/rs/zerolog/log"
 	"testing"
 	"time"
 
@@ -44,6 +45,7 @@ func TestNewSubscriber(t *testing.T) {
 			name: "simple",
 			want: &Subscriber{
 				consumers: map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer{},
+				log:       log.Logger,
 			},
 		},
 	}
diff --git a/plc4go/internal/cbus/ValueHandler_test.go b/plc4go/internal/cbus/ValueHandler_test.go
index efd3b367f9..5daf00561d 100644
--- a/plc4go/internal/cbus/ValueHandler_test.go
+++ b/plc4go/internal/cbus/ValueHandler_test.go
@@ -37,6 +37,9 @@ func TestNewValueHandler(t *testing.T) {
 	}{
 		{
 			name: "create a new one",
+			want: ValueHandler{
+				DefaultValueHandler: spiValues.NewDefaultValueHandler(),
+			},
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/internal/cbus/Writer.go b/plc4go/internal/cbus/Writer.go
index 97ffffc469..cf00eca380 100644
--- a/plc4go/internal/cbus/Writer.go
+++ b/plc4go/internal/cbus/Writer.go
@@ -44,7 +44,7 @@ type Writer struct {
 }
 
 func NewWriter(tpduGenerator *AlphaGenerator, messageCodec *MessageCodec, tm transactions.RequestTransactionManager, _options ...options.WithOption) *Writer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Writer{
 		alphaGenerator: tpduGenerator,
 		messageCodec:   messageCodec,
diff --git a/plc4go/internal/cbus/Writer_test.go b/plc4go/internal/cbus/Writer_test.go
index db4ecca841..ef74d98b8b 100644
--- a/plc4go/internal/cbus/Writer_test.go
+++ b/plc4go/internal/cbus/Writer_test.go
@@ -25,6 +25,7 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/testutils"
 	"github.com/apache/plc4x/plc4go/spi/transactions"
 	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"strings"
 	"testing"
@@ -48,6 +49,7 @@ func TestNewWriter(t *testing.T) {
 			name: "create a new one",
 			want: func() *Writer {
 				var writer Writer
+				writer.log = log.Logger
 				return &writer
 			}(),
 		},
diff --git a/plc4go/internal/eip/Connection.go b/plc4go/internal/eip/Connection.go
index cb2055184a..11cf065eea 100644
--- a/plc4go/internal/eip/Connection.go
+++ b/plc4go/internal/eip/Connection.go
@@ -74,7 +74,7 @@ func NewConnection(
 	connectionOptions map[string][]string,
 	_options ...options.WithOption,
 ) *Connection {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		messageCodec:  messageCodec,
 		configuration: configuration,
diff --git a/plc4go/internal/eip/Driver.go b/plc4go/internal/eip/Driver.go
index 508a0c93a8..38a6f1234b 100644
--- a/plc4go/internal/eip/Driver.go
+++ b/plc4go/internal/eip/Driver.go
@@ -42,7 +42,7 @@ type Driver struct {
 }
 
 func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &Driver{
 		tm:                      transactions.NewRequestTransactionManager(1),
 		awaitSetupComplete:      true,
diff --git a/plc4go/internal/eip/MessageCodec.go b/plc4go/internal/eip/MessageCodec.go
index 2eff6ca89b..b6912be663 100644
--- a/plc4go/internal/eip/MessageCodec.go
+++ b/plc4go/internal/eip/MessageCodec.go
@@ -39,7 +39,7 @@ type MessageCodec struct {
 }
 
 func NewMessageCodec(transportInstance transports.TransportInstance, _options ...options.WithOption) *MessageCodec {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	codec := &MessageCodec{
 		log: customLogger,
 	}
diff --git a/plc4go/internal/eip/Reader.go b/plc4go/internal/eip/Reader.go
index cfb7811c07..92c4251e77 100644
--- a/plc4go/internal/eip/Reader.go
+++ b/plc4go/internal/eip/Reader.go
@@ -52,7 +52,7 @@ type Reader struct {
 }
 
 func NewReader(messageCodec spi.MessageCodec, tm transactions.RequestTransactionManager, configuration Configuration, sessionHandle *uint32, _options ...options.WithOption) *Reader {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Reader{
 		messageCodec:  messageCodec,
 		tm:            tm,
diff --git a/plc4go/internal/eip/Writer.go b/plc4go/internal/eip/Writer.go
index c899da7c86..5cc26925ec 100644
--- a/plc4go/internal/eip/Writer.go
+++ b/plc4go/internal/eip/Writer.go
@@ -49,7 +49,7 @@ type Writer struct {
 }
 
 func NewWriter(messageCodec spi.MessageCodec, tm transactions.RequestTransactionManager, configuration Configuration, sessionHandle *uint32, senderContext *[]uint8, _options ...options.WithOption) Writer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return Writer{
 		messageCodec:  messageCodec,
 		tm:            tm,
diff --git a/plc4go/internal/knxnetip/Browser.go b/plc4go/internal/knxnetip/Browser.go
index e9ec18d2c2..68d9db615e 100644
--- a/plc4go/internal/knxnetip/Browser.go
+++ b/plc4go/internal/knxnetip/Browser.go
@@ -52,7 +52,7 @@ type Browser struct {
 
 func NewBrowser(connection *Connection, messageCodec spi.MessageCodec, _options ...options.WithOption) *Browser {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	extractCustomLogger, _ := options.ExtractCustomLogger(_options...)
+	extractCustomLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	browser := Browser{
 		connection:      connection,
 		messageCodec:    messageCodec,
diff --git a/plc4go/internal/knxnetip/Connection.go b/plc4go/internal/knxnetip/Connection.go
index ddef8aacfc..aaa4a8632a 100644
--- a/plc4go/internal/knxnetip/Connection.go
+++ b/plc4go/internal/knxnetip/Connection.go
@@ -173,7 +173,7 @@ type InternalResult struct {
 
 func NewConnection(transportInstance transports.TransportInstance, connectionOptions map[string][]string, tagHandler spi.PlcTagHandler, _options ...options.WithOption) *Connection {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		options:      connectionOptions,
 		tagHandler:   tagHandler,
diff --git a/plc4go/internal/knxnetip/Discoverer.go b/plc4go/internal/knxnetip/Discoverer.go
index e63c83939a..a67350ad6a 100644
--- a/plc4go/internal/knxnetip/Discoverer.go
+++ b/plc4go/internal/knxnetip/Discoverer.go
@@ -50,7 +50,7 @@ type Discoverer struct {
 }
 
 func NewDiscoverer(_options ...options.WithOption) *Discoverer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Discoverer{
 		// TODO: maybe a dynamic executor would be better to not waste cycles when not in use
 		transportInstanceCreationQueue: pool.NewFixedSizeExecutor(50, 100, _options...),
diff --git a/plc4go/internal/knxnetip/Driver.go b/plc4go/internal/knxnetip/Driver.go
index 5fa947bf0f..6d04554fea 100644
--- a/plc4go/internal/knxnetip/Driver.go
+++ b/plc4go/internal/knxnetip/Driver.go
@@ -39,7 +39,7 @@ type Driver struct {
 }
 
 func NewDriver(_options ...options.WithOption) *Driver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &Driver{
 		log: customLogger,
 	}
diff --git a/plc4go/internal/knxnetip/MessageCodec.go b/plc4go/internal/knxnetip/MessageCodec.go
index 29a7500f37..7d8554b6e4 100644
--- a/plc4go/internal/knxnetip/MessageCodec.go
+++ b/plc4go/internal/knxnetip/MessageCodec.go
@@ -43,7 +43,7 @@ type MessageCodec struct {
 
 func NewMessageCodec(transportInstance transports.TransportInstance, messageInterceptor func(message spi.Message), _options ...options.WithOption) *MessageCodec {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	codec := &MessageCodec{
 		messageInterceptor: messageInterceptor,
 		passLogToModel:     passLoggerToModel,
diff --git a/plc4go/internal/knxnetip/Reader.go b/plc4go/internal/knxnetip/Reader.go
index df44ad2f5e..3c7d3d4e94 100644
--- a/plc4go/internal/knxnetip/Reader.go
+++ b/plc4go/internal/knxnetip/Reader.go
@@ -45,7 +45,7 @@ type Reader struct {
 }
 
 func NewReader(connection *Connection, _options ...options.WithOption) *Reader {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Reader{
 		connection: connection,
 		log:        customLogger,
diff --git a/plc4go/internal/knxnetip/Subscriber.go b/plc4go/internal/knxnetip/Subscriber.go
index bb86bb6deb..9b1cc36b3a 100644
--- a/plc4go/internal/knxnetip/Subscriber.go
+++ b/plc4go/internal/knxnetip/Subscriber.go
@@ -45,7 +45,7 @@ type Subscriber struct {
 
 func NewSubscriber(connection *Connection, _options ...options.WithOption) *Subscriber {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Subscriber{
 		connection:     connection,
 		consumers:      make(map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer),
diff --git a/plc4go/internal/knxnetip/SubscriptionEvent.go b/plc4go/internal/knxnetip/SubscriptionEvent.go
index c425fda7ad..cf8124b0a0 100644
--- a/plc4go/internal/knxnetip/SubscriptionEvent.go
+++ b/plc4go/internal/knxnetip/SubscriptionEvent.go
@@ -50,7 +50,7 @@ func NewSubscriptionEvent(
 	_options ...options.WithOption,
 ) SubscriptionEvent {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	subscriptionEvent := SubscriptionEvent{
 		addresses:      addresses,
 		passLogToModel: passLoggerToModel,
diff --git a/plc4go/internal/modbus/AsciiDriver.go b/plc4go/internal/modbus/AsciiDriver.go
index 00c635143b..7f20d623a0 100644
--- a/plc4go/internal/modbus/AsciiDriver.go
+++ b/plc4go/internal/modbus/AsciiDriver.go
@@ -41,7 +41,7 @@ type AsciiDriver struct {
 }
 
 func NewModbusAsciiDriver(_options ...options.WithOption) *AsciiDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &AsciiDriver{
 		log: customLogger,
 	}
diff --git a/plc4go/internal/modbus/Connection.go b/plc4go/internal/modbus/Connection.go
index 0283bd0b1e..5a57a5005c 100644
--- a/plc4go/internal/modbus/Connection.go
+++ b/plc4go/internal/modbus/Connection.go
@@ -53,7 +53,7 @@ type Connection struct {
 }
 
 func NewConnection(unitIdentifier uint8, messageCodec spi.MessageCodec, connectionOptions map[string][]string, tagHandler spi.PlcTagHandler, _options ...options.WithOption) *Connection {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		unitIdentifier: unitIdentifier,
 		messageCodec:   messageCodec,
diff --git a/plc4go/internal/modbus/MessageCodec.go b/plc4go/internal/modbus/MessageCodec.go
index d5829e6949..da9134bd9f 100644
--- a/plc4go/internal/modbus/MessageCodec.go
+++ b/plc4go/internal/modbus/MessageCodec.go
@@ -42,7 +42,7 @@ type MessageCodec struct {
 
 func NewMessageCodec(transportInstance transports.TransportInstance, _options ...options.WithOption) *MessageCodec {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	codec := &MessageCodec{
 		expectationCounter: 1,
 		passLogToModel:     passLoggerToModel,
diff --git a/plc4go/internal/modbus/Reader.go b/plc4go/internal/modbus/Reader.go
index 6442bbac40..013d4410de 100644
--- a/plc4go/internal/modbus/Reader.go
+++ b/plc4go/internal/modbus/Reader.go
@@ -48,7 +48,7 @@ type Reader struct {
 
 func NewReader(unitIdentifier uint8, messageCodec spi.MessageCodec, _options ...options.WithOption) *Reader {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Reader{
 		transactionIdentifier: 0,
 		unitIdentifier:        unitIdentifier,
diff --git a/plc4go/internal/modbus/RtuDriver.go b/plc4go/internal/modbus/RtuDriver.go
index 12d2aa1803..5b6b75c50b 100644
--- a/plc4go/internal/modbus/RtuDriver.go
+++ b/plc4go/internal/modbus/RtuDriver.go
@@ -41,7 +41,7 @@ type RtuDriver struct {
 }
 
 func NewModbusRtuDriver(_options ...options.WithOption) *RtuDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &RtuDriver{
 		log: customLogger,
 	}
diff --git a/plc4go/internal/modbus/Tag.go b/plc4go/internal/modbus/Tag.go
index a8c8efbf0c..40262ce37e 100644
--- a/plc4go/internal/modbus/Tag.go
+++ b/plc4go/internal/modbus/Tag.go
@@ -62,7 +62,7 @@ func NewModbusPlcTagFromStrings(tagType TagType, addressString string, quantityS
 	if err != nil {
 		return nil, errors.Errorf("Couldn't parse address string '%s' into an int", addressString)
 	}
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	if quantityString == "" {
 		customLogger.Debug().Msg("No quantity supplied, assuming 1")
 		quantityString = "1"
diff --git a/plc4go/internal/modbus/TagHandler.go b/plc4go/internal/modbus/TagHandler.go
index 3efb059178..459fadb9e6 100644
--- a/plc4go/internal/modbus/TagHandler.go
+++ b/plc4go/internal/modbus/TagHandler.go
@@ -66,7 +66,7 @@ type TagHandler struct {
 func NewTagHandler(_options ...options.WithOption) TagHandler {
 	generalAddressPattern := `(?P<address>\d+)(:(?P<datatype>[a-zA-Z_]+))?(\[(?P<quantity>\d+)])?$`
 	generalFixedDigitAddressPattern := `(?P<address>\d{4,5})?(:(?P<datatype>[a-zA-Z_]+))?(\[(?P<quantity>\d+)])?$`
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return TagHandler{
 		plc4xCoilPattern:               regexp.MustCompile("^coil:" + generalAddressPattern),
 		numericCoilPattern:             regexp.MustCompile("^0[xX]?" + generalFixedDigitAddressPattern),
diff --git a/plc4go/internal/modbus/TcpDriver.go b/plc4go/internal/modbus/TcpDriver.go
index 87f0a4332f..217ae4f778 100644
--- a/plc4go/internal/modbus/TcpDriver.go
+++ b/plc4go/internal/modbus/TcpDriver.go
@@ -41,7 +41,7 @@ type TcpDriver struct {
 }
 
 func NewModbusTcpDriver(_options ...options.WithOption) *TcpDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &TcpDriver{
 		log: customLogger,
 	}
diff --git a/plc4go/internal/modbus/Writer.go b/plc4go/internal/modbus/Writer.go
index 2d1cf1998a..65445885c2 100644
--- a/plc4go/internal/modbus/Writer.go
+++ b/plc4go/internal/modbus/Writer.go
@@ -44,7 +44,7 @@ type Writer struct {
 }
 
 func NewWriter(unitIdentifier uint8, messageCodec spi.MessageCodec, _options ...options.WithOption) Writer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return Writer{
 		transactionIdentifier: 0,
 		unitIdentifier:        unitIdentifier,
diff --git a/plc4go/internal/s7/Connection.go b/plc4go/internal/s7/Connection.go
index 3ba4a0b2f9..4da1c0beff 100644
--- a/plc4go/internal/s7/Connection.go
+++ b/plc4go/internal/s7/Connection.go
@@ -73,7 +73,7 @@ type Connection struct {
 }
 
 func NewConnection(messageCodec spi.MessageCodec, configuration Configuration, driverContext DriverContext, tagHandler spi.PlcTagHandler, tm transactions.RequestTransactionManager, connectionOptions map[string][]string, _options ...options.WithOption) *Connection {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		tpduGenerator: TpduGenerator{currentTpduId: 10},
 		messageCodec:  messageCodec,
diff --git a/plc4go/internal/s7/Driver.go b/plc4go/internal/s7/Driver.go
index 59d0d0fd5c..80bf8f9f49 100644
--- a/plc4go/internal/s7/Driver.go
+++ b/plc4go/internal/s7/Driver.go
@@ -42,7 +42,7 @@ type Driver struct {
 }
 
 func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &Driver{
 		tm:                      transactions.NewRequestTransactionManager(1),
 		awaitSetupComplete:      true,
diff --git a/plc4go/internal/s7/MessageCodec.go b/plc4go/internal/s7/MessageCodec.go
index cc667ed734..e3268c23d8 100644
--- a/plc4go/internal/s7/MessageCodec.go
+++ b/plc4go/internal/s7/MessageCodec.go
@@ -41,7 +41,7 @@ type MessageCodec struct {
 
 func NewMessageCodec(transportInstance transports.TransportInstance, _options ...options.WithOption) *MessageCodec {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	extractCustomLogger, _ := options.ExtractCustomLogger(_options...)
+	extractCustomLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	codec := &MessageCodec{
 		passLogToModel: passLoggerToModel,
 		log:            extractCustomLogger,
diff --git a/plc4go/internal/s7/Reader.go b/plc4go/internal/s7/Reader.go
index f173e7b271..4dd7469111 100644
--- a/plc4go/internal/s7/Reader.go
+++ b/plc4go/internal/s7/Reader.go
@@ -48,7 +48,7 @@ type Reader struct {
 
 func NewReader(tpduGenerator *TpduGenerator, messageCodec spi.MessageCodec, tm transactions.RequestTransactionManager, _options ...options.WithOption) *Reader {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Reader{
 		tpduGenerator:  tpduGenerator,
 		messageCodec:   messageCodec,
diff --git a/plc4go/internal/s7/TagHandler.go b/plc4go/internal/s7/TagHandler.go
index b854557ff3..7b7059eeb7 100644
--- a/plc4go/internal/s7/TagHandler.go
+++ b/plc4go/internal/s7/TagHandler.go
@@ -63,7 +63,7 @@ type TagHandler struct {
 
 func NewTagHandler(_options ...options.WithOption) TagHandler {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return TagHandler{
 		addressPattern: regexp.MustCompile(`^%(?P<memoryArea>.)(?P<transferSizeCode>[XBWD]?)(?P<byteOffset>\d{1,7})(.(?P<bitOffset>[0-7]))?:(?P<dataType>[a-zA-Z_]+)(\[(?P<numElements>\d+)])?`),
 		//blockNumber usually has its max hat around 64000 --> 5digits
diff --git a/plc4go/internal/s7/Writer.go b/plc4go/internal/s7/Writer.go
index 3f33e6a494..cd98bfc340 100644
--- a/plc4go/internal/s7/Writer.go
+++ b/plc4go/internal/s7/Writer.go
@@ -45,7 +45,7 @@ type Writer struct {
 }
 
 func NewWriter(tpduGenerator *TpduGenerator, messageCodec spi.MessageCodec, tm transactions.RequestTransactionManager, _options ...options.WithOption) Writer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return Writer{
 		tpduGenerator: tpduGenerator,
 		messageCodec:  messageCodec,
diff --git a/plc4go/internal/simulated/Connection.go b/plc4go/internal/simulated/Connection.go
index a31cc7b055..2ae9046992 100644
--- a/plc4go/internal/simulated/Connection.go
+++ b/plc4go/internal/simulated/Connection.go
@@ -51,7 +51,7 @@ type Connection struct {
 }
 
 func NewConnection(device *Device, tagHandler spi.PlcTagHandler, valueHandler spi.PlcValueHandler, connectionOptions map[string][]string, _options ...options.WithOption) *Connection {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	connection := &Connection{
 		device:       device,
 		tagHandler:   tagHandler,
diff --git a/plc4go/internal/simulated/Device.go b/plc4go/internal/simulated/Device.go
index 7a6fc7b057..57f8da5ce2 100644
--- a/plc4go/internal/simulated/Device.go
+++ b/plc4go/internal/simulated/Device.go
@@ -39,7 +39,7 @@ type Device struct {
 
 func NewDevice(name string, _options ...options.WithOption) *Device {
 	passLoggerToModel, _ := options.ExtractPassLoggerToModel(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Device{
 		Name:           name,
 		State:          make(map[simulatedTag]*apiValues.PlcValue),
diff --git a/plc4go/internal/simulated/Device_test.go b/plc4go/internal/simulated/Device_test.go
index 17a0c80e34..cc306337de 100644
--- a/plc4go/internal/simulated/Device_test.go
+++ b/plc4go/internal/simulated/Device_test.go
@@ -20,6 +20,7 @@
 package simulated
 
 import (
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"testing"
 
@@ -279,6 +280,7 @@ func TestNewDevice(t *testing.T) {
 			want: &Device{
 				Name:  "",
 				State: make(map[simulatedTag]*apiValues.PlcValue),
+				log:   log.Logger,
 			},
 		},
 	}
diff --git a/plc4go/internal/simulated/Driver.go b/plc4go/internal/simulated/Driver.go
index cf87fea465..aac5c17c6d 100644
--- a/plc4go/internal/simulated/Driver.go
+++ b/plc4go/internal/simulated/Driver.go
@@ -38,7 +38,7 @@ type Driver struct {
 }
 
 func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	driver := &Driver{
 		valueHandler: NewValueHandler(),
 
diff --git a/plc4go/internal/simulated/Reader.go b/plc4go/internal/simulated/Reader.go
index 8a47066b84..ed6c019e06 100644
--- a/plc4go/internal/simulated/Reader.go
+++ b/plc4go/internal/simulated/Reader.go
@@ -43,7 +43,7 @@ type Reader struct {
 }
 
 func NewReader(device *Device, readerOptions map[string][]string, tracer tracer.Tracer, _options ...options.WithOption) *Reader {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Reader{
 		device:  device,
 		options: readerOptions,
diff --git a/plc4go/internal/simulated/Writer.go b/plc4go/internal/simulated/Writer.go
index b2603c0d2c..313d24717e 100644
--- a/plc4go/internal/simulated/Writer.go
+++ b/plc4go/internal/simulated/Writer.go
@@ -42,7 +42,7 @@ type Writer struct {
 }
 
 func NewWriter(device *Device, writerOptions map[string][]string, tracer tracer.Tracer, _options ...options.WithOption) *Writer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Writer{
 		device:  device,
 		options: writerOptions,
diff --git a/plc4go/pkg/api/driverManager.go b/plc4go/pkg/api/driverManager.go
index 3ff8aa76cf..b7bffe975f 100644
--- a/plc4go/pkg/api/driverManager.go
+++ b/plc4go/pkg/api/driverManager.go
@@ -55,7 +55,7 @@ type PlcDriverManager interface {
 }
 
 func NewPlcDriverManager(_options ...config.WithOption) PlcDriverManager {
-	localLog, _ := options.ExtractCustomLogger(converter.WithOptionToInternal(_options...)...)
+	localLog := options.ExtractCustomLoggerOrDefaultToGlobal(converter.WithOptionToInternal(_options...)...)
 	localLog.Trace().Msg("Creating plc driver manager")
 	return &plcDriverManger{
 		drivers:    map[string]PlcDriver{},
diff --git a/plc4go/spi/default/DefaultBrowser.go b/plc4go/spi/default/DefaultBrowser.go
index fbd7779154..ade4e6a2b6 100644
--- a/plc4go/spi/default/DefaultBrowser.go
+++ b/plc4go/spi/default/DefaultBrowser.go
@@ -39,7 +39,7 @@ type DefaultBrowser interface {
 }
 
 func NewDefaultBrowser(defaultBrowserRequirements DefaultBrowserRequirements, _options ...options.WithOption) DefaultBrowser {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &defaultBrowser{
 		DefaultBrowserRequirements: defaultBrowserRequirements,
 
diff --git a/plc4go/spi/default/DefaultBrowser_test.go b/plc4go/spi/default/DefaultBrowser_test.go
index 3b21df19b6..12e72d14b0 100644
--- a/plc4go/spi/default/DefaultBrowser_test.go
+++ b/plc4go/spi/default/DefaultBrowser_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	spiModel "github.com/apache/plc4x/plc4go/spi/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
 	"testing"
@@ -42,7 +43,9 @@ func TestNewDefaultBrowser(t *testing.T) {
 	}{
 		{
 			name: "just create it",
-			want: &defaultBrowser{},
+			want: &defaultBrowser{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/spi/default/DefaultCodec.go b/plc4go/spi/default/DefaultCodec.go
index bfaa0ebc82..875302e2d1 100644
--- a/plc4go/spi/default/DefaultCodec.go
+++ b/plc4go/spi/default/DefaultCodec.go
@@ -108,7 +108,7 @@ func buildDefaultCodec(defaultCodecRequirements DefaultCodecRequirements, transp
 		receiveTimeout = 10 * time.Second
 	}
 	traceDefaultMessageCodecWorker, _ := options.ExtractTraceDefaultMessageCodecWorker(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &defaultCodec{
 		DefaultCodecRequirements:       defaultCodecRequirements,
 		transportInstance:              transportInstance,
diff --git a/plc4go/spi/default/DefaultCodec_test.go b/plc4go/spi/default/DefaultCodec_test.go
index f14ce3236d..d504480775 100644
--- a/plc4go/spi/default/DefaultCodec_test.go
+++ b/plc4go/spi/default/DefaultCodec_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
+	"github.com/rs/zerolog/log"
 	"testing"
 	"time"
 
@@ -251,6 +252,7 @@ func TestNewDefaultCodec(t *testing.T) {
 			want: &defaultCodec{
 				expectations:   []spi.Expectation{},
 				receiveTimeout: 10 * time.Second,
+				log:            log.Logger,
 			},
 		},
 	}
@@ -301,6 +303,7 @@ func Test_buildDefaultCodec(t *testing.T) {
 			want: &defaultCodec{
 				expectations:   []spi.Expectation{},
 				receiveTimeout: 10 * time.Second,
+				log:            log.Logger,
 			},
 		},
 		{
@@ -313,6 +316,7 @@ func Test_buildDefaultCodec(t *testing.T) {
 			want: &defaultCodec{
 				expectations:   []spi.Expectation{},
 				receiveTimeout: 10 * time.Second,
+				log:            log.Logger,
 			},
 		},
 	}
diff --git a/plc4go/spi/default/DefaultConnection.go b/plc4go/spi/default/DefaultConnection.go
index 6fe5bef8ea..7bd9b7af92 100644
--- a/plc4go/spi/default/DefaultConnection.go
+++ b/plc4go/spi/default/DefaultConnection.go
@@ -177,7 +177,7 @@ func buildDefaultConnection(requirements DefaultConnectionRequirements, _options
 		}
 	}
 
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &defaultConnection{
 		DefaultConnectionRequirements: requirements,
 		defaultTtl:                    defaultTtl,
diff --git a/plc4go/spi/default/DefaultConnection_test.go b/plc4go/spi/default/DefaultConnection_test.go
index 7dd1d3b646..a10056b918 100644
--- a/plc4go/spi/default/DefaultConnection_test.go
+++ b/plc4go/spi/default/DefaultConnection_test.go
@@ -22,6 +22,7 @@ package _default
 import (
 	"context"
 	"fmt"
+	"github.com/rs/zerolog/log"
 	"testing"
 	"time"
 
@@ -207,6 +208,7 @@ func TestNewDefaultConnection(t *testing.T) {
 			name: "just create it",
 			want: &defaultConnection{
 				defaultTtl: 10 * time.Second,
+				log:        log.Logger,
 			},
 		},
 	}
@@ -382,6 +384,7 @@ func Test_buildDefaultConnection(t *testing.T) {
 			name: "build it",
 			want: &defaultConnection{
 				defaultTtl: 10 * time.Second,
+				log:        log.Logger,
 			},
 		},
 		{
@@ -391,7 +394,9 @@ func Test_buildDefaultConnection(t *testing.T) {
 					withDefaultTtl{},
 				},
 			},
-			want: &defaultConnection{},
+			want: &defaultConnection{
+				log: log.Logger,
+			},
 		},
 		{
 			name: "build it with plc tag handler",
@@ -402,6 +407,7 @@ func Test_buildDefaultConnection(t *testing.T) {
 			},
 			want: &defaultConnection{
 				defaultTtl: 10 * time.Second,
+				log:        log.Logger,
 			},
 		},
 		{
@@ -413,6 +419,7 @@ func Test_buildDefaultConnection(t *testing.T) {
 			},
 			want: &defaultConnection{
 				defaultTtl: 10 * time.Second,
+				log:        log.Logger,
 			},
 		},
 	}
diff --git a/plc4go/spi/interceptors/SingleItemRequestInterceptor.go b/plc4go/spi/interceptors/SingleItemRequestInterceptor.go
index d03a65f24c..894ec744cd 100644
--- a/plc4go/spi/interceptors/SingleItemRequestInterceptor.go
+++ b/plc4go/spi/interceptors/SingleItemRequestInterceptor.go
@@ -80,7 +80,7 @@ type SingleItemRequestInterceptor struct {
 }
 
 func NewSingleItemRequestInterceptor(readRequestFactory readRequestFactory, writeRequestFactory writeRequestFactory, readResponseFactory readResponseFactory, writeResponseFactory writeResponseFactory, _options ...options.WithOption) SingleItemRequestInterceptor {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return SingleItemRequestInterceptor{
 		readRequestFactory:   readRequestFactory,
 		writeRequestFactory:  writeRequestFactory,
diff --git a/plc4go/spi/interceptors/SingleItemRequestInterceptor_test.go b/plc4go/spi/interceptors/SingleItemRequestInterceptor_test.go
index 0b920d070b..49d61b12f5 100644
--- a/plc4go/spi/interceptors/SingleItemRequestInterceptor_test.go
+++ b/plc4go/spi/interceptors/SingleItemRequestInterceptor_test.go
@@ -26,6 +26,7 @@ import (
 	"github.com/apache/plc4x/plc4go/spi"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
 	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
 	"testing"
@@ -47,7 +48,9 @@ func TestNewSingleItemRequestInterceptor(t *testing.T) {
 	}{
 		{
 			name: "create one",
-			want: SingleItemRequestInterceptor{},
+			want: SingleItemRequestInterceptor{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEvent.go b/plc4go/spi/model/DefaultPlcSubscriptionEvent.go
index 8ee9cc4101..6d992f4126 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionEvent.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionEvent.go
@@ -62,7 +62,7 @@ func NewDefaultPlcSubscriptionEvent(
 		valueMap[name] = NewDefaultPlcSubscriptionEventItem(code, tag, subscriptionType, interval, value)
 	}
 
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &DefaultPlcSubscriptionEvent{
 		DefaultPlcSubscriptionEventRequirements: defaultPlcSubscriptionEventRequirements,
 		values:                                  valueMap,
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEvent_test.go b/plc4go/spi/model/DefaultPlcSubscriptionEvent_test.go
index 269f11e4b1..e6b707be86 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionEvent_test.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionEvent_test.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/mock"
 	"testing"
 	"time"
@@ -403,7 +404,10 @@ func TestNewDefaultPlcSubscriptionEvent(t *testing.T) {
 	}{
 		{
 			name: "create it",
-			want: &DefaultPlcSubscriptionEvent{values: map[string]*DefaultPlcSubscriptionEventItem{}},
+			want: &DefaultPlcSubscriptionEvent{
+				values: map[string]*DefaultPlcSubscriptionEventItem{},
+				log:    log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponse.go b/plc4go/spi/model/DefaultPlcSubscriptionResponse.go
index 76af9d95c4..dcacce8a9a 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionResponse.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionResponse.go
@@ -46,7 +46,7 @@ func NewDefaultPlcSubscriptionResponse(
 		request: request,
 		values:  valueMap,
 	}
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	for subscriptionTagName, consumers := range request.(*DefaultPlcSubscriptionRequest).preRegisteredConsumers {
 		subscriptionHandle, err := plcSubscriptionResponse.GetSubscriptionHandle(subscriptionTagName)
 		if subscriptionHandle == nil || err != nil {
diff --git a/plc4go/spi/options/Option.go b/plc4go/spi/options/Option.go
index 47c5eabf71..a718b0b72b 100644
--- a/plc4go/spi/options/Option.go
+++ b/plc4go/spi/options/Option.go
@@ -21,8 +21,10 @@ package options
 
 import (
 	"context"
-	"github.com/rs/zerolog"
 	"time"
+
+	"github.com/rs/zerolog"
+	"github.com/rs/zerolog/log"
 )
 
 // WithOption is a marker interface for options supplied by the builders like WithDefaultTtl
@@ -54,6 +56,16 @@ func ExtractCustomLogger(options ...WithOption) (customLogger zerolog.Logger, fo
 	return
 }
 
+// ExtractCustomLoggerOrDefaultToGlobal can be used to extract the custom logger or use the global log.Logger if not found
+func ExtractCustomLoggerOrDefaultToGlobal(options ...WithOption) (customLogger zerolog.Logger) {
+	found := false
+	customLogger, found = ExtractCustomLogger(options...)
+	if !found {
+		customLogger = log.Logger
+	}
+	return
+}
+
 // WithPassLoggerToModel enables passing of log to the model
 func WithPassLoggerToModel(passLogger bool) WithOption {
 	return withPassLoggerToModel{passLogger: passLogger}
diff --git a/plc4go/spi/pool/WorkerPool.go b/plc4go/spi/pool/WorkerPool.go
index 92a2fded77..d19da618b5 100644
--- a/plc4go/spi/pool/WorkerPool.go
+++ b/plc4go/spi/pool/WorkerPool.go
@@ -45,7 +45,7 @@ type Executor interface {
 
 func NewFixedSizeExecutor(numberOfWorkers, queueDepth int, _options ...options.WithOption) Executor {
 	workers := make([]*worker, numberOfWorkers)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	for i := 0; i < numberOfWorkers; i++ {
 		w := worker{
 			id:  i,
@@ -68,7 +68,7 @@ func NewFixedSizeExecutor(numberOfWorkers, queueDepth int, _options ...options.W
 }
 
 func NewDynamicExecutor(maxNumberOfWorkers, queueDepth int, _options ...options.WithOption) Executor {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	_executor := &dynamicExecutor{
 		executor: &executor{
 			workItems: make(chan workItem, queueDepth),
diff --git a/plc4go/spi/tracer/Tracer.go b/plc4go/spi/tracer/Tracer.go
index 8ae866c23e..3e5dae2f2e 100644
--- a/plc4go/spi/tracer/Tracer.go
+++ b/plc4go/spi/tracer/Tracer.go
@@ -56,7 +56,7 @@ type Tracer interface {
 }
 
 func NewTracer(connectionId string, _options ...options.WithOption) Tracer {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	t := tracer{
 		traceEntries: []TraceEntry{},
 		log:          customLogger,
diff --git a/plc4go/spi/tracer/Tracer_test.go b/plc4go/spi/tracer/Tracer_test.go
index 966363ce47..09afb34dfd 100644
--- a/plc4go/spi/tracer/Tracer_test.go
+++ b/plc4go/spi/tracer/Tracer_test.go
@@ -20,6 +20,7 @@
 package tracer
 
 import (
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"sync/atomic"
 	"testing"
@@ -44,6 +45,7 @@ func TestNewTracer(t *testing.T) {
 					value.Store("")
 					return value
 				}(),
+				log: log.Logger,
 			},
 		},
 	}
diff --git a/plc4go/spi/transactions/RequestTransactionManager.go b/plc4go/spi/transactions/RequestTransactionManager.go
index 24f4e35dbd..3fc5e19020 100644
--- a/plc4go/spi/transactions/RequestTransactionManager.go
+++ b/plc4go/spi/transactions/RequestTransactionManager.go
@@ -68,7 +68,7 @@ type RequestTransactionManager interface {
 // NewRequestTransactionManager creates a new RequestTransactionManager
 func NewRequestTransactionManager(numberOfConcurrentRequests int, _options ...options.WithOption) RequestTransactionManager {
 	extractTraceTransactionManagerTransactions, _ := options.ExtractTraceTransactionManagerTransactions(_options...)
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	_requestTransactionManager := &requestTransactionManager{
 		numberOfConcurrentRequests: numberOfConcurrentRequests,
 		currentTransactionId:       0,
diff --git a/plc4go/spi/transactions/RequestTransactionManager_test.go b/plc4go/spi/transactions/RequestTransactionManager_test.go
index ca59db46a2..acf3bfae09 100644
--- a/plc4go/spi/transactions/RequestTransactionManager_test.go
+++ b/plc4go/spi/transactions/RequestTransactionManager_test.go
@@ -26,6 +26,7 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/options"
 	"github.com/apache/plc4x/plc4go/spi/pool"
 	"github.com/rs/zerolog"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"testing"
 	"time"
@@ -47,6 +48,7 @@ func TestNewRequestTransactionManager(t *testing.T) {
 			want: &requestTransactionManager{
 				workLog:  *list.New(),
 				executor: sharedExecutorInstance,
+				log:      log.Logger,
 			},
 		},
 		{
@@ -61,6 +63,7 @@ func TestNewRequestTransactionManager(t *testing.T) {
 				numberOfConcurrentRequests: 2,
 				workLog:                    *list.New(),
 				executor:                   sharedExecutorInstance,
+				log:                        log.Logger,
 			},
 		},
 	}
diff --git a/plc4go/spi/transports/pcap/Transport.go b/plc4go/spi/transports/pcap/Transport.go
index 50404a736c..a74795850f 100644
--- a/plc4go/spi/transports/pcap/Transport.go
+++ b/plc4go/spi/transports/pcap/Transport.go
@@ -41,7 +41,7 @@ type Transport struct {
 }
 
 func NewTransport(_options ...options.WithOption) *Transport {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Transport{
 		log: customLogger,
 	}
diff --git a/plc4go/spi/transports/pcap/TransportInstance.go b/plc4go/spi/transports/pcap/TransportInstance.go
index 43001ce40e..4c04e06e1b 100644
--- a/plc4go/spi/transports/pcap/TransportInstance.go
+++ b/plc4go/spi/transports/pcap/TransportInstance.go
@@ -58,7 +58,7 @@ type TransportInstance struct {
 }
 
 func NewPcapTransportInstance(transportFile string, transportType TransportType, portRange string, speedFactor float32, transport *Transport, _options ...options.WithOption) *TransportInstance {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	transportInstance := &TransportInstance{
 		transportFile: transportFile,
 		transportType: transportType,
diff --git a/plc4go/spi/transports/pcap/TransportInstance_test.go b/plc4go/spi/transports/pcap/TransportInstance_test.go
index a7234eaabc..0cd1e9a292 100644
--- a/plc4go/spi/transports/pcap/TransportInstance_test.go
+++ b/plc4go/spi/transports/pcap/TransportInstance_test.go
@@ -21,6 +21,7 @@ package pcap
 
 import (
 	"bufio"
+	"github.com/rs/zerolog/log"
 	"testing"
 
 	transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
@@ -45,7 +46,9 @@ func TestNewPcapTransportInstance(t *testing.T) {
 		{
 			name: "create it",
 			want: func() *TransportInstance {
-				ti := &TransportInstance{}
+				ti := &TransportInstance{
+					log: log.Logger,
+				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
 			}(),
diff --git a/plc4go/spi/transports/pcap/Transport_test.go b/plc4go/spi/transports/pcap/Transport_test.go
index d2c6f7f884..e4fb84e48d 100644
--- a/plc4go/spi/transports/pcap/Transport_test.go
+++ b/plc4go/spi/transports/pcap/Transport_test.go
@@ -25,6 +25,7 @@ import (
 	"github.com/gopacket/gopacket"
 	"github.com/gopacket/gopacket/layers"
 	"github.com/gopacket/gopacket/pcapgo"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"net/url"
 	"os"
@@ -39,7 +40,9 @@ func TestNewTransport(t *testing.T) {
 	}{
 		{
 			name: "create it",
-			want: &Transport{},
+			want: &Transport{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
@@ -77,6 +80,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 					speedFactor:   1.5,
 					transport:     NewTransport(),
 					portRange:     "1-3",
+					log:           log.Logger,
 				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
@@ -85,7 +89,9 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			m := Transport{}
+			m := Transport{
+				log: log.Logger,
+			}
 			got, err := m.CreateTransportInstance(tt.args.transportUrl, tt.args.options)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("CreateTransportInstance() error = %v, wantErr %v", err, tt.wantErr)
diff --git a/plc4go/spi/transports/serial/Transport.go b/plc4go/spi/transports/serial/Transport.go
index 778c335b1f..4c959720e2 100644
--- a/plc4go/spi/transports/serial/Transport.go
+++ b/plc4go/spi/transports/serial/Transport.go
@@ -36,7 +36,7 @@ type Transport struct {
 }
 
 func NewTransport(_options ...options.WithOption) *Transport {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Transport{
 		log: customLogger,
 	}
diff --git a/plc4go/spi/transports/serial/TransportInstance.go b/plc4go/spi/transports/serial/TransportInstance.go
index 444d1c44c4..7e1a959f62 100644
--- a/plc4go/spi/transports/serial/TransportInstance.go
+++ b/plc4go/spi/transports/serial/TransportInstance.go
@@ -53,7 +53,7 @@ type TransportInstance struct {
 }
 
 func NewTransportInstance(serialPortName string, baudRate uint, connectTimeout uint32, transport *Transport, _options ...options.WithOption) *TransportInstance {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	transportInstance := &TransportInstance{
 		SerialPortName: serialPortName,
 		BaudRate:       baudRate,
diff --git a/plc4go/spi/transports/serial/Transport_test.go b/plc4go/spi/transports/serial/Transport_test.go
index 975f5fd9f7..ef408e53eb 100644
--- a/plc4go/spi/transports/serial/Transport_test.go
+++ b/plc4go/spi/transports/serial/Transport_test.go
@@ -21,6 +21,7 @@ package serial
 
 import (
 	"github.com/apache/plc4x/plc4go/spi/transports"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"net"
 	"net/url"
@@ -34,7 +35,9 @@ func TestNewTransport(t *testing.T) {
 	}{
 		{
 			name: "create it",
-			want: &Transport{},
+			want: &Transport{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/spi/transports/tcp/Transport.go b/plc4go/spi/transports/tcp/Transport.go
index 29de0fe835..d8ba76ced9 100644
--- a/plc4go/spi/transports/tcp/Transport.go
+++ b/plc4go/spi/transports/tcp/Transport.go
@@ -39,7 +39,7 @@ type Transport struct {
 }
 
 func NewTransport(_options ...options.WithOption) *Transport {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Transport{
 		log: customLogger,
 	}
diff --git a/plc4go/spi/transports/tcp/TransportInstance.go b/plc4go/spi/transports/tcp/TransportInstance.go
index 6061150566..b131b48c35 100644
--- a/plc4go/spi/transports/tcp/TransportInstance.go
+++ b/plc4go/spi/transports/tcp/TransportInstance.go
@@ -54,7 +54,7 @@ type TransportInstance struct {
 }
 
 func NewTcpTransportInstance(remoteAddress *net.TCPAddr, connectTimeout uint32, transport *Transport, _options ...options.WithOption) *TransportInstance {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	transportInstance := &TransportInstance{
 		RemoteAddress:  remoteAddress,
 		ConnectTimeout: connectTimeout,
diff --git a/plc4go/spi/transports/tcp/TransportInstance_test.go b/plc4go/spi/transports/tcp/TransportInstance_test.go
index 3912714125..e58dd54c32 100644
--- a/plc4go/spi/transports/tcp/TransportInstance_test.go
+++ b/plc4go/spi/transports/tcp/TransportInstance_test.go
@@ -22,6 +22,7 @@ package tcp
 import (
 	"bufio"
 	"context"
+	"github.com/rs/zerolog/log"
 	"net"
 	"testing"
 
@@ -46,7 +47,9 @@ func TestNewTcpTransportInstance(t *testing.T) {
 		{
 			name: "create it",
 			want: func() *TransportInstance {
-				ti := &TransportInstance{}
+				ti := &TransportInstance{
+					log: log.Logger,
+				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
 			}(),
diff --git a/plc4go/spi/transports/tcp/Transport_test.go b/plc4go/spi/transports/tcp/Transport_test.go
index 52b63b95e1..7f31355864 100644
--- a/plc4go/spi/transports/tcp/Transport_test.go
+++ b/plc4go/spi/transports/tcp/Transport_test.go
@@ -23,6 +23,7 @@ import (
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/transports"
 	transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"net"
 	"net/url"
@@ -36,7 +37,9 @@ func TestNewTransport(t *testing.T) {
 	}{
 		{
 			name: "create it",
-			want: &Transport{},
+			want: &Transport{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
@@ -68,6 +71,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  tcpAddr,
 					ConnectTimeout: 1000,
+					log:            log.Logger,
 				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
@@ -85,6 +89,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  tcpAddr,
 					ConnectTimeout: 1000,
+					log:            log.Logger,
 				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
@@ -102,6 +107,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  tcpAddr,
 					ConnectTimeout: 1000,
+					log:            log.Logger,
 				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
@@ -136,6 +142,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  tcpAddr,
 					ConnectTimeout: 1000,
+					log:            log.Logger,
 				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
@@ -167,6 +174,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  tcpAddr,
 					ConnectTimeout: 123,
+					log:            log.Logger,
 				}
 				ti.DefaultBufferedTransportInstance = transportUtils.NewDefaultBufferedTransportInstance(ti)
 				return ti
@@ -196,7 +204,9 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			m := Transport{}
+			m := Transport{
+				log: log.Logger,
+			}
 			got, err := m.CreateTransportInstance(tt.args.transportUrl, tt.args.options)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("CreateTransportInstance() error = %v, wantErr %v", err, tt.wantErr)
diff --git a/plc4go/spi/transports/test/Transport.go b/plc4go/spi/transports/test/Transport.go
index 0ea59b645a..78ff9ebc61 100644
--- a/plc4go/spi/transports/test/Transport.go
+++ b/plc4go/spi/transports/test/Transport.go
@@ -35,7 +35,7 @@ type Transport struct {
 }
 
 func NewTransport(_options ...options.WithOption) *Transport {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Transport{
 		preregisteredInstances: map[url.URL]transports.TransportInstance{},
 		log:                    customLogger,
diff --git a/plc4go/spi/transports/test/TransportInstance.go b/plc4go/spi/transports/test/TransportInstance.go
index 224079aa35..b121c9484a 100644
--- a/plc4go/spi/transports/test/TransportInstance.go
+++ b/plc4go/spi/transports/test/TransportInstance.go
@@ -49,7 +49,7 @@ type TransportInstance struct {
 }
 
 func NewTransportInstance(transport *Transport, _options ...options.WithOption) *TransportInstance {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &TransportInstance{
 		readBuffer:  []byte{},
 		writeBuffer: []byte{},
diff --git a/plc4go/spi/transports/test/TransportInstance_test.go b/plc4go/spi/transports/test/TransportInstance_test.go
index fd903d2f28..b9f19d2cc0 100644
--- a/plc4go/spi/transports/test/TransportInstance_test.go
+++ b/plc4go/spi/transports/test/TransportInstance_test.go
@@ -21,6 +21,7 @@ package test
 
 import (
 	"context"
+	"github.com/rs/zerolog/log"
 	"testing"
 
 	"github.com/apache/plc4x/plc4go/spi/transports"
@@ -42,6 +43,7 @@ func TestNewTransportInstance(t *testing.T) {
 			want: &TransportInstance{
 				readBuffer:  []byte{},
 				writeBuffer: []byte{},
+				log:         log.Logger,
 			},
 		},
 	}
diff --git a/plc4go/spi/transports/test/Transport_test.go b/plc4go/spi/transports/test/Transport_test.go
index a05d6ffb13..4fd8b9bb04 100644
--- a/plc4go/spi/transports/test/Transport_test.go
+++ b/plc4go/spi/transports/test/Transport_test.go
@@ -20,6 +20,7 @@
 package test
 
 import (
+	"github.com/rs/zerolog/log"
 	"net/url"
 	"testing"
 
@@ -37,6 +38,7 @@ func TestNewTransport(t *testing.T) {
 			name: "create it",
 			want: &Transport{
 				preregisteredInstances: map[url.URL]transports.TransportInstance{},
+				log:                    log.Logger,
 			},
 		},
 	}
@@ -118,6 +120,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 				readBuffer:  []byte{},
 				writeBuffer: []byte{},
 				transport:   NewTransport(),
+				log:         log.Logger,
 			},
 		},
 		{
@@ -146,6 +149,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 		t.Run(tt.name, func(t *testing.T) {
 			m := &Transport{
 				preregisteredInstances: tt.fields.preregisteredInstances,
+				log:                    log.Logger,
 			}
 			got, err := m.CreateTransportInstance(tt.args.transportUrl, tt.args.options)
 			if (err != nil) != tt.wantErr {
diff --git a/plc4go/spi/transports/udp/Transport.go b/plc4go/spi/transports/udp/Transport.go
index 268d75a865..c306cf5bb7 100644
--- a/plc4go/spi/transports/udp/Transport.go
+++ b/plc4go/spi/transports/udp/Transport.go
@@ -36,7 +36,7 @@ type Transport struct {
 }
 
 func NewTransport(_options ...options.WithOption) *Transport {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &Transport{
 		log: customLogger,
 	}
diff --git a/plc4go/spi/transports/udp/TransportInstance.go b/plc4go/spi/transports/udp/TransportInstance.go
index 42a18f74af..a7c60e905c 100644
--- a/plc4go/spi/transports/udp/TransportInstance.go
+++ b/plc4go/spi/transports/udp/TransportInstance.go
@@ -52,7 +52,7 @@ type TransportInstance struct {
 }
 
 func NewTransportInstance(localAddress *net.UDPAddr, remoteAddress *net.UDPAddr, connectTimeout uint32, soReUse bool, transport *Transport, _options ...options.WithOption) *TransportInstance {
-	logger, _ := options.ExtractCustomLogger(_options...)
+	logger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &TransportInstance{
 		LocalAddress:   localAddress,
 		RemoteAddress:  remoteAddress,
diff --git a/plc4go/spi/transports/udp/TransportInstance_test.go b/plc4go/spi/transports/udp/TransportInstance_test.go
index c31cf7a26e..c68aeba29e 100644
--- a/plc4go/spi/transports/udp/TransportInstance_test.go
+++ b/plc4go/spi/transports/udp/TransportInstance_test.go
@@ -24,6 +24,7 @@ import (
 	"bytes"
 	"context"
 	"github.com/apache/plc4x/plc4go/spi/transports"
+	"github.com/rs/zerolog/log"
 	"net"
 	"testing"
 
@@ -47,7 +48,9 @@ func TestNewTransportInstance(t *testing.T) {
 	}{
 		{
 			name: "create it",
-			want: &TransportInstance{},
+			want: &TransportInstance{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/spi/transports/udp/Transport_test.go b/plc4go/spi/transports/udp/Transport_test.go
index 83a7071c15..277dbff011 100644
--- a/plc4go/spi/transports/udp/Transport_test.go
+++ b/plc4go/spi/transports/udp/Transport_test.go
@@ -22,6 +22,7 @@ package udp
 import (
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/transports"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"net"
@@ -36,7 +37,9 @@ func TestNewTransport(t *testing.T) {
 	}{
 		{
 			name: "create it",
-			want: &Transport{},
+			want: &Transport{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
@@ -68,13 +71,16 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
 					ConnectTimeout: 1000,
 					RemoteAddress:  remoteAddress,
 					transport:      NewTransport(),
+					log:            log.Logger,
 				}
 			}(),
 		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			m := Transport{}
+			m := Transport{
+				log: log.Logger,
+			}
 			got, err := m.CreateTransportInstance(tt.args.transportUrl, tt.args.options)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("CreateTransportInstance() error = %v, wantErr %v", err, tt.wantErr)
@@ -105,6 +111,7 @@ func TestTransport_CreateTransportInstanceForLocalAddress(t *testing.T) {
 				transport:      NewTransport(),
 				RemoteAddress:  &net.UDPAddr{},
 				ConnectTimeout: 1000,
+				log:            log.Logger,
 			},
 		},
 		{
@@ -119,6 +126,7 @@ func TestTransport_CreateTransportInstanceForLocalAddress(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  udpAddr,
 					ConnectTimeout: 1000,
+					log:            log.Logger,
 				}
 				return ti
 			}(),
@@ -135,6 +143,7 @@ func TestTransport_CreateTransportInstanceForLocalAddress(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  udpAddr,
 					ConnectTimeout: 1000,
+					log:            log.Logger,
 				}
 				return ti
 			}(),
@@ -168,6 +177,7 @@ func TestTransport_CreateTransportInstanceForLocalAddress(t *testing.T) {
 					transport:      NewTransport(),
 					RemoteAddress:  udpAddr,
 					ConnectTimeout: 1000,
+					log:            log.Logger,
 				}
 				return ti
 			}(),
@@ -200,6 +210,7 @@ func TestTransport_CreateTransportInstanceForLocalAddress(t *testing.T) {
 					RemoteAddress:  udpAddr,
 					ConnectTimeout: 123,
 					SoReUse:        true,
+					log:            log.Logger,
 				}
 				return ti
 			}(),
@@ -240,7 +251,9 @@ func TestTransport_CreateTransportInstanceForLocalAddress(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			m := Transport{}
+			m := Transport{
+				log: log.Logger,
+			}
 			got, err := m.CreateTransportInstanceForLocalAddress(tt.args.transportUrl, tt.args.options, tt.args.localAddress)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("CreateTransportInstanceForLocalAddress() error = %v, wantErr %v", err, tt.wantErr)
diff --git a/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
index 8d11c5bc15..73cdc91223 100644
--- a/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
+++ b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
@@ -45,7 +45,7 @@ type DefaultBufferedTransportInstance interface {
 }
 
 func NewDefaultBufferedTransportInstance(defaultBufferedTransportInstanceRequirements DefaultBufferedTransportInstanceRequirements, _options ...options.WithOption) DefaultBufferedTransportInstance {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return &defaultBufferedTransportInstance{
 		DefaultBufferedTransportInstanceRequirements: defaultBufferedTransportInstanceRequirements,
 		log: customLogger,
diff --git a/plc4go/spi/transports/utils/DefaultBufferedTransportInstance_test.go b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance_test.go
index e84613b502..8546c281b7 100644
--- a/plc4go/spi/transports/utils/DefaultBufferedTransportInstance_test.go
+++ b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance_test.go
@@ -23,6 +23,7 @@ import (
 	"bufio"
 	"bytes"
 	"context"
+	"github.com/rs/zerolog/log"
 	"testing"
 	"time"
 
@@ -42,7 +43,9 @@ func TestNewDefaultBufferedTransportInstance(t *testing.T) {
 	}{
 		{
 			name: "create it",
-			want: &defaultBufferedTransportInstance{},
+			want: &defaultBufferedTransportInstance{
+				log: log.Logger,
+			},
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/spi/values/PlcValueHandler.go b/plc4go/spi/values/PlcValueHandler.go
index 8cf07e776b..7162b0a759 100644
--- a/plc4go/spi/values/PlcValueHandler.go
+++ b/plc4go/spi/values/PlcValueHandler.go
@@ -38,7 +38,7 @@ type DefaultValueHandler struct {
 }
 
 func NewDefaultValueHandler(_options ...options.WithOption) DefaultValueHandler {
-	customLogger, _ := options.ExtractCustomLogger(_options...)
+	customLogger := options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
 	return DefaultValueHandler{
 		log: customLogger,
 	}