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 407acefa42 feat(plc4go): default ZerologInterfacePLCMessageFormat to 
JSON
407acefa42 is described below

commit 407acefa42dbd6a0cc6dcf1604feea5f91d53b22
Author: Sebastian Rühl <[email protected]>
AuthorDate: Thu Nov 20 11:28:26 2025 +0100

    feat(plc4go): default ZerologInterfacePLCMessageFormat to JSON
---
 plc4go/internal/ads/Connection.go                  |  4 +--
 plc4go/internal/ads/Driver.go                      |  4 +--
 plc4go/internal/bacnetip/Connection.go             |  4 +--
 plc4go/internal/bacnetip/Discoverer.go             |  4 +--
 plc4go/internal/bacnetip/Driver.go                 |  2 +-
 .../bacnetip/bacgopes/app/app_Application.go       |  2 +-
 .../bacgopes/app/app_ApplicationIOController.go    | 10 +++---
 .../bacgopes/appservice/app_DeviceInfoCache.go     |  6 ++--
 .../appservice_ApplicationServiceAccessPoint.go    |  4 +--
 .../bacgopes/appservice/appservice_ClientSSM.go    |  8 ++---
 .../bacnetip/bacgopes/appservice/appservice_SSM.go |  4 +--
 .../bacgopes/appservice/appservice_ServerSSM.go    | 14 ++++----
 .../bacgopes/bvllservice/bvllservice_BIPBBMD.go    | 40 +++++++++++-----------
 .../bacgopes/bvllservice/bvllservice_BIPForeign.go |  8 ++---
 .../bacgopes/bvllservice/bvllservice_BIPSAP.go     |  1 -
 .../bacgopes/bvllservice/bvllservice_BIPSimple.go  | 10 +++---
 .../bvllservice/bvllservice_UDPMultiplexer.go      |  4 +--
 .../bacgopes/capability/capability_Collector.go    |  4 +--
 plc4go/internal/bacnetip/bacgopes/core/core.go     |  2 +-
 .../bacnetip/bacgopes/iocb/iocb_IOController.go    | 10 +++---
 .../bacnetip/bacgopes/iocb/iocb_IOQController.go   | 10 +++---
 .../bacnetip/bacgopes/iocb/iocb_IOQueue.go         |  2 +-
 .../bacnetip/bacgopes/iocb/iocb_SieveQueue.go      |  2 +-
 .../netservice_NetworkServiceAccessPoint.go        | 22 ++++++------
 .../netservice/netservice_NetworkServiceElement.go | 38 ++++++++++++--------
 .../service/service_device_WhoIsIAmServices.go     |  6 ++--
 .../bacnetip/bacgopes/task/task_TaskManager.go     | 14 ++++----
 .../tests/state_machine/state_machine_State.go     |  4 +--
 .../state_machine/state_machine_StateMachine.go    |  6 ++--
 .../state_machine_StateMachineGroup.go             | 18 +++++-----
 .../tests/test_bvll/helpers_FauxMultiplexer.go     |  4 +--
 .../bacgopes/tests/test_bvll/test_bbmd_test.go     | 10 +++---
 .../bacgopes/tests/test_bvll/test_foreign_test.go  |  4 +--
 .../bacgopes/tests/test_bvll/test_simple_test.go   |  4 +--
 .../helpers_ApplicationLayerStateMachine.go        |  4 +--
 .../tests/test_network/helpers_NPDUCodec.go        |  2 +-
 .../helpers_NetworkLayerStateMachine.go            |  4 +--
 .../tests/test_network/helpers_RouterNode.go       |  2 +-
 .../test_network/helpers_SnifferStateMachine.go    |  2 +-
 .../bacgopes/tests/test_network/test_net_1_test.go |  2 +-
 .../bacgopes/tests/test_network/test_net_2_test.go |  2 +-
 .../bacgopes/tests/test_network/test_net_3_test.go |  2 +-
 .../bacnetip/bacgopes/tests/test_npdu/helpers.go   |  2 +-
 .../tests/test_segmentation/test_1_test.go         |  8 ++---
 .../bacgopes/tests/test_service/helpers.go         | 12 +++----
 .../test_utilities/test_state_machine_test.go      |  2 +-
 .../tests/time_machine/time_machine_TimeMachine.go | 12 +++----
 .../trapped_classes/trapped_classes_Trapper.go     | 10 +++---
 .../bacnetip/bacgopes/udp/udp_UDPDirector.go       |  8 ++---
 .../bacnetip/bacgopes/vlan/vlan_IPNetwork.go       |  2 +-
 .../bacnetip/bacgopes/vlan/vlan_IPRouter.go        |  8 ++---
 .../bacnetip/bacgopes/vlan/vlan_IPRouterNode.go    |  4 +--
 .../bacnetip/bacgopes/vlan/vlan_Network.go         | 10 +++---
 .../internal/bacnetip/bacgopes/vlan/vlan_Node.go   |  2 +-
 plc4go/internal/cbus/Browser.go                    | 14 ++++----
 plc4go/internal/cbus/Driver.go                     |  2 +-
 plc4go/internal/cbus/MessageCodec.go               |  4 +--
 plc4go/internal/cbus/Reader.go                     |  2 +-
 plc4go/internal/cbus/Subscriber.go                 |  4 +--
 plc4go/internal/eip/Driver.go                      |  2 +-
 plc4go/internal/eip/Reader.go                      |  2 +-
 plc4go/internal/knxnetip/Browser.go                |  2 +-
 plc4go/internal/knxnetip/Connection.go             |  6 ++--
 plc4go/internal/knxnetip/ConnectionHelper.go       |  2 +-
 plc4go/internal/knxnetip/Discoverer.go             |  6 ++--
 plc4go/internal/knxnetip/Driver.go                 |  5 ++-
 plc4go/internal/modbus/AsciiDriver.go              |  6 ++--
 plc4go/internal/modbus/RtuDriver.go                |  6 ++--
 plc4go/internal/modbus/TcpDriver.go                |  6 ++--
 plc4go/internal/modbus/Writer.go                   |  2 +-
 plc4go/internal/opcua/Connection.go                |  2 +-
 plc4go/internal/opcua/Driver.go                    |  4 +--
 plc4go/internal/opcua/MessageCodec.go              |  4 +--
 plc4go/internal/opcua/Reader.go                    |  4 +--
 plc4go/internal/opcua/SecureChannel.go             | 26 +++++++-------
 plc4go/internal/opcua/SubscriptionHandle.go        |  2 +-
 plc4go/internal/opcua/Writer.go                    |  4 +--
 plc4go/internal/opcua/common.go                    |  2 +-
 plc4go/internal/s7/Driver.go                       |  2 +-
 plc4go/internal/simulated/Driver.go                |  4 +--
 plc4go/pkg/api/cache/PlcConnectionCache.go         |  2 +-
 plc4go/pkg/api/logging/ZerologInterfaceMarshal.go  |  2 +-
 plc4go/spi/default/DefaultCodec.go                 | 16 ++++-----
 plc4go/spi/default/DefaultCodec_test.go            |  1 +
 plc4go/spi/pool/worker.go                          |  6 ++--
 .../spi/transactions/RequestTransactionManager.go  |  6 +++-
 86 files changed, 281 insertions(+), 266 deletions(-)

diff --git a/plc4go/internal/ads/Connection.go 
b/plc4go/internal/ads/Connection.go
index 7dafb2a811..5eed55d1fc 100644
--- a/plc4go/internal/ads/Connection.go
+++ b/plc4go/internal/ads/Connection.go
@@ -183,10 +183,10 @@ func (m *Connection) setupConnection(ctx context.Context) 
error {
                                        
m.handleIncomingDeviceNotificationRequest(
                                                
amsTCPPacket.GetUserdata().(readWriteModel.AdsDeviceNotificationRequest))
                                default:
-                                       m.log.Warn().Stringer("message", 
message).Msg("Got unexpected type of incoming ADS message")
+                                       m.log.Warn().Interface("message", 
message).Msg("Got unexpected type of incoming ADS message")
                                }
                        default:
-                               m.log.Warn().Stringer("message", 
message).Msg("Got unexpected type of incoming ADS message")
+                               m.log.Warn().Interface("message", 
message).Msg("Got unexpected type of incoming ADS message")
                        }
                }
                m.log.Info().Msg("Done waiting for messages ...")
diff --git a/plc4go/internal/ads/Driver.go b/plc4go/internal/ads/Driver.go
index 10b49c2140..4600291e28 100644
--- a/plc4go/internal/ads/Driver.go
+++ b/plc4go/internal/ads/Driver.go
@@ -93,7 +93,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        configuration, err := model.ParseFromOptions(d.log, driverOptions)
        if err != nil {
@@ -106,7 +106,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
        if err != nil {
                return nil, errors.Wrap(err, "couldn't create connection")
        }
-       d.log.Debug().Stringer("connection", connection).Msg("created 
connection, connecting now")
+       d.log.Debug().Interface("connection", connection).Msg("created 
connection, connecting now")
        if err := connection.Connect(ctx); err != nil {
                return nil, errors.Wrap(err, "Error connecting connection")
        }
diff --git a/plc4go/internal/bacnetip/Connection.go 
b/plc4go/internal/bacnetip/Connection.go
index 3433397095..4084c214a9 100644
--- a/plc4go/internal/bacnetip/Connection.go
+++ b/plc4go/internal/bacnetip/Connection.go
@@ -115,7 +115,7 @@ func (c *Connection) passToDefaultIncomingMessageChannel() {
        select {
        case message := <-incomingMessageChannel:
                // TODO: implement mapping to subscribers
-               c.log.Info().Stringer("message", message).Msg("Received")
+               c.log.Info().Interface("message", message).Msg("Received")
        default:
                c.log.Info().Msg("Message was not handled")
        }
@@ -155,7 +155,7 @@ func (c *Connection) SubscriptionRequestBuilder() 
apiModel.PlcSubscriptionReques
 func (c *Connection) addSubscriber(subscriber *Subscriber) {
        for _, sub := range c.subscribers {
                if sub == subscriber {
-                       c.log.Debug().Stringer("subscriber", 
subscriber).Msg("Subscriber already added")
+                       c.log.Debug().Interface("subscriber", 
subscriber).Msg("Subscriber already added")
                        return
                }
        }
diff --git a/plc4go/internal/bacnetip/Discoverer.go 
b/plc4go/internal/bacnetip/Discoverer.go
index 8da8336889..7be3349afe 100644
--- a/plc4go/internal/bacnetip/Discoverer.go
+++ b/plc4go/internal/bacnetip/Discoverer.go
@@ -264,12 +264,12 @@ func (d *Discoverer) handleIncomingBVLCs(ctx 
context.Context, callback func(even
                        _ = npdu
                        if apdu := npdu.GetApdu(); apdu == nil {
                                nlm := npdu.GetNlm()
-                               d.log.Debug().Stringer("nlm", nlm).Msg("Got 
nlm")
+                               d.log.Debug().Interface("nlm", nlm).Msg("Got 
nlm")
                                continue
                        }
                        apdu := npdu.GetApdu()
                        if _, ok := apdu.(driverModel.APDUConfirmedRequest); ok 
{
-                               d.log.Debug().Stringer("apdu", apdu).Msg("Got 
apdu")
+                               d.log.Debug().Interface("apdu", apdu).Msg("Got 
apdu")
                                continue
                        }
                        apduUnconfirmedRequest := 
apdu.(driverModel.APDUUnconfirmedRequest)
diff --git a/plc4go/internal/bacnetip/Driver.go 
b/plc4go/internal/bacnetip/Driver.go
index a1c36bff4a..30a45a8f23 100644
--- a/plc4go/internal/bacnetip/Driver.go
+++ b/plc4go/internal/bacnetip/Driver.go
@@ -107,7 +107,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
        if err != nil {
                return nil, errors.Wrap(err, "error getting application layer 
message codec")
        }
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        // Create the new connection
        connection := NewConnection(codec, d.GetPlcTagHandler(), d.tm, 
driverOptions)
diff --git a/plc4go/internal/bacnetip/bacgopes/app/app_Application.go 
b/plc4go/internal/bacnetip/bacgopes/app/app_Application.go
index 2b1d49e92f..3d3a4debda 100644
--- a/plc4go/internal/bacnetip/bacgopes/app/app_Application.go
+++ b/plc4go/internal/bacnetip/bacgopes/app/app_Application.go
@@ -133,7 +133,7 @@ func (a *Application) GetDeviceInfoCache() 
*appservice.DeviceInfoCache {
 
 // AddObject adds an object to the local collection
 func (a *Application) AddObject(obj LocalDeviceObject) error {
-       a.log.Debug().Stringer("obj", obj).Msg("AddObject")
+       a.log.Debug().Interface("obj", obj).Msg("AddObject")
        if _debug != nil {
                _debug("add_object %r", obj)
        }
diff --git 
a/plc4go/internal/bacnetip/bacgopes/app/app_ApplicationIOController.go 
b/plc4go/internal/bacnetip/bacgopes/app/app_ApplicationIOController.go
index 62c065a681..93f7aa9882 100644
--- a/plc4go/internal/bacnetip/bacgopes/app/app_ApplicationIOController.go
+++ b/plc4go/internal/bacnetip/bacgopes/app/app_ApplicationIOController.go
@@ -65,7 +65,7 @@ func (a *ApplicationIOController) ProcessIO(iocb 
IOCBContract) error {
 
        // get the destination address from the pdu
        destinationAddress := iocb.GetDestination()
-       a.log.Debug().Stringer("destinationAddress", 
destinationAddress).Msg("working with destinationAddress")
+       a.log.Debug().Interface("destinationAddress", 
destinationAddress).Msg("working with destinationAddress")
 
        // look up the queue
        queue, ok := a.queueByAddress[destinationAddress.String()]
@@ -74,7 +74,7 @@ func (a *ApplicationIOController) ProcessIO(iocb 
IOCBContract) error {
                queue = newQueue
                a.queueByAddress[destinationAddress.String()] = queue
        }
-       a.log.Debug().Stringer("queue", queue).Msg("working with queue")
+       a.log.Debug().Interface("queue", queue).Msg("working with queue")
 
        // ask the queue to process the request
        return queue.RequestIO(iocb)
@@ -89,14 +89,14 @@ func (a *ApplicationIOController) _AppComplete(address 
*Address, apdu PDU) error
        // look up the queue
        queue, ok := a.queueByAddress[address.String()]
        if !ok {
-               a.log.Debug().Stringer("address", address).Msg("no queue for")
+               a.log.Debug().Interface("address", address).Msg("no queue for")
                return nil
        }
        a.log.Debug().Stringer("queue", queue).Msg("working with queue")
 
        // make sure it has an active iocb
        if queue.ActiveIOCB == nil {
-               a.log.Debug().Stringer("address", address).Msg("no active 
request for")
+               a.log.Debug().Interface("address", address).Msg("no active 
request for")
                return nil
        }
 
@@ -123,7 +123,7 @@ func (a *ApplicationIOController) _AppComplete(address 
*Address, apdu PDU) error
 }
 
 func (a *ApplicationIOController) _AppRequest(apdu PDU) {
-       a.log.Debug().Stringer("apdu", apdu).Msg("_AppRequest")
+       a.log.Debug().Interface("apdu", apdu).Msg("_AppRequest")
 
        // send it downstream, bypass the guard
        if err := a.Application.Request(NA(apdu), NoKWArgs()); err != nil {
diff --git 
a/plc4go/internal/bacnetip/bacgopes/appservice/app_DeviceInfoCache.go 
b/plc4go/internal/bacnetip/bacgopes/appservice/app_DeviceInfoCache.go
index 0eea3d4b03..b0ad0e4715 100644
--- a/plc4go/internal/bacnetip/bacgopes/appservice/app_DeviceInfoCache.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice/app_DeviceInfoCache.go
@@ -80,7 +80,7 @@ func (d *DeviceInfoCache) HasDeviceInfo(key 
DeviceInfoCacheKey) bool {
 
 // IAmDeviceInfo Create a device information record based on the contents of 
an IAmRequest and put it in the cache.
 func (d *DeviceInfoCache) IAmDeviceInfo(iAm 
readWriteModel.BACnetUnconfirmedServiceRequestIAm, pduSource Address) {
-       d.log.Debug().Stringer("iAm", iAm).Msg("IAmDeviceInfo")
+       d.log.Debug().Interface("iAm", iAm).Msg("IAmDeviceInfo")
        if _debug != nil {
                _debug("iam_device_info %r", iAm)
        }
@@ -123,7 +123,7 @@ func (d *DeviceInfoCache) GetDeviceInfo(key 
DeviceInfoCacheKey) (DeviceInfo, boo
 
        // get the info if it's there
        deviceInfo, ok := d.cache[key.HashKey()]
-       d.log.Debug().Stringer("deviceInfo", &deviceInfo).Msg("deviceInfo")
+       d.log.Debug().Interface("deviceInfo", &deviceInfo).Msg("deviceInfo")
        if _debug != nil {
                _debug("    - device_info: %r", deviceInfo)
        }
@@ -136,7 +136,7 @@ func (d *DeviceInfoCache) GetDeviceInfo(key 
DeviceInfoCacheKey) (DeviceInfo, boo
 //     to be updated to reflect the changes.  If this is a cached version of a 
persistent record then this is the
 //     opportunity to update the database.
 func (d *DeviceInfoCache) UpdateDeviceInfo(deviceInfo DeviceInfo) {
-       d.log.Debug().Stringer("deviceInfo", 
&deviceInfo).Msg("UpdateDeviceInfo")
+       d.log.Debug().Interface("deviceInfo", 
&deviceInfo).Msg("UpdateDeviceInfo")
        if _debug != nil {
                _debug("update_device_info %r", deviceInfo)
        }
diff --git 
a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ApplicationServiceAccessPoint.go
 
b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ApplicationServiceAccessPoint.go
index e5ccc1127f..da0e2a294a 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ApplicationServiceAccessPoint.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ApplicationServiceAccessPoint.go
@@ -86,7 +86,7 @@ func (a *ApplicationServiceAccessPoint) Indication(args Args, 
kwArgs KWArgs) err
                // Look up the struct associated with the service
                cr, ok := ConfirmedRequestTypes[apduService]
                if !ok {
-                       a.log.Debug().Stringer("apduService", 
apduService).Msg("unknown service type")
+                       a.log.Debug().Interface("apduService", 
apduService).Msg("unknown service type")
                        if _debug != nil {
                                _debug("    - no confirmed request decoder")
                        }
@@ -132,7 +132,7 @@ func (a *ApplicationServiceAccessPoint) Indication(args 
Args, kwArgs KWArgs) err
                // Look up the struct associated with the service
                ur, ok := UnconfirmedRequestTypes[apduService]
                if !ok {
-                       a.log.Debug().Stringer("apduService", 
apduService).Msg("unknown service type")
+                       a.log.Debug().Interface("apduService", 
apduService).Msg("unknown service type")
                        return nil
                }
 
diff --git 
a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ClientSSM.go 
b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ClientSSM.go
index c1dce370d1..60e022667d 100644
--- a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ClientSSM.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ClientSSM.go
@@ -254,7 +254,7 @@ func (c *ClientSSM) ProcessTask() error {
 
 // abort This function is called when the transaction should be aborted
 func (c *ClientSSM) abort(reason readWriteModel.BACnetAbortReason) (PDU, 
error) {
-       c.log.Debug().Stringer("reason", reason).Msg("abort")
+       c.log.Debug().Interface("reason", reason).Msg("abort")
 
        // change the state to aborted
        if err := c.setState(SSMState_ABORTED, nil); err != nil {
@@ -269,7 +269,7 @@ func (c *ClientSSM) abort(reason 
readWriteModel.BACnetAbortReason) (PDU, error)
 
 // segmentedRequest This function is called when the client is sending a 
segmented request and receives an apdu
 func (c *ClientSSM) segmentedRequest(apdu PDU) error {
-       c.log.Debug().Stringer("apdu", apdu).Msg("segmentedRequest")
+       c.log.Debug().Interface("apdu", apdu).Msg("segmentedRequest")
 
        switch _apdu := apdu.GetRootMessage().(type) {
        // server is ready for the next segment
@@ -406,7 +406,7 @@ func (c *ClientSSM) segmentedRequestTimeout() error {
 }
 
 func (c *ClientSSM) awaitConfirmation(apdu PDU) error {
-       c.log.Debug().Stringer("apdu", apdu).Msg("awaitConfirmation")
+       c.log.Debug().Interface("apdu", apdu).Msg("awaitConfirmation")
 
        switch _apdu := apdu.GetRootMessage().(type) {
        case readWriteModel.APDUAbort:
@@ -528,7 +528,7 @@ func (c *ClientSSM) awaitConfirmationTimeout() error {
 
 func (c *ClientSSM) segmentedConfirmation(apdu PDU) error {
        ctx := context.TODO()
-       c.log.Debug().Stringer("apdu", apdu).Msg("segmentedConfirmation")
+       c.log.Debug().Interface("apdu", apdu).Msg("segmentedConfirmation")
 
        // the only messages we should be getting are complex acks
        apduComplexAck, ok := apdu.(readWriteModel.APDUComplexAck)
diff --git a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_SSM.go 
b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_SSM.go
index 43dedcef6b..15433e651f 100644
--- a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_SSM.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_SSM.go
@@ -238,7 +238,7 @@ func (s *SSM) setState(newState SSMState, timer *uint) 
error {
 
 // setSegmentationContext This function is called to set the segmentation 
context
 func (s *SSM) setSegmentationContext(apdu readWriteModel.APDU) error {
-       s.log.Debug().Stringer("apdu", apdu).Msg("setSegmentationContext")
+       s.log.Debug().Interface("apdu", apdu).Msg("setSegmentationContext")
        switch apdu := apdu.(type) {
        case readWriteModel.APDUConfirmedRequest:
                if apdu.GetSegmentedMessage() || apdu.GetMoreFollows() {
@@ -343,7 +343,7 @@ func (s *SSM) getSegment(index uint8) (segmentAPDU PDU, 
moreFollows bool, err er
 //
 //     the context
 func (s *SSM) appendSegment(apdu PDU) error {
-       s.log.Debug().Stringer("apdu", apdu).Msg("appendSegment")
+       s.log.Debug().Interface("apdu", apdu).Msg("appendSegment")
        switch apdu := apdu.GetRootMessage().(type) {
        case readWriteModel.APDUConfirmedRequest:
                if apdu.GetSegmentedMessage() || apdu.GetMoreFollows() {
diff --git 
a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ServerSSM.go 
b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ServerSSM.go
index 3062e037f6..000e96d232 100644
--- a/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ServerSSM.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice/appservice_ServerSSM.go
@@ -276,7 +276,7 @@ func (s *ServerSSM) ProcessTask() error {
 
 // abort This function is called when the transaction should be aborted
 func (s *ServerSSM) abort(reason readWriteModel.BACnetAbortReason) (PDU, 
error) {
-       s.log.Debug().Stringer("apdu", reason).Msg("abort")
+       s.log.Debug().Interface("apdu", reason).Msg("abort")
 
        // change the state to aborted
        if err := s.setState(SSMState_ABORTED, nil); err != nil {
@@ -290,7 +290,7 @@ func (s *ServerSSM) abort(reason 
readWriteModel.BACnetAbortReason) (PDU, error)
 }
 
 func (s *ServerSSM) idle(apdu PDU) error {
-       s.log.Debug().Stringer("apdu", apdu).Msg("idle")
+       s.log.Debug().Interface("apdu", apdu).Msg("idle")
 
        // make sure we're getting confirmed requests
        var apduConfirmedRequest readWriteModel.APDUConfirmedRequest
@@ -341,7 +341,7 @@ func (s *ServerSSM) idle(apdu PDU) error {
                        s.maxApduLengthAccepted = 
*s.deviceInfo.MaximumApduLengthAccepted
                }
        }
-       s.log.Debug().Stringer("maxApduLengthAccepted", 
s.maxApduLengthAccepted).Msg("maxApduLengthAccepted")
+       s.log.Debug().Interface("maxApduLengthAccepted", 
s.maxApduLengthAccepted).Msg("maxApduLengthAccepted")
 
        // save the number of segments the client is willing to accept in the 
ack, if this is None then the value is unknown or more than 64
        getMaxSegmentsAccepted := apduConfirmedRequest.GetMaxSegmentsAccepted()
@@ -389,13 +389,13 @@ func (s *ServerSSM) idle(apdu PDU) error {
 
        // send back a segment ack
        segack := readWriteModel.NewAPDUSegmentAck(false, true, s.invokeId, 
s.initialSequenceNumber, *s.actualWindowSize)
-       s.log.Debug().Stringer("segack", segack).Msg("segAck")
+       s.log.Debug().Interface("segack", segack).Msg("segAck")
        return s.Response(NA(NewPDU(NoArgs, NoKWArgs(), 
WithRootMessage(segack))), NoKWArgs())
 }
 
 func (s *ServerSSM) segmentedRequest(apdu PDU) error {
        ctx := context.TODO()
-       s.log.Debug().Stringer("apdu", apdu).Msg("segmentedRequest")
+       s.log.Debug().Interface("apdu", apdu).Msg("segmentedRequest")
 
        // some kind of problem
        if _, ok := apdu.(readWriteModel.APDUAbort); ok {
@@ -515,7 +515,7 @@ func (s *ServerSSM) segmentedRequestTimeout() error {
 }
 
 func (s *ServerSSM) awaitResponse(apdu PDU) error {
-       s.log.Debug().Stringer("apdu", apdu).Msg("awaitResponse")
+       s.log.Debug().Interface("apdu", apdu).Msg("awaitResponse")
 
        switch apdu.GetRootMessage().(type) {
        case readWriteModel.APDUConfirmedRequest:
@@ -553,7 +553,7 @@ func (s *ServerSSM) awaitResponseTimeout() error {
 }
 
 func (s *ServerSSM) segmentedResponse(apdu PDU) error {
-       s.log.Debug().Stringer("apdu", apdu).Msg("segmentedResponse")
+       s.log.Debug().Interface("apdu", apdu).Msg("segmentedResponse")
 
        // client is ready for the next segment
        switch _apdu := apdu.GetRootMessage().(type) {
diff --git 
a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPBBMD.go 
b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPBBMD.go
index 2d285dd15e..861d6b1e61 100644
--- a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPBBMD.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPBBMD.go
@@ -119,7 +119,7 @@ func (b *BIPBBMD) Indication(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - original unicast xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("original unicast 
xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("original unicast 
xpdu")
 
                // send it downstream
                return b.Request(NA(xpdu), NoKWArgs())
@@ -136,7 +136,7 @@ func (b *BIPBBMD) Indication(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - original broadcast xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("original broadcast 
xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("original broadcast 
xpdu")
 
                // send it downstream
                err = b.Request(NA(xpdu), NoKWArgs())
@@ -156,7 +156,7 @@ func (b *BIPBBMD) Indication(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - forwarded xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("forwarded xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("forwarded xpdu")
 
                // send it to the peers
                for _, bdte := range b.bbmdBDT {
@@ -166,7 +166,7 @@ func (b *BIPBBMD) Indication(args Args, kwArgs KWArgs) 
error {
                                        return errors.Wrap(err, "error creating 
address tuple")
                                }
                                xpdu.SetPDUDestination(dest)
-                               b.log.Debug().Stringer("pduDestination", 
xpdu.GetPDUDestination()).Msg("sending to peer")
+                               b.log.Debug().Interface("pduDestination", 
xpdu.GetPDUDestination()).Msg("sending to peer")
                                if err := b.Request(NA(xpdu), NoKWArgs()); err 
!= nil {
                                        return errors.Wrap(err, "error sending 
request")
                                }
@@ -179,7 +179,7 @@ func (b *BIPBBMD) Indication(args Args, kwArgs KWArgs) 
error {
                        if _debug != nil {
                                _debug("    - sending to foreign device: %r", 
xpdu.GetPDUDestination())
                        }
-                       b.log.Debug().Stringer("pduDestination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
+                       b.log.Debug().Interface("pduDestination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
                        if err := b.Request(NA(xpdu), NoKWArgs()); err != nil {
                                return errors.Wrap(err, "error sending request")
                        }
@@ -244,7 +244,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                        if _debug != nil {
                                _debug("    - upstream xpdu: %r", xpdu)
                        }
-                       b.log.Debug().Stringer("xpdu", xpdu).Msg("upstream 
xpdu")
+                       b.log.Debug().Interface("xpdu", xpdu).Msg("upstream 
xpdu")
 
                        return b.Response(NA(xpdu), NoKWArgs())
                }
@@ -257,7 +257,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - forwarded xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("forwarded xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("forwarded xpdu")
 
                // if this was unicast to us, do next hop
                if pdu.GetPDUDestination().AddrType == LOCAL_STATION_ADDRESS {
@@ -282,7 +282,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                        }
                        b.log.Trace().Msg("directed broadcast message")
                } else {
-                       b.log.Warn().Stringer("destination", 
pdu.GetPDUDestination()).Msg("invalid destination address")
+                       b.log.Warn().Interface("destination", 
pdu.GetPDUDestination()).Msg("invalid destination address")
                }
 
                // send it to the registered foreign devices
@@ -291,7 +291,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                        if _debug != nil {
                                _debug("    - sending to foreign device: %r", 
xpdu.GetPDUDestination())
                        }
-                       b.log.Warn().Stringer("destination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
+                       b.log.Warn().Interface("destination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
                        if err := b.Request(NA(xpdu), NoKWArgs()); err != nil {
                                return errors.Wrapf(err, "error sending request 
to destination %s", xpdu.GetPDUDestination())
                        }
@@ -312,7 +312,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it downstream
                return b.Request(NA(xpdu), NoKWArgs())
@@ -361,7 +361,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                        if _debug != nil {
                                _debug("    - upstream xpdu: %r", xpdu)
                        }
-                       b.log.Debug().Stringer("xpdu", xpdu).Msg("upstream 
xpdu")
+                       b.log.Debug().Interface("xpdu", xpdu).Msg("upstream 
xpdu")
 
                        return b.Response(NA(xpdu), NoKWArgs())
                }
@@ -374,7 +374,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - forwarded xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("forwarded xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("forwarded xpdu")
 
                // send it to the peers
                for _, bdte := range b.bbmdBDT {
@@ -397,7 +397,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                                if _debug != nil {
                                        _debug("    - sending to peer: %r", 
xpdu.GetPDUDestination())
                                }
-                               b.log.Debug().Stringer("designation", 
xpdu.GetPDUDestination()).Msg("sending to peer")
+                               b.log.Debug().Interface("designation", 
xpdu.GetPDUDestination()).Msg("sending to peer")
                                err = b.Request(NA(xpdu), NoKWArgs())
                                if err != nil {
                                        return errors.Wrap(err, "error sending")
@@ -412,7 +412,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                                if _debug != nil {
                                        _debug("    - sending to foreign 
device: %r", xpdu.GetPDUDestination())
                                }
-                               b.log.Warn().Stringer("destination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
+                               b.log.Warn().Interface("destination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
                                if err := b.Request(NA(xpdu), NoKWArgs()); err 
!= nil {
                                        return errors.Wrapf(err, "error sending 
request to destination %s", xpdu.GetPDUDestination())
                                }
@@ -431,7 +431,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                        )
                        //               if settings.route_aware:
                        //                   xpdu.pduSource.addrRoute = 
PDUSource
-                       b.log.Debug().Stringer("xpdu", xpdu).Msg("upstream 
xpdu")
+                       b.log.Debug().Interface("xpdu", xpdu).Msg("upstream 
xpdu")
 
                        return b.Response(NA(xpdu), NoKWArgs())
                }
@@ -450,7 +450,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                        if _debug != nil {
                                _debug("    - upstream xpdu: %r", xpdu)
                        }
-                       b.log.Debug().Stringer("xpdu", xpdu).Msg("upstream 
xpdu")
+                       b.log.Debug().Interface("xpdu", xpdu).Msg("upstream 
xpdu")
 
                        if err := b.Response(NA(xpdu), NoKWArgs()); err != nil {
                                return errors.Wrap(err, "error sending local 
broadcast")
@@ -465,7 +465,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - forwarded xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("forwarded xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("forwarded xpdu")
 
                // send it to the peers
                for _, bdte := range b.bbmdBDT {
@@ -478,7 +478,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                                if _debug != nil {
                                        _debug("    - sending to peer: %r", 
xpdu.GetPDUDestination())
                                }
-                               b.log.Debug().Stringer("designation", 
xpdu.GetPDUDestination()).Msg("sending to peer")
+                               b.log.Debug().Interface("designation", 
xpdu.GetPDUDestination()).Msg("sending to peer")
                                err = b.Request(NA(xpdu), NoKWArgs())
                                if err != nil {
                                        return errors.Wrap(err, "error sending")
@@ -492,7 +492,7 @@ func (b *BIPBBMD) Confirmation(args Args, kwArgs KWArgs) 
error {
                        if _debug != nil {
                                _debug("    - sending to foreign device: %r", 
xpdu.GetPDUDestination())
                        }
-                       b.log.Warn().Stringer("destination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
+                       b.log.Warn().Interface("destination", 
xpdu.GetPDUDestination()).Msg("sending to foreign device")
                        if err := b.Request(NA(xpdu), NoKWArgs()); err != nil {
                                return errors.Wrapf(err, "error sending request 
to destination %s", xpdu.GetPDUDestination())
                        }
@@ -592,7 +592,7 @@ func (b *BIPBBMD) ProcessTask() error {
                        if _debug != nil {
                                _debug("foreign device expired: %r", 
fdte.FDAddress)
                        }
-                       b.log.Debug().Stringer("addr", 
fdte.FDAddress).Msg("foreign device expired")
+                       b.log.Debug().Interface("addr", 
fdte.FDAddress).Msg("foreign device expired")
                        return true
                }
                return false
diff --git 
a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPForeign.go 
b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPForeign.go
index 24f0bd01d2..665329c80d 100644
--- a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPForeign.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPForeign.go
@@ -158,7 +158,7 @@ func (b *BIPForeign) Indication(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it downstream
                return b.Request(NA(xpdu), NoKWArgs())
@@ -180,7 +180,7 @@ func (b *BIPForeign) Indication(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it downstream
                return b.Request(NA(xpdu), NoKWArgs())
@@ -227,7 +227,7 @@ func (b *BIPForeign) Confirmation(args Args, kwArgs KWArgs) 
error {
        case *OriginalUnicastNPDU:
                // build a vanilla _PDU
                xpdu := NewPDU(NA(pdu.GetPduData()), NKW(KWCPCISource, 
pdu.GetPDUSource(), KWCPCIDestination, pdu.GetPDUDestination(), KWCPCIUserData, 
pdu.GetPDUUserData()))
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it upstream
                return b.Response(NA(xpdu), NoKWArgs())
@@ -252,7 +252,7 @@ func (b *BIPForeign) Confirmation(args Args, kwArgs KWArgs) 
error {
 
                // build a _PDU with the source from the real source
                xpdu := NewPDU(NA(pdu.GetPduData()), NKW(KWCPCISource, 
pdu.GetBvlciAddress(), KWCPCIDestination, NewLocalBroadcast(nil), 
KWCPCIUserData, pdu.GetPDUUserData()))
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it upstream
                return b.Response(NA(xpdu), NoKWArgs())
diff --git 
a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSAP.go 
b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSAP.go
index 895b51b47a..9c590117d0 100644
--- a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSAP.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSAP.go
@@ -63,7 +63,6 @@ func NewBIPSAP(localLog zerolog.Logger, requirements 
BIPSAPRequirements, options
        }
        localLog.Debug().
                Interface("sapID", b.GetServiceElement()).
-               Interface("requirements", requirements).
                Msg("NewBIPSAP")
        return b, nil
 }
diff --git 
a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSimple.go 
b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSimple.go
index 93dca38447..24a47b9ad1 100644
--- a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSimple.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_BIPSimple.go
@@ -97,7 +97,7 @@ func (b *BIPSimple) Indication(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it downstream
                return b.Request(NA(xpdu), NoKWArgs())
@@ -111,7 +111,7 @@ func (b *BIPSimple) Indication(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it downstream
                return b.Request(NA(xpdu), NoKWArgs())
@@ -144,7 +144,7 @@ func (b *BIPSimple) Confirmation(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it upstream
                return b.Response(NA(xpdu), kwArgs)
@@ -154,7 +154,7 @@ func (b *BIPSimple) Confirmation(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it upstream
                return b.Response(NA(xpdu), kwArgs)
@@ -164,7 +164,7 @@ func (b *BIPSimple) Confirmation(args Args, kwArgs KWArgs) 
error {
                if _debug != nil {
                        _debug("    - xpdu: %r", xpdu)
                }
-               b.log.Debug().Stringer("xpdu", xpdu).Msg("xpdu")
+               b.log.Debug().Interface("xpdu", xpdu).Msg("xpdu")
 
                // send it upstream
                return b.Response(NA(xpdu), kwArgs)
diff --git 
a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_UDPMultiplexer.go 
b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_UDPMultiplexer.go
index 664459e80c..41e0950f04 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_UDPMultiplexer.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/bvllservice/bvllservice_UDPMultiplexer.go
@@ -189,7 +189,7 @@ func (m *UDPMultiplexer) Indication(args Args, kwArgs 
KWArgs) error {
                if _debug != nil {
                        _debug("    - requesting local broadcast: %r", dest)
                }
-               m.log.Debug().Stringer("dest", dest).Msg("requesting local 
broadcast")
+               m.log.Debug().Interface("dest", dest).Msg("requesting local 
broadcast")
        } else if pduDestination.AddrType == LOCAL_STATION_ADDRESS {
                // unicast  message
                if _debug != nil {
@@ -255,7 +255,7 @@ func (m *UDPMultiplexer) Confirmation(args Args, kwArgs 
KWArgs) error {
        if _debug != nil {
                _debug("    - dest: %r", dest)
        }
-       m.log.Debug().Stringer("dest", dest).Msg("dest")
+       m.log.Debug().Interface("dest", dest).Msg("dest")
 
        // must have at least one octet
        if pdu.GetRootMessage() == nil {
diff --git 
a/plc4go/internal/bacnetip/bacgopes/capability/capability_Collector.go 
b/plc4go/internal/bacnetip/bacgopes/capability/capability_Collector.go
index 95b6601f18..38e6511ed4 100644
--- a/plc4go/internal/bacnetip/bacgopes/capability/capability_Collector.go
+++ b/plc4go/internal/bacnetip/bacgopes/capability/capability_Collector.go
@@ -90,7 +90,7 @@ func (c *collector) CapabilityFunctions(fn string) 
iter.Seq[GenericFunction] {
        var fns []fnEntry
        for _, _capability := range c.capabilities {
                xfn := _capability.getFN(fn)
-               c.log.Trace().Stringer("capability", _capability).Bool("xfn", 
xfn != nil).Msg("cap")
+               c.log.Trace().Interface("capability", _capability).Bool("xfn", 
xfn != nil).Msg("cap")
                if xfn != nil {
                        fns = append(fns, fnEntry{_zindex: 
_capability.getZIndex(), fn: xfn})
                }
@@ -111,7 +111,7 @@ func (c *collector) CapabilityFunctions(fn string) 
iter.Seq[GenericFunction] {
 }
 
 func (c *collector) AddCapability(cls Capability) {
-       c.log.Debug().Stringer("cls", cls).Msg("AddCapability")
+       c.log.Debug().Interface("cls", cls).Msg("AddCapability")
        c.capabilities = append(c.capabilities, cls)
        // TODO: not sure what to do here
        return
diff --git a/plc4go/internal/bacnetip/bacgopes/core/core.go 
b/plc4go/internal/bacnetip/bacgopes/core/core.go
index c7b29c1b7e..6cbca5c834 100644
--- a/plc4go/internal/bacnetip/bacgopes/core/core.go
+++ b/plc4go/internal/bacnetip/bacgopes/core/core.go
@@ -128,7 +128,7 @@ func RunOnce(localLog zerolog.Logger) {
                if delta != nil {
                        displayDelta = *delta
                }
-               localLog.Debug().Stringer("task", task).Dur("delta", 
displayDelta).Msg("task")
+               localLog.Debug().Interface("task", task).Dur("delta", 
displayDelta).Msg("task")
 
                // if there is a task to process, do it
                if task != nil {
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOController.go 
b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOController.go
index 072401f02f..d725b5da01 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOController.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOController.go
@@ -84,7 +84,7 @@ func (i *IOController) Abort(err error) error {
 
 // RequestIO Called by a client to start processing a request.
 func (i *IOController) RequestIO(iocb IOCBContract) error {
-       i.log.Debug().Stringer("iocb", iocb).Msg("RequestIO")
+       i.log.Debug().Interface("iocb", iocb).Msg("RequestIO")
 
        // bind the iocb to this controller
        iocb.setIOController(i)
@@ -112,7 +112,7 @@ func (i *IOController) ProcessIO(IOCBContract) error {
 
 // ActiveIO Called by a handler to notify the controller that a request is 
being processed
 func (i *IOController) ActiveIO(iocb IOCBContract) error {
-       i.log.Debug().Stringer("iocb", iocb).Msg("ActiveIO")
+       i.log.Debug().Interface("iocb", iocb).Msg("ActiveIO")
 
        // requests should be idle or pending before coming active
        if iocb.getIOState() != IOCBState_IDLE && iocb.getIOState() != 
IOCBState_PENDING {
@@ -127,8 +127,8 @@ func (i *IOController) ActiveIO(iocb IOCBContract) error {
 // CompleteIO Called by a handler to return data to the client
 func (i *IOController) CompleteIO(iocb IOCBContract, apdu PDU) error {
        i.log.Debug().
-               Stringer("iocb", iocb).
-               Stringer("apdu", apdu).
+               Interface("iocb", iocb).
+               Interface("apdu", apdu).
                Msg("ActiveIO")
 
        // if it completed, leave it alone
@@ -153,7 +153,7 @@ func (i *IOController) CompleteIO(iocb IOCBContract, apdu 
PDU) error {
 
 // AbortIO Called by a handler or a client to abort a transaction
 func (i *IOController) AbortIO(iocb IOCBContract, err error) error {
-       i.log.Debug().Stringer("iocb", iocb).Msg("AbortIO")
+       i.log.Debug().Interface("iocb", iocb).Msg("AbortIO")
 
        // if it completed, leave it alone
        if iocb.getIOState() == IOCBState_COMPLETED {
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQController.go 
b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQController.go
index a015050080..a523075682 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQController.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQController.go
@@ -95,7 +95,7 @@ func (i *IOQController) Abort(err error) error {
                if iocb == nil {
                        break
                }
-               i.log.Debug().Stringer("iocb", iocb).Msg("working with iocb")
+               i.log.Debug().Interface("iocb", iocb).Msg("working with iocb")
 
                // change the state
                iocb.setIOState(IOCBState_ABORTED)
@@ -114,7 +114,7 @@ func (i *IOQController) Abort(err error) error {
 
 // RequestIO Called by a client to start processing a request
 func (i *IOQController) RequestIO(iocb IOCBContract) error {
-       i.log.Debug().Stringer("iocb", iocb).Msg("RequestIO")
+       i.log.Debug().Interface("iocb", iocb).Msg("RequestIO")
 
        // bind the iocb to this controller
        iocb.setIOController(i)
@@ -150,7 +150,7 @@ func (i *IOQController) ProcessIO(IOCBContract) error {
 
 // ActiveIO Called by a handler to notify the controller that a request is 
being processed
 func (i *IOQController) ActiveIO(iocb IOCBContract) error {
-       i.log.Debug().Stringer("iocb", iocb).Msg("ActiveIO")
+       i.log.Debug().Interface("iocb", iocb).Msg("ActiveIO")
 
        // base class work first, setting iocb state and timer data
        if err := i.IOController.ActiveIO(iocb); err != nil {
@@ -168,7 +168,7 @@ func (i *IOQController) ActiveIO(iocb IOCBContract) error {
 
 // CompleteIO Called by a handler to return data to the client
 func (i *IOQController) CompleteIO(iocb IOCBContract, msg PDU) error {
-       i.log.Debug().Stringer("iocb", iocb).Stringer("msg", 
msg).Msg("CompleteIO")
+       i.log.Debug().Interface("iocb", iocb).Stringer("msg", 
msg).Msg("CompleteIO")
 
        // check to see if it is completing the active one
        if iocb != i.ActiveIOCB {
@@ -205,7 +205,7 @@ func (i *IOQController) CompleteIO(iocb IOCBContract, msg 
PDU) error {
 
 // AbortIO Called by a handler or a client to abort a transaction
 func (i *IOQController) AbortIO(iocb IOCBContract, err error) error {
-       i.log.Debug().Err(err).Stringer("iocb", iocb).Msg("AbortIO")
+       i.log.Debug().Err(err).Interface("iocb", iocb).Msg("AbortIO")
 
        // Normal abort
        if err := i.IOController.ActiveIO(iocb); err != nil {
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQueue.go 
b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQueue.go
index 76f9720cd3..46a01d35b4 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQueue.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_IOQueue.go
@@ -54,7 +54,7 @@ func NewIOQueue(localLog zerolog.Logger, name string) 
*IOQueue {
 //
 //     correct processing thread.
 func (i *IOQueue) Put(iocb IOCBContract) error {
-       i.log.Debug().Stringer("iocb", iocb).Msg("Put")
+       i.log.Debug().Interface("iocb", iocb).Msg("Put")
 
        // requests should be pending before being queued
        if iocb.getIOState() != IOCBState_PENDING {
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_SieveQueue.go 
b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_SieveQueue.go
index fb320d41e6..9fd64a149f 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb/iocb_SieveQueue.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb/iocb_SieveQueue.go
@@ -50,7 +50,7 @@ func NewSieveQueue(localLog zerolog.Logger, fn func(apdu 
PDU), address *Address)
 }
 
 func (s *SieveQueue) ProcessIO(iocb IOCBContract) error {
-       s.log.Debug().Stringer("iocb", iocb).Msg("ProcessIO")
+       s.log.Debug().Interface("iocb", iocb).Msg("ProcessIO")
 
        // this is now an active request
        if err := s.ActiveIO(iocb); err != nil {
diff --git 
a/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceAccessPoint.go
 
b/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceAccessPoint.go
index 294505e932..6cc6df1259 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceAccessPoint.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceAccessPoint.go
@@ -233,7 +233,7 @@ func (n *NetworkServiceAccessPoint) Indication(args Args, 
kwArgs KWArgs) error {
 
        // get the local adapter
        localAdapter := n.localAdapter
-       n.log.Debug().Stringer("localAdapter", localAdapter).Msg("localAdapter")
+       n.log.Debug().Interface("localAdapter", 
localAdapter).Msg("localAdapter")
        if _debug != nil {
                _debug("    - local_adapter: %r", localAdapter)
        }
@@ -246,7 +246,7 @@ func (n *NetworkServiceAccessPoint) Indication(args Args, 
kwArgs KWArgs) error {
        if err := pdu.(Encoder).Encode(apdu); err != nil {
                return errors.Wrap(err, "error encoding APDU")
        }
-       n.log.Debug().Stringer("_APDU", apdu).Msg("apdu")
+       n.log.Debug().Interface("_APDU", apdu).Msg("apdu")
        if _debug != nil {
                _debug("    - apdu: %r", apdu)
        }
@@ -259,7 +259,7 @@ func (n *NetworkServiceAccessPoint) Indication(args Args, 
kwArgs KWArgs) error {
        if err = apdu.Encode(npdu); err != nil {
                return errors.Wrap(err, "error encoding NPDU")
        }
-       n.log.Debug().Stringer("npdu", npdu).Msg("npdu")
+       n.log.Debug().Interface("npdu", npdu).Msg("npdu")
        if _debug != nil {
                _debug("    - npdu: %r", npdu)
        }
@@ -287,7 +287,7 @@ func (n *NetworkServiceAccessPoint) Indication(args Args, 
kwArgs KWArgs) error {
                        }
                        npdu.SetNpduDADR(apdu.GetPDUDestination())
                default:
-                       n.log.Trace().Stringer("addrType", 
pdu.GetPDUDestination().AddrType).Msg("unknown destination type")
+                       n.log.Trace().Interface("addrType", 
pdu.GetPDUDestination().AddrType).Msg("unknown destination type")
                }
 
                npdu.SetPDUDestination(npdu.GetPDUDestination().AddrRoute)
@@ -382,7 +382,7 @@ func (n *NetworkServiceAccessPoint) Indication(args Args, 
kwArgs KWArgs) error {
 
        // if there is info, we have a path
        if routerInfo != nil {
-               n.log.Debug().Stringer("routerInfo", 
routerInfo).Msg("routerInfo found")
+               n.log.Debug().Interface("routerInfo", 
routerInfo).Msg("routerInfo found")
                if _debug != nil {
                        _debug("    - router_info found: %r", routerInfo)
                }
@@ -510,7 +510,7 @@ func (n *NetworkServiceAccessPoint) ProcessNPDU(adapter 
*NetworkAdapter, npdu NP
                processLocally = true
                forwardMessage = true
        default:
-               n.log.Warn().Stringer("addrType", 
npdu.GetNpduDADR().AddrType).Msg("invalid destination address type:")
+               n.log.Warn().Interface("addrType", 
npdu.GetNpduDADR().AddrType).Msg("invalid destination address type:")
                return nil
        }
 
@@ -541,7 +541,7 @@ func (n *NetworkServiceAccessPoint) ProcessNPDU(adapter 
*NetworkAdapter, npdu NP
                        if err := apdu.Decode(DeepCopy[NPDU](npdu)); err != nil 
{
                                return errors.Wrap(err, "error decoding APDU")
                        }
-                       n.log.Debug().Stringer("apdu", apdu).Msg("apdu")
+                       n.log.Debug().Interface("apdu", apdu).Msg("apdu")
                        if _debug != nil {
                                _debug("    - apdu: %r", apdu)
                        }
@@ -595,8 +595,8 @@ func (n *NetworkServiceAccessPoint) ProcessNPDU(adapter 
*NetworkAdapter, npdu NP
                                }
                        }
 
-                       n.log.Debug().Stringer("pduSource", 
apdu.GetPDUSource()).Msg("apdu.pduSource")
-                       n.log.Debug().Stringer("pduDestination", 
apdu.GetPDUDestination()).Msg("apdu.pduDestination")
+                       n.log.Debug().Interface("pduSource", 
apdu.GetPDUSource()).Msg("apdu.pduSource")
+                       n.log.Debug().Interface("pduDestination", 
apdu.GetPDUDestination()).Msg("apdu.pduDestination")
                        if _debug != nil {
                                _debug("    - apdu.pduSource: %r", 
apdu.GetPDUSource())
                                _debug("    - apdu.pduDestination: %r", 
apdu.GetPDUDestination())
@@ -728,7 +728,7 @@ func (n *NetworkServiceAccessPoint) ProcessNPDU(adapter 
*NetworkAdapter, npdu NP
                                }
                                return nil
                        }
-                       n.log.Debug().Stringer("adapter", adapter).Msg("found 
path via")
+                       n.log.Debug().Interface("adapter", adapter).Msg("found 
path via")
                        if _debug != nil {
                                _debug("    - found path via %r", xadapter)
                        }
@@ -764,7 +764,7 @@ func (n *NetworkServiceAccessPoint) ProcessNPDU(adapter 
*NetworkAdapter, npdu NP
 
                // found a path
                if routerInfo != nil {
-                       n.log.Debug().Stringer("routerInfo", 
routerInfo).Msg("found path via routerInfo")
+                       n.log.Debug().Interface("routerInfo", 
routerInfo).Msg("found path via routerInfo")
                        if _debug != nil {
                                _debug("    - found path via %r", routerInfo)
                        }
diff --git 
a/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceElement.go
 
b/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceElement.go
index 4d95366fd7..28cf7c327d 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceElement.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/netservice/netservice_NetworkServiceElement.go
@@ -87,14 +87,14 @@ func (n *NetworkServiceElement) Startup(_ Args, _ KWArgs) 
error {
 
        // reference the service access point
        sap := n.GetElementService().(*NetworkServiceAccessPoint) // TODO: hard 
cast but seems like adapters appears first in network service access point (so 
hard binding)
-       n.log.Debug().Stringer("sap", sap).Msg("sap")
+       n.log.Debug().Interface("sap", sap).Msg("sap")
        if _debug != nil {
                _debug("    - sap: %r", sap)
        }
 
        // loop through all the adapters
        for _, adapter := range sap.adapters {
-               n.log.Debug().Stringer("adapter", adapter).Msg("adapter")
+               n.log.Debug().Interface("adapter", adapter).Msg("adapter")
                if _debug != nil {
                        _debug("    - adapter: %r", adapter)
                }
@@ -184,7 +184,7 @@ func (n *NetworkServiceElement) Indication(args Args, 
kwArgs KWArgs) error {
                case model.NLMNetworkNumberIs:
                        return n.NetworkNumberIs(adapter, npdu, nlm)
                default:
-                       n.log.Debug().Stringer("nlm", nlm).Msg("Unhandled")
+                       n.log.Debug().Interface("nlm", nlm).Msg("Unhandled")
                }
        default:
                n.log.Trace().Msg("can only handle NPDU")
@@ -229,7 +229,7 @@ func (n *NetworkServiceElement) Confirmation(args Args, 
kwArgs KWArgs) error {
                case model.NLMNetworkNumberIs:
                        return n.NetworkNumberIs(adapter, npdu, nlm)
                default:
-                       n.log.Debug().Stringer("nlm", nlm).Msg("Unhandled")
+                       n.log.Debug().Interface("nlm", nlm).Msg("Unhandled")
                }
        default:
                n.log.Trace().Msg("can only handle NPDU")
@@ -241,7 +241,11 @@ func (n *NetworkServiceElement) iamRouterToNetwork(args 
Args, _ KWArgs) error {
        adapter, _ := GAO[*NetworkAdapter](args, 0, nil)
        destination, _ := GAO[*Address](args, 1, nil)
        network, _ := GAO[[]*uint16](args, 2, nil)
-       n.log.Debug().Stringer("adapter", adapter).Stringer("destination", 
destination).Interface("network", network).Msg("IamRouterToNetwork")
+       n.log.Debug().
+               Interface("adapter", adapter).
+               Interface("destination", destination).
+               Interface("network", network).
+               Msg("IamRouterToNetwork")
        if _debug != nil {
                _debug("i_am_router_to_network %r %r %r", adapter, destination, 
network)
        }
@@ -309,7 +313,11 @@ func (n *NetworkServiceElement) iamRouterToNetwork(args 
Args, _ KWArgs) error {
                        return errors.New("invalid destination address")
                }
        }
-       n.log.Debug().Stringer("adapter", adapter).Stringer("destination", 
destination).Interface("network", network).Msg("adapter, destination, network")
+       n.log.Debug().
+               Interface("adapter", adapter).
+               Interface("destination", destination).
+               Interface("network", network).
+               Msg("adapter, destination, network")
        if _debug != nil {
                _debug("    - adapter, destination, network: %r, %r, %r", 
adapter, destination, network)
        }
@@ -350,7 +358,7 @@ func (n *NetworkServiceElement) iamRouterToNetwork(args 
Args, _ KWArgs) error {
                        return errors.Wrap(err, "error creating IAM router to 
network")
                }
                iamrtn.SetPDUDestination(destination)
-               n.log.Debug().Stringer("adapter", adapter).Stringer("iamrtn", 
iamrtn).Msg("adapter, iamrtn")
+               n.log.Debug().Interface("adapter", adapter).Interface("iamrtn", 
iamrtn).Msg("adapter, iamrtn")
                if _debug != nil {
                        _debug("    - adapter, iamrtn: %r, %r", adapter, iamrtn)
                }
@@ -365,14 +373,14 @@ func (n *NetworkServiceElement) iamRouterToNetwork(args 
Args, _ KWArgs) error {
 }
 
 func (n *NetworkServiceElement) WhoIsRouterToNetwork(adapter *NetworkAdapter, 
npdu NPDU, nlm model.NLMWhoIsRouterToNetwork) error {
-       n.log.Debug().Stringer("adapter", adapter).Stringer("npdu", 
npdu).Stringer("nlm", nlm).Msg("WhoIsRouteToNetwork")
+       n.log.Debug().Interface("adapter", adapter).Interface("npdu", 
npdu).Interface("nlm", nlm).Msg("WhoIsRouteToNetwork")
        if _debug != nil {
                _debug("WhoIsRouterToNetwork %r %r", adapter, npdu)
        }
 
        // reference the service access point
        sap := n.GetElementService().(*NetworkServiceAccessPoint) // TODO: 
check hard cast here...
-       n.log.Debug().Stringer("sap", sap).Msg("sap")
+       n.log.Debug().Interface("sap", sap).Msg("sap")
        if _debug != nil {
                _debug("    - sap: %r", sap)
        }
@@ -474,7 +482,7 @@ func (n *NetworkServiceElement) 
WhoIsRouterToNetwork(adapter *NetworkAdapter, np
 
                // found a path
                if routerInfo != nil {
-                       n.log.Debug().Stringer("routerInfo", 
routerInfo).Msg("router round")
+                       n.log.Debug().Interface("routerInfo", 
routerInfo).Msg("router round")
                        if _debug != nil {
                                _debug("    - router found: %r", routerInfo)
                        }
@@ -525,7 +533,7 @@ func (n *NetworkServiceElement) 
WhoIsRouterToNetwork(adapter *NetworkAdapter, np
                        // send it to all (other) adapters
                        for _, xadapter := range sap.adapters {
                                if xadapter != adapter {
-                                       n.log.Debug().Stringer("xadapter", 
xadapter).Msg("Sending to adapter")
+                                       n.log.Debug().Interface("xadapter", 
xadapter).Msg("Sending to adapter")
                                        if _debug != nil {
                                                _debug("    - sending on 
adapter: %r", xadapter)
                                        }
@@ -540,14 +548,14 @@ func (n *NetworkServiceElement) 
WhoIsRouterToNetwork(adapter *NetworkAdapter, np
 }
 
 func (n *NetworkServiceElement) IAmRouterToNetwork(adapter *NetworkAdapter, 
npdu NPDU, nlm model.NLMIAmRouterToNetwork) error {
-       n.log.Debug().Stringer("adapter", adapter).Stringer("npdu", 
npdu).Stringer("nlm", nlm).Msg("IAmRouterToNetwork")
+       n.log.Debug().Interface("adapter", adapter).Interface("npdu", 
npdu).Interface("nlm", nlm).Msg("IAmRouterToNetwork")
        if _debug != nil {
                _debug("IAmRouterToNetwork %r %r", adapter, npdu)
        }
 
        // reference the service access point
        sap := n.GetElementService().(*NetworkServiceAccessPoint) // TODO: 
check hard cast here...
-       n.log.Debug().Stringer("sap", sap).Msg("sap")
+       n.log.Debug().Interface("sap", sap).Msg("sap")
        if _debug != nil {
                _debug("    - sap: %r", sap)
        }
@@ -579,7 +587,7 @@ func (n *NetworkServiceElement) IAmRouterToNetwork(adapter 
*NetworkAdapter, npdu
                // send it to all the connected adapters
                for _, xadapter := range sap.adapters {
                        if xadapter != adapter {
-                               n.log.Debug().Stringer("xadapter", 
xadapter).Msg("Sending to adapter")
+                               n.log.Debug().Interface("xadapter", 
xadapter).Msg("Sending to adapter")
                                if _debug != nil {
                                        _debug("    - sending on adapter: %r", 
xadapter)
                                }
@@ -604,7 +612,7 @@ func (n *NetworkServiceElement) IAmRouterToNetwork(adapter 
*NetworkAdapter, npdu
 
                        // now reprocess them
                        for _, pendingNPDU := range pendingNpdus {
-                               n.log.Debug().Stringer("pendingNPDU", 
pendingNPDU).Msg("sending")
+                               n.log.Debug().Interface("pendingNPDU", 
pendingNPDU).Msg("sending")
                                if _debug != nil {
                                        _debug("    - sending %r", pendingNPDU)
                                }
diff --git 
a/plc4go/internal/bacnetip/bacgopes/service/service_device_WhoIsIAmServices.go 
b/plc4go/internal/bacnetip/bacgopes/service/service_device_WhoIsIAmServices.go
index acd6840b8b..578dcb4417 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/service/service_device_WhoIsIAmServices.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/service/service_device_WhoIsIAmServices.go
@@ -131,7 +131,7 @@ func (w *WhoIsIAmServices) WhoIs(lowLimit, highLimit *uint, 
address *Address) er
        if _debug != nil {
                _debug("    - whoIs: %r", whoIs)
        }
-       w.log.Debug().Stringer("whoIs", whoIs).Msg("WhoIs")
+       w.log.Debug().Interface("whoIs", whoIs).Msg("WhoIs")
 
        return w._requirements.Request(NA(whoIs), NoKWArgs())
 }
@@ -141,7 +141,7 @@ func (w *WhoIsIAmServices) DoWhoIsRequest(apdu APDU) error {
        if _debug != nil {
                _debug("do_WhoIsRequest %r", apdu)
        }
-       w.log.Debug().Stringer("apdu", apdu).Msg("DoWhoIsRequest")
+       w.log.Debug().Interface("apdu", apdu).Msg("DoWhoIsRequest")
 
        // ignore this if there's no local device
        if w.localDevice == nil {
@@ -235,7 +235,7 @@ func (w *WhoIsIAmServices) IAm(address *Address) error {
        if _debug != nil {
                _debug("    - iAm: %r", iAm)
        }
-       w.log.Debug().Stringer("iAm", iAm).Msg("")
+       w.log.Debug().Interface("iAm", iAm).Msg("")
 
        return w._requirements.Request(NA(iAm), NoKWArgs())
 }
diff --git a/plc4go/internal/bacnetip/bacgopes/task/task_TaskManager.go 
b/plc4go/internal/bacnetip/bacgopes/task/task_TaskManager.go
index 912c84f781..ccb32c33d4 100644
--- a/plc4go/internal/bacnetip/bacgopes/task/task_TaskManager.go
+++ b/plc4go/internal/bacnetip/bacgopes/task/task_TaskManager.go
@@ -61,7 +61,7 @@ func OverwriteTaskManager(localLog zerolog.Logger, manager 
TaskManager) (oldMana
        if _taskManager != nil {
                oldManager = _taskManager
                if oldManager.CountTasks() > 0 {
-                       localLog.Warn().Stringer("oldManager", 
oldManager).Msg("Overwriting task manager with pending tasks")
+                       localLog.Warn().Interface("oldManager", 
oldManager).Msg("Overwriting task manager with pending tasks")
                }
                _taskManager.ClearTasks()
        }
@@ -77,7 +77,7 @@ func ClearTaskManager(localLog zerolog.Logger) {
                return
        }
        if _taskManager.CountTasks() > 0 {
-               localLog.Warn().Stringer("taskManager", 
_taskManager).Msg("Clearing task manager with pending tasks")
+               localLog.Warn().Interface("taskManager", 
_taskManager).Msg("Clearing task manager with pending tasks")
        }
        _taskManager.ClearTasks()
 }
@@ -150,7 +150,7 @@ func (t *taskManager) InstallTask(task TaskRequirements) {
        if _debug != nil {
                _debug("install_task %r @ %r", task, task.GetTaskTime())
        }
-       t.log.Debug().Stringer("task", task).Msg("InstallTask")
+       t.log.Debug().Interface("task", task).Msg("InstallTask")
        t.Lock()
        defer t.Unlock()
 
@@ -175,7 +175,7 @@ func (t *taskManager) InstallTask(task TaskRequirements) {
        if _debug != nil {
                _debug("    - tasks: %r", t.tasks)
        }
-       t.log.Debug().Stringer("tasks", t.tasks).Msg("tasks")
+       t.log.Debug().Interface("tasks", t.tasks).Msg("tasks")
 
        task.SetIsScheduled(true)
 }
@@ -184,7 +184,7 @@ func (t *taskManager) SuspendTask(task TaskRequirements) {
        if _debug != nil {
                _debug("suspend_task %r", task)
        }
-       t.log.Debug().Stringer("task", task).Msg("SuspendTask ")
+       t.log.Debug().Interface("task", task).Msg("SuspendTask ")
        t.Lock()
        defer t.Unlock()
 
@@ -217,7 +217,7 @@ func (t *taskManager) ResumeTask(task TaskRequirements) {
        if _debug != nil {
                _debug("resume_task %r", task)
        }
-       t.log.Debug().Stringer("task", task).Msg("ResumeTask")
+       t.log.Debug().Interface("task", task).Msg("ResumeTask")
        t.Lock()
        defer t.Unlock()
 
@@ -276,7 +276,7 @@ func (t *taskManager) ProcessTask(task TaskRequirements) {
        if _debug != nil {
                _debug("process_task %r", task)
        }
-       t.log.Debug().Stringer("task", task).Msg("ProcessTask")
+       t.log.Debug().Interface("task", task).Msg("ProcessTask")
 
        // process the task
        if err := task.ProcessTask(); err != nil {
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_State.go 
b/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_State.go
index 436c89a30f..5cff342f84 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_State.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_State.go
@@ -292,7 +292,7 @@ func (s *state) Send(pdu PDU, nextState State) State {
        if _debug != nil {
                _debug("send(%s) %r next_state=%r", s.docString, pdu, nextState)
        }
-       s.log.Debug().Stringer("pdu", pdu).Msg("Send")
+       s.log.Debug().Interface("pdu", pdu).Msg("Send")
        if nextState == nil {
                nextState = s.stateMachine.NewState("")
                s.log.Debug().Stringer("nextState", nextState).Msg("new 
nextState")
@@ -409,7 +409,7 @@ func (s *state) UnexpectedReceive(pdu PDU) {
        if _debug != nil {
                _debug("unexpected_receive(%s) %r", s.docString, pdu)
        }
-       s.log.Debug().Stringer("pdu", pdu).Msg("UnexpectedReceive")
+       s.log.Debug().Interface("pdu", pdu).Msg("UnexpectedReceive")
        s.stateMachine.UnexpectedReceive(pdu)
 }
 
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachine.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachine.go
index c711f01309..d5fc810a68 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachine.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachine.go
@@ -690,7 +690,7 @@ func (s *stateMachine) Receive(args Args, kwArgs KWArgs) 
error {
 }
 
 func (s *stateMachine) AfterReceive(pdu PDU) {
-       s.log.Trace().Stringer("pdu", pdu).Msg("AfterReceive")
+       s.log.Trace().Interface("pdu", pdu).Msg("AfterReceive")
 }
 
 func (s *stateMachine) UnexpectedReceive(pdu PDU) {
@@ -698,7 +698,7 @@ func (s *stateMachine) UnexpectedReceive(pdu PDU) {
                _debug("unexpected_receive(%s) %r", s.name, pdu)
                _debug("    - current_state: %r", s.currentState)
        }
-       s.log.Trace().Stringer("pdu", pdu).Msg("UnexpectedReceive")
+       s.log.Trace().Interface("pdu", pdu).Msg("UnexpectedReceive")
        s.log.Trace().Stringer("currentState", 
s.currentState).Msg("currentState")
        if err := s.gotoState(s.unexpectedReceiveState); err != nil {
                s.log.Error().Err(err).Msg("error going to unexpected state")
@@ -810,7 +810,7 @@ func (s *stateMachine) MatchPDU(pdu PDU, criteria criteria) 
bool {
        if _debug != nil {
                _debug("match_pdu(%s) %r %r", s.name, pdu, criteria)
        }
-       s.log.Debug().Stringer("pdu", pdu).Stringer("criteria", 
criteria).Msg("MatchPDU")
+       s.log.Debug().Interface("pdu", pdu).Stringer("criteria", 
criteria).Msg("MatchPDU")
        return MatchPdu(s.log, pdu, criteria.pduType, criteria.pduAttrs)
 }
 
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachineGroup.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachineGroup.go
index 56aa526f5e..81c071ca89 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachineGroup.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/state_machine/state_machine_StateMachineGroup.go
@@ -63,7 +63,7 @@ func (s *StateMachineGroup) Append(machine StateMachine) {
        if _debug != nil {
                _debug("append %r", machine)
        }
-       s.log.Debug().Stringer("stateMachine", machine).Msg("Append")
+       s.log.Debug().Interface("stateMachine", machine).Msg("Append")
        if machine.getMachineGroup() != nil {
                panic("state machine group already contains this machine")
        }
@@ -78,7 +78,7 @@ func (s *StateMachineGroup) Remove(machine StateMachine) {
        if _debug != nil {
                _debug("remove %r", machine)
        }
-       s.log.Debug().Stringer("stateMachine", machine).Msg("Remove")
+       s.log.Debug().Interface("stateMachine", machine).Msg("Remove")
        if machine.getMachineGroup() != s {
                panic("state machine is not a member of this group")
        }
@@ -102,7 +102,7 @@ func (s *StateMachineGroup) Reset() {
                if _debug != nil {
                        _debug("    - resetting: %r", machine)
                }
-               s.log.Debug().Stringer("stateMachine", machine).Msg("Resetting")
+               s.log.Debug().Interface("stateMachine", 
machine).Msg("Resetting")
                machine.Reset()
        }
 
@@ -129,7 +129,7 @@ func (s *StateMachineGroup) SetEvent(id string) {
                if _debug != nil {
                        _debug("    - state_machine: %r", machine)
                }
-               s.log.Debug().Stringer("stateMachine", machine).Msg("Setting")
+               s.log.Debug().Interface("stateMachine", machine).Msg("Setting")
                machine.EventSet(id)
        }
 }
@@ -165,7 +165,7 @@ func (s *StateMachineGroup) Run() error {
                if _debug != nil {
                        _debug("    - starting: %r", machine)
                }
-               s.log.Debug().Stringer("stateMachine", machine).Msg("starting")
+               s.log.Debug().Interface("stateMachine", machine).Msg("starting")
                if err := machine.Run(); err != nil {
                        return errors.Wrap(err, "failed to start machine")
                }
@@ -198,7 +198,7 @@ func (s *StateMachineGroup) Started(machine StateMachine) {
        if _debug != nil {
                _debug("started %r", machine)
        }
-       s.log.Debug().Stringer("stateMachine", machine).Msg("started")
+       s.log.Debug().Interface("stateMachine", machine).Msg("started")
 }
 
 // Stopped Called by a state machine after it has halted and its Success()
@@ -208,7 +208,7 @@ func (s *StateMachineGroup) Stopped(machine StateMachine) {
        if _debug != nil {
                _debug("stopped %r", machine)
        }
-       s.log.Debug().Stringer("stateMachine", machine).Msg("stopped")
+       s.log.Debug().Interface("stateMachine", machine).Msg("stopped")
        if s.startupFlag {
                if _debug != nil {
                        _debug("    - still starting up")
@@ -247,7 +247,7 @@ func (s *StateMachineGroup) CheckForSuccess() (allSuccess 
bool, someFailed bool)
                        if _debug != nil {
                                _debug("    - running: %r", machine)
                        }
-                       s.log.Trace().Stringer("machine", 
machine).Msg("running")
+                       s.log.Trace().Interface("machine", 
machine).Msg("running")
                        allSuccess = false
                        someFailed = false
                        break
@@ -257,7 +257,7 @@ func (s *StateMachineGroup) CheckForSuccess() (allSuccess 
bool, someFailed bool)
                        if _debug != nil {
                                _debug("    - not started: %r", machine)
                        }
-                       s.log.Trace().Stringer("machine", machine).Msg("not 
started")
+                       s.log.Trace().Interface("machine", machine).Msg("not 
started")
                        allSuccess = false
                        someFailed = false
                        break
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/helpers_FauxMultiplexer.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/helpers_FauxMultiplexer.go
index 8ead2a641e..ce73ad57b5 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/helpers_FauxMultiplexer.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/helpers_FauxMultiplexer.go
@@ -98,7 +98,7 @@ func (s *FauxMultiplexer) Indication(args Args, kwArgs 
KWArgs) error {
                if _debug != nil {
                        _debug("    - requesting local broadcast: %r", dest)
                }
-               s.log.Debug().Stringer("dest", dest).Msg("Requesting local 
broadcast")
+               s.log.Debug().Interface("dest", dest).Msg("Requesting local 
broadcast")
        } else if pdu.GetPDUDestination().AddrType == LOCAL_STATION_ADDRESS {
                var err error
                dest, err = NewAddress(NA(pdu.GetPDUDestination().AddrAddress))
@@ -108,7 +108,7 @@ func (s *FauxMultiplexer) Indication(args Args, kwArgs 
KWArgs) error {
                if _debug != nil {
                        _debug("    - requesting local station: %r", dest)
                }
-               s.log.Debug().Stringer("dest", dest).Msg("Requesting local 
station")
+               s.log.Debug().Interface("dest", dest).Msg("Requesting local 
station")
        } else {
                return errors.New("unknown destination type")
        }
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_bbmd_test.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_bbmd_test.go
index fd184441cc..f96409e379 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_bbmd_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_bbmd_test.go
@@ -102,7 +102,7 @@ func (t *TBNetwork) Run(timeLimit time.Duration) {
        RunTimeMachine(t.log, timeLimit, time.Time{})
        t.log.Trace().Msg("time machine finished")
        for _, machine := range t.StateMachineGroup.GetStateMachines() {
-               t.log.Debug().Stringer("machine", machine).Msg("Machine:")
+               t.log.Debug().Interface("machine", machine).Msg("Machine:")
                for _, s := range machine.GetTransactionLog() {
                        t.log.Debug().Stringer("logEntry", s).Msg("logEntry")
                }
@@ -241,7 +241,7 @@ func TestBBMD(t *testing.T) {
                // implementation under test
                iut, err := NewBIPBBMDApplication(testLogger, "192.168.1.2/24", 
tnet.vlan[0])
                require.NoError(t, err)
-               testLogger.Debug().Stringer("iutbip", iut.bip).Msg("iut.bip")
+               testLogger.Debug().Interface("iutbip", iut.bip).Msg("iut.bip")
 
                // BBMD on net 2
                bbmd1, err := NewBIPBBMDNode(testLogger, "192.168.2.2/24", 
tnet.vlan[1])
@@ -250,7 +250,7 @@ func TestBBMD(t *testing.T) {
                // add the IUT as a one-hop peer
                err = bbmd1.bip.AddPeer(quick.Address("192.168.1.2/24"))
                require.NoError(t, err)
-               testLogger.Debug().Stringer("bbmd1bip", 
bbmd1.bip).Msg("bbmd1.bip")
+               testLogger.Debug().Interface("bbmd1bip", 
bbmd1.bip).Msg("bbmd1.bip")
 
                // test device
                td, err := NewBIPSimpleApplicationLayerStateMachine(testLogger, 
"192.168.2.3/24", tnet.vlan[1])
@@ -291,7 +291,7 @@ func TestBBMD(t *testing.T) {
                // implementation under test
                iut, err := NewBIPBBMDApplication(testLogger, "192.168.1.2/24", 
tnet.vlan[0])
                require.NoError(t, err)
-               testLogger.Debug().Stringer("iutbip", iut.bip).Msg("iut.bip")
+               testLogger.Debug().Interface("iutbip", iut.bip).Msg("iut.bip")
 
                // BBMD on net 2
                bbmd1, err := NewBIPBBMDNode(testLogger, "192.168.2.2/24", 
tnet.vlan[1])
@@ -300,7 +300,7 @@ func TestBBMD(t *testing.T) {
                // add the IUT as a two-hop peer
                err = bbmd1.bip.AddPeer(quick.Address("192.168.1.2/32"))
                require.NoError(t, err)
-               testLogger.Debug().Stringer("bbmd1bip", 
bbmd1.bip).Msg("bbmd1.bip")
+               testLogger.Debug().Interface("bbmd1bip", 
bbmd1.bip).Msg("bbmd1.bip")
 
                // test device
                td, err := NewBIPSimpleApplicationLayerStateMachine(testLogger, 
"192.168.2.3/24", tnet.vlan[1])
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_foreign_test.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_foreign_test.go
index ee81422559..2514426265 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_foreign_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_foreign_test.go
@@ -107,9 +107,9 @@ func (t *TFNetwork) Run(timeLimit time.Duration) {
        RunTimeMachine(t.log, timeLimit, time.Time{})
        t.log.Trace().Msg("time machine finished")
        for _, machine := range t.StateMachineGroup.GetStateMachines() {
-               t.log.Debug().Stringer("machine", machine).Msg("Machine:")
+               t.log.Debug().Interface("machine", machine).Msg("Machine:")
                for _, s := range machine.GetTransactionLog() {
-                       t.log.Debug().Stringer("logEntry", s).Msg("logEntry")
+                       t.log.Debug().Interface("logEntry", s).Msg("logEntry")
                }
        }
 
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_simple_test.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_simple_test.go
index 04f17ba7ed..13819b00db 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_simple_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_simple_test.go
@@ -97,9 +97,9 @@ func (t *TNetwork) Run(timeLimit time.Duration) {
        RunTimeMachine(t.log, timeLimit, time.Time{})
        t.log.Trace().Msg("time machine finished")
        for _, machine := range t.StateMachineGroup.GetStateMachines() {
-               t.log.Debug().Stringer("machine", machine).Msg("Machine:")
+               t.log.Debug().Interface("machine", machine).Msg("Machine:")
                for _, s := range machine.GetTransactionLog() {
-                       t.log.Debug().Stringer("logEntry", s).Msg("logEntry")
+                       t.log.Debug().Interface("logEntry", s).Msg("logEntry")
                }
        }
 
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_ApplicationLayerStateMachine.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_ApplicationLayerStateMachine.go
index 772f998e24..18b4762337 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_ApplicationLayerStateMachine.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_ApplicationLayerStateMachine.go
@@ -81,7 +81,7 @@ func NewApplicationLayerStateMachine(localLog zerolog.Logger, 
address string, vl
        }
 
        if LogTestNetwork {
-               a.log.Debug().Stringer("address", a.address).Msg("address")
+               a.log.Debug().Interface("address", a.address).Msg("address")
        }
 
        // continue with initialization
@@ -144,7 +144,7 @@ func NewApplicationLayerStateMachine(localLog 
zerolog.Logger, address string, vl
                return nil, errors.Wrap(err, "error creating node")
        }
        if LogTestNetwork {
-               a.log.Debug().Stringer("node", a.node).Msg("node")
+               a.log.Debug().Interface("node", a.node).Msg("node")
        }
 
        //  bind the stack to the local network
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NPDUCodec.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NPDUCodec.go
index f94cdc06c0..4b3a6784b2 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NPDUCodec.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NPDUCodec.go
@@ -75,7 +75,7 @@ func (n *NPDUCodec) Indication(args Args, kwArgs KWArgs) 
error {
        if err := xpdu.Encode(ypdu); err != nil {
                return errors.Wrap(err, "error decoding xpdu")
        }
-       n.log.Debug().Stringer("ypdu", ypdu).Msg("encoded")
+       n.log.Debug().Interface("ypdu", ypdu).Msg("encoded")
 
        // send it downstream
        return n.Request(NA(ypdu), NoKWArgs())
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NetworkLayerStateMachine.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NetworkLayerStateMachine.go
index 7cd2c64f95..752b9f6d2e 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NetworkLayerStateMachine.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_NetworkLayerStateMachine.go
@@ -62,7 +62,7 @@ func NewNetworkLayerStateMachine(localLog zerolog.Logger, 
address string, vlan *
                return nil, errors.Wrap(err, "error creating codec")
        }
        if LogTestNetwork {
-               n.log.Debug().Stringer("codec", n.codec).Msg("codec")
+               n.log.Debug().Interface("codec", n.codec).Msg("codec")
        }
 
        // create a node, added to the network
@@ -71,7 +71,7 @@ func NewNetworkLayerStateMachine(localLog zerolog.Logger, 
address string, vlan *
                return nil, errors.Wrap(err, "error creating node")
        }
        if LogTestNetwork {
-               n.log.Debug().Stringer("node", n.node).Msg("node")
+               n.log.Debug().Interface("node", n.node).Msg("node")
        }
 
        // bind this to the node
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_RouterNode.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_RouterNode.go
index e756f833c1..2e3f6ce454 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_RouterNode.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_RouterNode.go
@@ -63,7 +63,7 @@ func NewRouterNode(localLog zerolog.Logger) (*RouterNode, 
error) {
 }
 
 func (r *RouterNode) AddNetwork(address string, vlan *Network, net uint16) 
error {
-       r.log.Debug().Str("address", address).Stringer("vlan", 
vlan).Uint16("net", net).Msg("AddNetwork")
+       r.log.Debug().Interface("address", address).Stringer("vlan", 
vlan).Uint16("net", net).Msg("AddNetwork")
 
        // convert the address to an Address
        addr, err := NewAddress(NA(address))
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_SnifferStateMachine.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_SnifferStateMachine.go
index 1de82b24bf..1bfa916e5b 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_SnifferStateMachine.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers_SnifferStateMachine.go
@@ -61,7 +61,7 @@ func NewSnifferStateMachine(localLog zerolog.Logger, address 
string, vlan *Netwo
                return nil, errors.Wrap(err, "error creating node")
        }
        if LogTestNetwork {
-               s.log.Debug().Stringer("node", s.node).Msg("node")
+               s.log.Debug().Interface("node", s.node).Msg("node")
        }
 
        // bind the stack together
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_1_test.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_1_test.go
index 341d578491..9d4474f505 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_1_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_1_test.go
@@ -128,7 +128,7 @@ func (t *TNetwork1) Run(timeLimit time.Duration) {
        RunTimeMachine(t.log, timeLimit, time.Time{})
        t.log.Trace().Msg("time machine finished")
        for _, machine := range t.StateMachineGroup.GetStateMachines() {
-               t.log.Debug().Stringer("machine", 
machine).Stringers("transactionLog", 
ToStringers(machine.GetTransactionLog())).Msg("Machine:")
+               t.log.Debug().Interface("machine", 
machine).Interface("transactionLog", 
ToStringers(machine.GetTransactionLog())).Msg("Machine:")
        }
 
        // check for success
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_2_test.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_2_test.go
index 103c7210b8..b431add72a 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_2_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_2_test.go
@@ -138,7 +138,7 @@ func (t *TNetwork2) Run(timeLimit time.Duration) {
        RunTimeMachine(t.log, timeLimit, time.Time{})
        t.log.Trace().Msg("time machine finished")
        for _, machine := range t.StateMachineGroup.GetStateMachines() {
-               t.log.Debug().Stringer("machine", 
machine).Stringers("transactionLog", 
ToStringers(machine.GetTransactionLog())).Msg("Machine:")
+               t.log.Debug().Interface("machine", 
machine).Interface("transactionLog", 
ToStringers(machine.GetTransactionLog())).Msg("Machine:")
        }
 
        // check for success
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_3_test.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_3_test.go
index 038f92c172..f2178d6c60 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_3_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_3_test.go
@@ -120,7 +120,7 @@ func (t *TNetwork3) Run(timeLimit time.Duration) {
        RunTimeMachine(t.log, timeLimit, time.Time{})
        t.log.Trace().Msg("time machine finished")
        for _, machine := range t.StateMachineGroup.GetStateMachines() {
-               t.log.Debug().Stringer("machine", 
machine).Stringers("transactionLog", 
ToStringers(machine.GetTransactionLog())).Msg("Machine:")
+               t.log.Debug().Interface("machine", 
machine).Interface("transactionLog", 
ToStringers(machine.GetTransactionLog())).Msg("Machine:")
        }
 
        // check for success
diff --git a/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/helpers.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/helpers.go
index c68031f077..567369cd37 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/helpers.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/helpers.go
@@ -72,7 +72,7 @@ func (n *NPDUCodec) Indication(args Args, kwArgs KWArgs) 
error {
        if err := xpdu.Encode(ypdu); err != nil {
                return errors.Wrap(err, "error decoding xpdu")
        }
-       n.log.Debug().Stringer("ypdu", ypdu).Msg("encoded")
+       n.log.Debug().Interface("ypdu", ypdu).Msg("encoded")
 
        // send it downstream
        return n.Request(NA(ypdu), NoKWArgs())
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_segmentation/test_1_test.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_segmentation/test_1_test.go
index 96cf9d8e32..cd823cac24 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_segmentation/test_1_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_segmentation/test_1_test.go
@@ -134,7 +134,7 @@ func (a *ApplicationNetwork) Run(timeLimit time.Duration) 
error {
        if a.log.Debug().Enabled() {
                a.log.Debug().Msg("time machine finished")
                for _, machine := range a.GetStateMachines() {
-                       a.log.Debug().Stringer("machine", 
machine).Stringers("entries", 
ToStringers(machine.GetTransactionLog())).Msg("machine")
+                       a.log.Debug().Interface("machine", 
machine).Stringers("entries", 
ToStringers(machine.GetTransactionLog())).Msg("machine")
                }
 
                a.trafficLog.Dump(a._debug)
@@ -182,7 +182,7 @@ func NewSnifferNode(localLog zerolog.Logger, vlan *Network) 
(*SnifferNode, error
        if err != nil {
                return nil, errors.Wrap(err, "error creating node")
        }
-       s.log.Debug().Stringer("node", s.node).Msg("node")
+       s.log.Debug().Interface("node", s.node).Msg("node")
 
        // bind the node
        err = Bind(s.log, s, s.node)
@@ -206,7 +206,7 @@ func (s *SnifferNode) Confirmation(args Args, kwArgs 
KWArgs) error {
 
        // filter out network layer traffic if there is any, probably not
        if nlm := npdu.GetNlm(); nlm != nil {
-               s.log.Debug().Stringer("nlm", nlm).Msg("network message")
+               s.log.Debug().Interface("nlm", nlm).Msg("network message")
                return nil
        }
 
@@ -262,7 +262,7 @@ func NewApplicationStateMachine(localLog zerolog.Logger, 
localDevice LocalDevice
        if err != nil {
                return nil, errors.Wrap(err, "error creating address")
        }
-       a.log.Debug().Stringer("address", a.address).Msg("address")
+       a.log.Debug().Interface("address", a.address).Msg("address")
 
        // continue with initialization
        a.Application, err = NewApplication(a.log, Combine(optionsForParent, 
WithApplicationLocalDeviceObject(localDevice))...)
diff --git a/plc4go/internal/bacnetip/bacgopes/tests/test_service/helpers.go 
b/plc4go/internal/bacnetip/bacgopes/tests/test_service/helpers.go
index a459eed923..ba03e890ad 100644
--- a/plc4go/internal/bacnetip/bacgopes/tests/test_service/helpers.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_service/helpers.go
@@ -159,7 +159,7 @@ func (a *ApplicationNetwork) Run(timeLimit time.Duration) 
error {
        if a.log.Debug().Enabled() {
                a.log.Debug().Msg("time machine finished")
                for _, machine := range a.GetStateMachines() {
-                       a.log.Debug().Stringer("machine", 
machine).Stringers("entries", 
ToStringers(machine.GetTransactionLog())).Msg("machine")
+                       a.log.Debug().Interface("machine", 
machine).Stringers("entries", 
ToStringers(machine.GetTransactionLog())).Msg("machine")
                }
 
                a.trafficLog.Dump(a._debug)
@@ -218,7 +218,7 @@ func NewSnifferNode(localLog zerolog.Logger, vlan *Network) 
(*SnifferNode, error
        if err != nil {
                return nil, errors.Wrap(err, "error creating node")
        }
-       s.log.Debug().Stringer("node", s.node).Msg("node")
+       s.log.Debug().Interface("node", s.node).Msg("node")
 
        // bind the node
        err = Bind(s.log, s, s.node)
@@ -242,7 +242,7 @@ func (s *SnifferNode) Confirmation(args Args, kwArgs 
KWArgs) error {
 
        // filter out network layer traffic if there is any, probably not
        if nlm := npdu.GetNlm(); nlm != nil {
-               s.log.Debug().Stringer("nlm", nlm).Msg("network message")
+               s.log.Debug().Interface("nlm", nlm).Msg("network message")
                return nil
        }
 
@@ -304,7 +304,7 @@ func NewSnifferStateMachine(localLog zerolog.Logger, vlan 
*Network, options ...O
        if err != nil {
                return nil, errors.Wrap(err, "error creating node")
        }
-       s.log.Debug().Stringer("node", s.node).Msg("node")
+       s.log.Debug().Interface("node", s.node).Msg("node")
 
        // bind the node
        err = Bind(s.log, s, s.node)
@@ -328,7 +328,7 @@ func (s *SnifferStateMachine) Confirmation(args Args, 
kwArgs KWArgs) error {
 
        // filter out network layer traffic if there is any, probably not
        if nlm := npdu.GetNlm(); nlm != nil {
-               s.log.Debug().Stringer("nlm", nlm).Msg("network message")
+               s.log.Debug().Interface("nlm", nlm).Msg("network message")
                return nil
        }
 
@@ -384,7 +384,7 @@ func NewApplicationStateMachine(localLog zerolog.Logger, 
localDevice LocalDevice
        if err != nil {
                return nil, errors.Wrap(err, "error creating address")
        }
-       a.log.Debug().Stringer("address", a.address).Msg("address")
+       a.log.Debug().Interface("address", a.address).Msg("address")
 
        // continue with initialization
        a.ApplicationIOController, err = NewApplicationIOController(a.log, 
Combine(optionsForParent, WithApplicationLocalDeviceObject(localDevice))...)
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/test_utilities/test_state_machine_test.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/test_utilities/test_state_machine_test.go
index 1225e4bb3c..749e9d7be1 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/test_utilities/test_state_machine_test.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/test_utilities/test_state_machine_test.go
@@ -130,7 +130,7 @@ func (t TPDU) Serialize() ([]byte, error) {
 }
 
 func (t TPDU) SerializeWithWriteBuffer(ctx context.Context, writeBuffer 
utils.WriteBuffer) error {
-       panic("implement me")
+       return nil
 }
 
 func (t TPDU) GetLengthInBytes(ctx context.Context) uint16 {
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/time_machine/time_machine_TimeMachine.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/time_machine/time_machine_TimeMachine.go
index 2c6f40d62f..fd70824bae 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/time_machine/time_machine_TimeMachine.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/time_machine/time_machine_TimeMachine.go
@@ -119,7 +119,7 @@ func (t *TimeMachine) InstallTask(task TaskRequirements) {
        if _debug != nil {
                _debug("install_task @ %r: %r @ %r", t.currentTime, task, 
task.GetTaskTime())
        }
-       t.log.Debug().Time("currentTime", t.currentTime).Stringer("task", 
task).Msg("InstallTask")
+       t.log.Debug().Time("currentTime", t.currentTime).Interface("task", 
task).Msg("InstallTask")
        t.TaskManager.InstallTask(task)
 }
 
@@ -127,7 +127,7 @@ func (t *TimeMachine) SuspendTask(task TaskRequirements) {
        if _debug != nil {
                _debug("suspend_task @ %r: %r", t.currentTime, task)
        }
-       t.log.Debug().Time("currentTime", t.currentTime).Stringer("task", 
task).Msg("SuspendTask")
+       t.log.Debug().Time("currentTime", t.currentTime).Interface("task", 
task).Msg("SuspendTask")
        t.TaskManager.SuspendTask(task)
 }
 
@@ -135,7 +135,7 @@ func (t *TimeMachine) ResumeTask(task TaskRequirements) {
        if _debug != nil {
                _debug("resume_task @ %r: %r", t.currentTime, task)
        }
-       t.log.Debug().Time("currentTime", t.currentTime).Stringer("task", 
task).Msg("ResumeTask")
+       t.log.Debug().Time("currentTime", t.currentTime).Interface("task", 
task).Msg("ResumeTask")
        t.TaskManager.ResumeTask(task)
 }
 
@@ -196,7 +196,7 @@ func (t *TimeMachine) MoreToDo() bool {
        if _debug != nil {
                _debug("    - task: %r", task)
        }
-       t.log.Debug().Stringer("task", task).Msg("task")
+       t.log.Debug().Interface("task", task).Msg("task")
        return true
 }
 
@@ -248,7 +248,7 @@ func (t *TimeMachine) GetNextTask() (TaskRequirements, 
*time.Duration) {
                        if _debug != nil {
                                _debug("    - when, task: %r, %s", 
task.GetTaskTime(), task)
                        }
-                       t.log.Debug().Stringer("task", task).Msg("when, task")
+                       t.log.Debug().Interface("task", task).Msg("when, task")
 
                        // mark that it is no longer scheduled
                        task.SetIsScheduled(false)
@@ -270,7 +270,7 @@ func (t *TimeMachine) ProcessTask(task TaskRequirements) {
        if _debug != nil {
                _debug("process_task @ %r: %r", t.currentTime, task)
        }
-       t.log.Debug().Time("currentTime", t.currentTime).Stringer("task", 
task).Msg("ProcessTask")
+       t.log.Debug().Time("currentTime", t.currentTime).Interface("task", 
task).Msg("ProcessTask")
        t.TaskManager.ProcessTask(task)
 }
 
diff --git 
a/plc4go/internal/bacnetip/bacgopes/tests/trapped_classes/trapped_classes_Trapper.go
 
b/plc4go/internal/bacnetip/bacgopes/tests/trapped_classes/trapped_classes_Trapper.go
index 2cfc8643f9..9dbb73f251 100644
--- 
a/plc4go/internal/bacnetip/bacgopes/tests/trapped_classes/trapped_classes_Trapper.go
+++ 
b/plc4go/internal/bacnetip/bacgopes/tests/trapped_classes/trapped_classes_Trapper.go
@@ -78,7 +78,7 @@ func (t *Trapper) BeforeSend(pdu PDU) {
        if _debug != nil {
                _debug("before_send %r", pdu)
        }
-       t.log.Debug().Stringer("pdu", pdu).Msg("BeforeSend")
+       t.log.Debug().Interface("pdu", pdu).Msg("BeforeSend")
        //keep a copy
        t.beforeSendPdu = pdu
 
@@ -95,7 +95,7 @@ func (t *Trapper) AfterSend(pdu PDU) {
        if _debug != nil {
                _debug("after_send %r", pdu)
        }
-       t.log.Debug().Stringer("pdu", pdu).Msg("AfterSend")
+       t.log.Debug().Interface("pdu", pdu).Msg("AfterSend")
        //keep a copy
        t.afterSendPdu = pdu
 
@@ -112,7 +112,7 @@ func (t *Trapper) BeforeReceive(pdu PDU) {
        if _debug != nil {
                _debug("before_receive %r", pdu)
        }
-       t.log.Debug().Stringer("pdu", pdu).Msg("BeforeReceive")
+       t.log.Debug().Interface("pdu", pdu).Msg("BeforeReceive")
        //keep a copy
        t.beforeReceivePdu = pdu
 
@@ -129,7 +129,7 @@ func (t *Trapper) AfterReceive(pdu PDU) {
        if _debug != nil {
                _debug("after_receive %r", pdu)
        }
-       t.log.Debug().Stringer("pdu", pdu).Msg("AfterReceive")
+       t.log.Debug().Interface("pdu", pdu).Msg("AfterReceive")
        //keep a copy
        t.afterReceivePdu = pdu
 
@@ -146,7 +146,7 @@ func (t *Trapper) UnexpectedReceive(pdu PDU) {
        if _debug != nil {
                _debug("unexpected_receive %r", pdu)
        }
-       t.log.Debug().Stringer("pdu", pdu).Msg("UnexpectedReceive")
+       t.log.Debug().Interface("pdu", pdu).Msg("UnexpectedReceive")
        //keep a copy
        t.unexpectedReceivePdu = pdu
 
diff --git a/plc4go/internal/bacnetip/bacgopes/udp/udp_UDPDirector.go 
b/plc4go/internal/bacnetip/bacgopes/udp/udp_UDPDirector.go
index 8bcfec611d..db297e718a 100644
--- a/plc4go/internal/bacnetip/bacgopes/udp/udp_UDPDirector.go
+++ b/plc4go/internal/bacnetip/bacgopes/udp/udp_UDPDirector.go
@@ -141,7 +141,7 @@ func WithUDPDirectorReuse(reuse bool) 
GenericApplier[*UDPDirector] {
 
 // AddActor adds an actor when a new one is connected
 func (d *UDPDirector) AddActor(actor *UDPActor) {
-       d.log.Debug().Stringer("actor", actor).Msg("AddActor %v")
+       d.log.Debug().Interface("actor", actor).Msg("AddActor %v")
 
        d.peers[actor.peer] = actor
 
@@ -155,7 +155,7 @@ func (d *UDPDirector) AddActor(actor *UDPActor) {
 
 // DelActor removes an actor when the socket is closed.
 func (d *UDPDirector) DelActor(actor *UDPActor) {
-       d.log.Debug().Stringer("actor", actor).Msg("DelActor")
+       d.log.Debug().Interface("actor", actor).Msg("DelActor")
 
        delete(d.peers, actor.peer)
 
@@ -190,7 +190,7 @@ func (d *UDPDirector) readable() {
 
 func (d *UDPDirector) handleRead() {
        ctx := context.TODO()
-       d.log.Debug().Stringer("address", &d.address).Msg("handleRead")
+       d.log.Debug().Interface("address", &d.address).Msg("handleRead")
 
        readBytes := make([]byte, 1500) // TODO: check if that is sufficient
        var sourceAddr *net.UDPAddr
@@ -278,7 +278,7 @@ func (d *UDPDirector) Indication(args Args, kwArgs KWArgs) 
error {
 
 // _response Incoming datagrams are routed through an actor.
 func (d *UDPDirector) _response(pdu PDU) error {
-       d.log.Debug().Stringer("pdu", pdu).Msg("_response")
+       d.log.Debug().Interface("pdu", pdu).Msg("_response")
 
        // get the destination
        addr := pdu.GetPDUSource()
diff --git a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPNetwork.go 
b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPNetwork.go
index ef2f2446d3..809acc9244 100644
--- a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPNetwork.go
@@ -51,7 +51,7 @@ func (n *IPNetwork) AddNode(node NetworkNode) {
        if _debug != nil {
                _debug("add_node %r", node)
        }
-       n.log.Debug().Stringer("node", node).Msg("Adding node")
+       n.log.Debug().Interface("node", node).Msg("Adding node")
 
        ipNode := node.(*IPNode)
 
diff --git a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouter.go 
b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouter.go
index 954ba6cd04..4b35705516 100644
--- a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouter.go
+++ b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouter.go
@@ -46,7 +46,7 @@ func (n *IPRouter) AddNetwork(addr *Address, lan *IPNetwork) {
        if _debug != nil {
                _debug("add_network %r %r", addr, lan)
        }
-       n.log.Debug().Stringer("addr", addr).Stringer("lan", lan).Msg("adding 
network")
+       n.log.Debug().Interface("addr", addr).Interface("lan", lan).Msg("adding 
network")
 
        node, err := NewIPRouterNode(n.log, n, addr, lan)
        if err != nil {
@@ -56,7 +56,7 @@ func (n *IPRouter) AddNetwork(addr *Address, lan *IPNetwork) {
        if _debug != nil {
                _debug("    - node: %r", node)
        }
-       n.log.Debug().Stringer("node", node).Msg("node")
+       n.log.Debug().Interface("node", node).Msg("node")
 
        n.nodes = append(n.nodes, node)
 }
@@ -65,7 +65,7 @@ func (n *IPRouter) ProcessPDU(node *IPRouterNode, pdu PDU) {
        if _debug != nil {
                _debug("process_pdu %r %r", node, pdu)
        }
-       n.log.Debug().Stringer("node", node).Stringer("pdu", 
pdu).Msg("processing PDU")
+       n.log.Debug().Interface("node", node).Interface("pdu", 
pdu).Msg("processing PDU")
 
        // unpack the address part of the destination
        addrstr := *pdu.GetPDUDestination().AddrIP //TODO: check if this is the 
right way here.
@@ -82,7 +82,7 @@ func (n *IPRouter) ProcessPDU(node *IPRouterNode, pdu PDU) {
                                if _debug != nil {
                                        _debug("    - inode: %r", inode)
                                }
-                               n.log.Debug().Stringer("inode", 
inode).Msg("inode")
+                               n.log.Debug().Interface("inode", 
inode).Msg("inode")
                                if err := inode.ProcessPDU(pdu); err != nil {
                                        n.log.Debug().Err(err).Msg("error 
processing inode")
                                }
diff --git a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouterNode.go 
b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouterNode.go
index cedb803cdd..30538a57ff 100644
--- a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouterNode.go
+++ b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_IPRouterNode.go
@@ -86,7 +86,7 @@ func (n *IPRouterNode) Confirmation(args Args, kwArgs KWArgs) 
error {
        if _debug != nil {
                _debug("confirmation %r", pdu)
        }
-       n.log.Debug().Stringer("pdu", pdu).Msg("confirmation")
+       n.log.Debug().Interface("pdu", pdu).Msg("confirmation")
        n.router.ProcessPDU(n, pdu)
        return nil
 }
@@ -95,7 +95,7 @@ func (n *IPRouterNode) ProcessPDU(pdu PDU) error {
        if _debug != nil {
                _debug("process_pdu %r", pdu)
        }
-       n.log.Debug().Stringer("pdu", pdu).Msg("ProcessPDU")
+       n.log.Debug().Interface("pdu", pdu).Msg("ProcessPDU")
        return n.Request(NA(pdu), NoKWArgs())
 }
 
diff --git a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Network.go 
b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Network.go
index a54acccb2f..a86444154d 100644
--- a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Network.go
+++ b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Network.go
@@ -91,7 +91,7 @@ func (n *Network) AddNode(node NetworkNode) {
        if _debug != nil {
                _debug("add_node %r", node)
        }
-       n.log.Debug().Stringer("node", node).Msg("Adding node")
+       n.log.Debug().Interface("node", node).Msg("Adding node")
        n.nodes = append(n.nodes, node)
        node.setLan(n)
 
@@ -106,7 +106,7 @@ func (n *Network) RemoveNode(node NetworkNode) {
        if _debug != nil {
                _debug("remove_node %r", node)
        }
-       n.log.Debug().Stringer("node", node).Msg("Remove node")
+       n.log.Debug().Interface("node", node).Msg("Remove node")
        for i, _node := range n.nodes {
                if _node == node {
                        n.nodes = append(n.nodes[:i], n.nodes[i+1:]...)
@@ -120,7 +120,7 @@ func (n *Network) ProcessPDU(pdu PDU) error {
        if _debug != nil {
                _debug("process_pdu(%s) %r", n.name, pdu)
        }
-       n.log.Debug().Stringer("pdu", pdu).Msg("processing pdu")
+       n.log.Debug().Interface("pdu", pdu).Msg("processing pdu")
 
        // if there is a traffic log call it with the network name and PDU
        if tl := n.trafficLogger; tl != nil {
@@ -148,7 +148,7 @@ func (n *Network) ProcessPDU(pdu PDU) error {
                                if _debug != nil {
                                        _debug("    - match: %r", node)
                                }
-                               n.log.Debug().Stringer("node", 
node).Msg("match")
+                               n.log.Debug().Interface("node", 
node).Msg("match")
                                if err := node.Response(NA(DeepCopy[PDU](pdu)), 
NoKWArgs()); err != nil {
                                        n.log.Debug().Err(err).Msg("error 
processing PDU")
                                }
@@ -164,7 +164,7 @@ func (n *Network) ProcessPDU(pdu PDU) error {
                                if _debug != nil {
                                        _debug("    - match: %r", node)
                                }
-                               n.log.Debug().Stringer("node", 
node).Msg("match")
+                               n.log.Debug().Interface("node", 
node).Msg("match")
                                if err := node.Response(NA(DeepCopy[PDU](pdu)), 
NoKWArgs()); err != nil {
                                        n.log.Debug().Err(err).Msg("error 
processing PDU")
                                }
diff --git a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Node.go 
b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Node.go
index 4b5090a87a..c6d6f804e8 100644
--- a/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Node.go
+++ b/plc4go/internal/bacnetip/bacgopes/vlan/vlan_Node.go
@@ -130,7 +130,7 @@ func (n *Node) bind(lan NodeNetworkReference) {
        if _debug != nil {
                _debug("bind %r", lan)
        }
-       n.log.Debug().Stringer("lan", lan).Msg("binding lan")
+       n.log.Debug().Interface("lan", lan).Msg("binding lan")
        lan.AddNode(n)
 }
 
diff --git a/plc4go/internal/cbus/Browser.go b/plc4go/internal/cbus/Browser.go
index b190372d3a..44bbeeeef4 100644
--- a/plc4go/internal/cbus/Browser.go
+++ b/plc4go/internal/cbus/Browser.go
@@ -84,7 +84,7 @@ func (m *Browser) browseUnitInfo(ctx context.Context, 
interceptor func(result ap
        }
 unitLoop:
        for _, unit := range units {
-               unitLog := m.log.With().Stringer("unit", unit).Logger()
+               unitLog := m.log.With().Interface("unit", unit).Logger()
                unitLog.Trace().Msg("checking unit")
                if err := ctx.Err(); err != nil {
                        unitLog.Info().Err(err).Msg("Aborting scan at unit")
@@ -128,7 +128,7 @@ unitLoop:
                                Dur("timeout", timeout).
                                Msg("Executing readRequest with timeout")
                        requestResult := <-readRequest.Execute(timeoutCtx)
-                       m.log.Trace().Stringer("requestResult", 
requestResult).Msg("got a response")
+                       m.log.Trace().Interface("requestResult", 
requestResult).Msg("got a response")
                        timeoutCancel()
                        if err := requestResult.GetErr(); err != nil {
                                if allUnits || allAttributes {
@@ -244,14 +244,14 @@ func (m *Browser) getInstalledUnitAddressBytes(ctx 
context.Context) (map[byte]an
        blockOffset176ReceivedChan := make(chan any, 100) // We only expect 
one, but we make it a bit bigger to no clog up
        result := make(map[byte]any)
        plcConsumerRegistration := subscriptionHandle.Register(func(event 
apiModel.PlcSubscriptionEvent) {
-               m.log.Trace().Stringer("event", event).Msg("handling event")
+               m.log.Trace().Interface("event", event).Msg("handling event")
                if responseCode := 
event.GetResponseCode("installationMMIMonitor"); responseCode != 
apiModel.PlcResponseCode_OK {
-                       m.log.Warn().Stringer("event", event).Msg("Ignoring")
+                       m.log.Warn().Interface("event", event).Msg("Ignoring")
                        return
                }
                rootValue := event.GetValue("installationMMIMonitor")
                if !rootValue.IsStruct() {
-                       m.log.Warn().Stringer("rootValue", 
rootValue).Msg("Ignoring rootValue should be a struct")
+                       m.log.Warn().Interface("rootValue", 
rootValue).Msg("Ignoring rootValue should be a struct")
                        return
                }
                rootStruct := rootValue.GetStruct()
@@ -349,7 +349,7 @@ func (m *Browser) getInstalledUnitAddressBytes(ctx 
context.Context) (map[byte]an
                        }
                }()
                defer readCtxCancel()
-               m.log.Debug().Stringer("readRequest", readRequest).Msg("sending 
read request")
+               m.log.Debug().Interface("readRequest", 
readRequest).Msg("sending read request")
                readRequestResult := <-readRequest.Execute(readCtx)
                if err := readRequestResult.GetErr(); err != nil {
                        m.log.Warn().Err(err).Msg("Error reading the mmi")
@@ -359,7 +359,7 @@ func (m *Browser) getInstalledUnitAddressBytes(ctx 
context.Context) (map[byte]an
                if responseCode := response.GetResponseCode("installationMMI"); 
responseCode == apiModel.PlcResponseCode_OK {
                        rootValue := response.GetValue("installationMMI")
                        if !rootValue.IsStruct() {
-                               m.log.Warn().Err(err).Stringer("rootValue", 
rootValue).Msg("%v should be a struct")
+                               m.log.Warn().Err(err).Interface("rootValue", 
rootValue).Msg("%v should be a struct")
                                return
                        }
                        rootStruct := rootValue.GetStruct()
diff --git a/plc4go/internal/cbus/Driver.go b/plc4go/internal/cbus/Driver.go
index dfe9cd87b9..ae0c7745a3 100644
--- a/plc4go/internal/cbus/Driver.go
+++ b/plc4go/internal/cbus/Driver.go
@@ -100,7 +100,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        driverContext := NewDriverContext(configuration)
        driverContext.awaitSetupComplete = d.awaitSetupComplete
diff --git a/plc4go/internal/cbus/MessageCodec.go 
b/plc4go/internal/cbus/MessageCodec.go
index 7de6aa4d6c..bfe8b17bd2 100644
--- a/plc4go/internal/cbus/MessageCodec.go
+++ b/plc4go/internal/cbus/MessageCodec.go
@@ -99,7 +99,7 @@ func (m *MessageCodec) Disconnect() error {
 }
 
 func (m *MessageCodec) Send(ctx context.Context, message spi.Message) error {
-       m.log.Trace().Stringer("message", message).Msg("Sending message")
+       m.log.Trace().Interface("message", message).Msg("Sending message")
        // Cast the message to the correct type of struct
        cbusMessage, ok := message.(readWriteModel.CBusMessage)
        if !ok {
@@ -108,7 +108,7 @@ func (m *MessageCodec) Send(ctx context.Context, message 
spi.Message) error {
 
        // Set the right request context
        m.requestContext = CreateRequestContext(cbusMessage)
-       m.log.Debug().Stringer("requestContext", m.requestContext).Msg("Created 
request context")
+       m.log.Debug().Interface("requestContext", 
m.requestContext).Msg("Created request context")
 
        // Serialize the request
        theBytes, err := cbusMessage.Serialize()
diff --git a/plc4go/internal/cbus/Reader.go b/plc4go/internal/cbus/Reader.go
index ffd0ec1aab..ae000b785b 100644
--- a/plc4go/internal/cbus/Reader.go
+++ b/plc4go/internal/cbus/Reader.go
@@ -130,7 +130,7 @@ func (m *Reader) createMessageTransactionAndWait(ctx 
context.Context, messageToS
        transaction.Submit(func(transactionContext context.Context, transaction 
transactions.RequestTransaction) {
                ctx, cancel := context.WithCancel(ctx)
                context.AfterFunc(transactionContext, cancel)
-               m.log.Trace().Stringer("transaction", 
transaction).Msg("Transaction getting handled")
+               m.log.Trace().Interface("transaction", 
transaction).Msg("Transaction getting handled")
                m.sendMessageOverTheWire(ctx, transaction, messageToSend, 
addResponseCode, tagName, addPlcValue)
        })
        if err := transaction.AwaitCompletion(ctx); err != nil {
diff --git a/plc4go/internal/cbus/Subscriber.go 
b/plc4go/internal/cbus/Subscriber.go
index d559322679..39ac5066a4 100644
--- a/plc4go/internal/cbus/Subscriber.go
+++ b/plc4go/internal/cbus/Subscriber.go
@@ -122,7 +122,7 @@ func (s *Subscriber) Unsubscribe(ctx context.Context, 
unsubscriptionRequest apiM
 }
 
 func (s *Subscriber) handleMonitoredMMI(calReply readWriteModel.CALReply) bool 
{
-       s.log.Debug().Stringer("calReply", calReply).Msg("handling")
+       s.log.Debug().Interface("calReply", calReply).Msg("handling")
        var unitAddressString string
        switch calReply := calReply.(type) {
        case readWriteModel.CALReplyLong:
@@ -150,7 +150,7 @@ func (s *Subscriber) handleMonitoredMMI(calReply 
readWriteModel.CALReply) bool {
                        Interface("consumer", consumer).
                        Msg("Checking with registration and consumer")
                for _, subscriptionHandle := range 
registration.GetSubscriptionHandles() {
-                       s.log.Debug().Stringer("subscriptionHandle", 
subscriptionHandle).Msg("offering to")
+                       s.log.Debug().Interface("subscriptionHandle", 
subscriptionHandle).Msg("offering to")
                        handleHandled := s.offerMMI(unitAddressString, calData, 
subscriptionHandle.(*SubscriptionHandle), consumer)
                        s.log.Debug().Bool("handleHandled", 
handleHandled).Msg("handle handled")
                        handled = handled || handleHandled
diff --git a/plc4go/internal/eip/Driver.go b/plc4go/internal/eip/Driver.go
index 3f6cef5256..99a2c88b9e 100644
--- a/plc4go/internal/eip/Driver.go
+++ b/plc4go/internal/eip/Driver.go
@@ -93,7 +93,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        configuration, err := ParseFromOptions(d.log, driverOptions)
        if err != nil {
diff --git a/plc4go/internal/eip/Reader.go b/plc4go/internal/eip/Reader.go
index b046bec113..5cc4d6c49d 100644
--- a/plc4go/internal/eip/Reader.go
+++ b/plc4go/internal/eip/Reader.go
@@ -122,7 +122,7 @@ func (m *Reader) Read(ctx context.Context, readRequest 
apiModel.PlcReadRequest)
                                        return cipRRData.GetSessionHandle() == 
*m.sessionHandle
                                }, func(message spi.Message) error {
                                        cipRRData := 
message.(readWriteModel.CipRRData)
-                                       m.log.Trace().Stringer("cipRRData", 
cipRRData).Msg("handling")
+                                       m.log.Trace().Interface("cipRRData", 
cipRRData).Msg("handling")
                                        unconnectedDataItem := 
cipRRData.GetTypeIds()[1].(readWriteModel.UnConnectedDataItem)
                                        // Convert the eip response into a 
PLC4X response
                                        m.log.Trace().Msg("convert response to 
PLC4X response")
diff --git a/plc4go/internal/knxnetip/Browser.go 
b/plc4go/internal/knxnetip/Browser.go
index 5a9a391e8e..b333272fb9 100644
--- a/plc4go/internal/knxnetip/Browser.go
+++ b/plc4go/internal/knxnetip/Browser.go
@@ -510,7 +510,7 @@ func (m Browser) executeCommunicationObjectQuery(ctx 
context.Context, query Comm
                readResult = <-rrr
                if 
readResult.GetResponse().GetResponseCode("comObjectTableAddress") == 
apiModel.PlcResponseCode_OK {
                        comObjectTableAddress := 
readResult.GetResponse().GetValue("comObjectTableAddress")
-                       m.log.Info().Stringer("comObjectTableAddress", 
comObjectTableAddress).Msg("Com Object Table Address")
+                       m.log.Info().Interface("comObjectTableAddress", 
comObjectTableAddress).Msg("Com Object Table Address")
                }
        }
 
diff --git a/plc4go/internal/knxnetip/Connection.go 
b/plc4go/internal/knxnetip/Connection.go
index 0fe2108cff..61630f9fc2 100644
--- a/plc4go/internal/knxnetip/Connection.go
+++ b/plc4go/internal/knxnetip/Connection.go
@@ -305,15 +305,15 @@ func (m *Connection) Connect(ctx context.Context) error {
                                        if !ok {
                                                tunnelingResponse, ok := 
incomingMessage.(driverModel.TunnelingResponse)
                                                if ok {
-                                                       
m.log.Warn().Stringer("tunnelingResponse", tunnelingResponse).Msg("Got an 
unhandled TunnelingResponse message")
+                                                       
m.log.Warn().Interface("tunnelingResponse", tunnelingResponse).Msg("Got an 
unhandled TunnelingResponse message")
                                                } else {
-                                                       
m.log.Warn().Stringer("incomingMessage", incomingMessage).Msg("Not a 
TunnelingRequest or TunnelingResponse message")
+                                                       
m.log.Warn().Interface("incomingMessage", incomingMessage).Msg("Not a 
TunnelingRequest or TunnelingResponse message")
                                                }
                                                continue
                                        }
 
                                        if 
tunnelingRequest.GetTunnelingRequestDataBlock().GetCommunicationChannelId() != 
m.CommunicationChannelId {
-                                               
m.log.Warn().Stringer("tunnelingRequest", tunnelingRequest).Msg("Not for this 
connection")
+                                               
m.log.Warn().Interface("tunnelingRequest", tunnelingRequest).Msg("Not for this 
connection")
                                                continue
                                        }
 
diff --git a/plc4go/internal/knxnetip/ConnectionHelper.go 
b/plc4go/internal/knxnetip/ConnectionHelper.go
index 1a4b7d55af..41be8974dc 100644
--- a/plc4go/internal/knxnetip/ConnectionHelper.go
+++ b/plc4go/internal/knxnetip/ConnectionHelper.go
@@ -177,7 +177,7 @@ func (m *Connection) getGroupAddressNumLevels() uint8 {
 func (m *Connection) addSubscriber(subscriber *Subscriber) {
        for _, sub := range m.subscribers {
                if sub == subscriber {
-                       m.log.Debug().Stringer("subscriber", 
subscriber).Msg("Subscriber %v already added")
+                       m.log.Debug().Interface("subscriber", 
subscriber).Msg("Subscriber %v already added")
                        return
                }
        }
diff --git a/plc4go/internal/knxnetip/Discoverer.go 
b/plc4go/internal/knxnetip/Discoverer.go
index ca3a3018b0..d63501e901 100644
--- a/plc4go/internal/knxnetip/Discoverer.go
+++ b/plc4go/internal/knxnetip/Discoverer.go
@@ -202,7 +202,7 @@ func (d *Discoverer) createTransportInstanceDispatcher(ctx 
context.Context, wg *
                        d.log.Debug().Err(err).Msg("Error Connecting")
                        return
                }
-               d.log.Debug().Stringer("transportInstance", 
transportInstance).Msg("Adding transport instance to scan %v")
+               d.log.Debug().Interface("transportInstance", 
transportInstance).Msg("Adding transport instance to scan %v")
                transportInstances <- transportInstance
        }
 }
@@ -211,7 +211,7 @@ func (d *Discoverer) createDeviceScanDispatcher(ctx 
context.Context, udpTranspor
        return func(workerCtx context.Context) {
                ctx, cancel := context.WithCancel(ctx)
                context.AfterFunc(workerCtx, cancel)
-               d.log.Debug().Stringer("udpTransportInstance", 
udpTransportInstance).Msg("Scanning")
+               d.log.Debug().Interface("udpTransportInstance", 
udpTransportInstance).Msg("Scanning")
                // Create a codec for sending and receiving messages.
                codec := NewMessageCodec(
                        udpTransportInstance,
@@ -233,7 +233,7 @@ func (d *Discoverer) createDeviceScanDispatcher(ctx 
context.Context, udpTranspor
                searchRequestMessage := 
driverModel.NewSearchRequest(discoveryEndpoint)
                // Send the search request.
                if err := codec.Send(ctx, searchRequestMessage); err != nil {
-                       d.log.Debug().Err(err).Stringer("searchRequestMessage", 
searchRequestMessage).Msg("Error sending message")
+                       
d.log.Debug().Err(err).Interface("searchRequestMessage", 
searchRequestMessage).Msg("Error sending message")
                        return
                }
                // Keep on reading responses till the timeout is done.
diff --git a/plc4go/internal/knxnetip/Driver.go 
b/plc4go/internal/knxnetip/Driver.go
index 806b8a59fa..ca7de6d105 100644
--- a/plc4go/internal/knxnetip/Driver.go
+++ b/plc4go/internal/knxnetip/Driver.go
@@ -84,7 +84,10 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
                d.GetPlcTagHandler(),
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Trace().Str("transport", 
transportUrl.String()).Stringer("connection", connection).Msg("created new 
connection instance, trying to connect now")
+       d.log.Trace().
+               Str("transport", transportUrl.String()).
+               Interface("connection", connection).
+               Msg("created new connection instance, trying to connect now")
        if err := connection.Connect(ctx); err != nil {
                return nil, errors.Wrap(err, "Error connecting connection")
        }
diff --git a/plc4go/internal/modbus/AsciiDriver.go 
b/plc4go/internal/modbus/AsciiDriver.go
index 1aed22e458..6c6c926df7 100644
--- a/plc4go/internal/modbus/AsciiDriver.go
+++ b/plc4go/internal/modbus/AsciiDriver.go
@@ -101,14 +101,14 @@ func (d *AsciiDriver) GetConnection(ctx context.Context, 
transportUrl url.URL, t
                for {
                        msg := <-defaultChanel
                        adu := msg.(model.ModbusTcpADU)
-                       d.log.Debug().Stringer("adu", adu).Msg("got message in 
the default handler %s\n")
+                       d.log.Debug().Interface("adu", adu).Msg("got message in 
the default handler %s\n")
                }
        })
        codec := NewMessageCodec(
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        // If a unit-identifier was provided in the connection string use this, 
otherwise use the default of 1
        unitIdentifier := uint8(1)
@@ -129,7 +129,7 @@ func (d *AsciiDriver) GetConnection(ctx context.Context, 
transportUrl url.URL, t
                d.GetPlcTagHandler(),
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("connection", connection).Msg("created 
connection, connecting now")
+       d.log.Debug().Interface("connection", connection).Msg("created 
connection, connecting now")
        if err := connection.Connect(ctx); err != nil {
                return nil, errors.Wrap(err, "Error connecting connection")
        }
diff --git a/plc4go/internal/modbus/RtuDriver.go 
b/plc4go/internal/modbus/RtuDriver.go
index 72bc46a5fa..d8ab863acc 100644
--- a/plc4go/internal/modbus/RtuDriver.go
+++ b/plc4go/internal/modbus/RtuDriver.go
@@ -101,14 +101,14 @@ func (d *RtuDriver) GetConnection(ctx context.Context, 
transportUrl url.URL, tra
                for {
                        msg := <-defaultChanel
                        adu := msg.(model.ModbusTcpADU)
-                       d.log.Debug().Stringer("adu", adu).Msg("got message in 
the default handler")
+                       d.log.Debug().Interface("adu", adu).Msg("got message in 
the default handler")
                }
        })
        codec := NewMessageCodec(
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        // If a unit-identifier was provided in the connection string use this, 
otherwise use the default of 1
        unitIdentifier := uint8(1)
@@ -128,7 +128,7 @@ func (d *RtuDriver) GetConnection(ctx context.Context, 
transportUrl url.URL, tra
                d.GetPlcTagHandler(),
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("connection", connection).Msg("created 
connection, connecting now")
+       d.log.Debug().Interface("connection", connection).Msg("created 
connection, connecting now")
        if err := connection.Connect(ctx); err != nil {
                return nil, errors.Wrap(err, "Error connecting connection")
        }
diff --git a/plc4go/internal/modbus/TcpDriver.go 
b/plc4go/internal/modbus/TcpDriver.go
index 7f1be35c11..421a585647 100644
--- a/plc4go/internal/modbus/TcpDriver.go
+++ b/plc4go/internal/modbus/TcpDriver.go
@@ -101,14 +101,14 @@ func (d *TcpDriver) GetConnection(ctx context.Context, 
transportUrl url.URL, tra
                for {
                        msg := <-defaultChanel
                        adu := msg.(model.ModbusTcpADU)
-                       d.log.Debug().Stringer("adu", adu).Msg("got message in 
the default handler")
+                       d.log.Debug().Interface("adu", adu).Msg("got message in 
the default handler")
                }
        })
        codec := NewMessageCodec(
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        // If a unit-identifier was provided in the connection string use this, 
otherwise use the default of 1
        unitIdentifier := uint8(1)
@@ -129,7 +129,7 @@ func (d *TcpDriver) GetConnection(ctx context.Context, 
transportUrl url.URL, tra
                d.GetPlcTagHandler(),
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("connection", connection).Msg("created 
connection, connecting now")
+       d.log.Debug().Interface("connection", connection).Msg("created 
connection, connecting now")
        if err := connection.Connect(ctx); err != nil {
                return nil, errors.Wrap(err, "Error connecting connection")
        }
diff --git a/plc4go/internal/modbus/Writer.go b/plc4go/internal/modbus/Writer.go
index 0ddfb80093..75e336cbce 100644
--- a/plc4go/internal/modbus/Writer.go
+++ b/plc4go/internal/modbus/Writer.go
@@ -195,7 +195,7 @@ func (m *Writer) ToPlc4xWriteResponse(requestAdu 
readWriteModel.ModbusTcpADU, re
                case 
readWriteModel.ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND:
                        responseCodes[tagName] = 
apiModel.PlcResponseCode_REMOTE_ERROR
                default:
-                       m.log.Debug().Stringer("exceptionCode", 
resp.GetExceptionCode()).Msg("Unmapped exception code")
+                       m.log.Debug().Interface("exceptionCode", 
resp.GetExceptionCode()).Msg("Unmapped exception code")
                }
        default:
                return nil, errors.Errorf("unsupported response type %T", resp)
diff --git a/plc4go/internal/opcua/Connection.go 
b/plc4go/internal/opcua/Connection.go
index 3b0fa9e9b9..7012b667bc 100644
--- a/plc4go/internal/opcua/Connection.go
+++ b/plc4go/internal/opcua/Connection.go
@@ -202,7 +202,7 @@ func (c *Connection) UnsubscriptionRequestBuilder() 
apiModel.PlcUnsubscriptionRe
 func (c *Connection) addSubscriber(subscriber *Subscriber) {
        for _, sub := range c.subscribers {
                if sub == subscriber {
-                       c.log.Debug().Stringer("subscriber", 
subscriber).Msg("Subscriber already added")
+                       c.log.Debug().Interface("subscriber", 
subscriber).Msg("Subscriber already added")
                        return
                }
        }
diff --git a/plc4go/internal/opcua/Driver.go b/plc4go/internal/opcua/Driver.go
index 7dfb21ebed..51231dd750 100644
--- a/plc4go/internal/opcua/Driver.go
+++ b/plc4go/internal/opcua/Driver.go
@@ -133,7 +133,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
                portAddition += ":" + transportPort
        }
        configuration.Endpoint = "opc." + transportCode + "://" + transportHost 
+ portAddition + "" + transportEndpoint
-       d.log.Debug().Stringer("configuration", &configuration).Msg("working 
with configuration")
+       d.log.Debug().Interface("configuration", &configuration).Msg("working 
with configuration")
 
        if securityPolicy := configuration.SecurityPolicy; securityPolicy != "" 
&& securityPolicy != "None" {
                d.log.Trace().Str("securityPolicy", 
securityPolicy).Msg("working with security policy")
@@ -152,7 +152,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        // Create the new connection
        connection := NewConnection(
diff --git a/plc4go/internal/opcua/MessageCodec.go 
b/plc4go/internal/opcua/MessageCodec.go
index fbfbea9e99..49d54f9e4c 100644
--- a/plc4go/internal/opcua/MessageCodec.go
+++ b/plc4go/internal/opcua/MessageCodec.go
@@ -61,7 +61,7 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
 }
 
 func (m *MessageCodec) Send(ctx context.Context, message spi.Message) error {
-       m.log.Trace().Stringer("message", message).Msg("Sending message")
+       m.log.Trace().Interface("message", message).Msg("Sending message")
        // Cast the message to the correct type of struct
        opcuaApu, ok := message.(readWriteModel.OpcuaAPU)
        if !ok {
@@ -123,6 +123,6 @@ func (m *MessageCodec) Receive(ctx context.Context) 
(spi.Message, error) {
        if err != nil {
                return nil, errors.New("Could not parse pdu")
        }
-       m.log.Debug().Stringer("opcuaAPU", opcuaAPU).Msg("got message")
+       m.log.Debug().Interface("opcuaAPU", opcuaAPU).Msg("got message")
        return opcuaAPU, nil
 }
diff --git a/plc4go/internal/opcua/Reader.go b/plc4go/internal/opcua/Reader.go
index 7238d42441..31a1bf71db 100644
--- a/plc4go/internal/opcua/Reader.go
+++ b/plc4go/internal/opcua/Reader.go
@@ -123,9 +123,9 @@ func (m *Reader) readSync(ctx context.Context, readRequest 
apiModel.PlcReadReque
                } else {
                        if serviceFault, ok := 
extensionObjectDefinition.(readWriteModel.ServiceFault); ok {
                                header := serviceFault.GetResponseHeader()
-                               m.log.Error().Stringer("header", 
header).Msg("Read request ended up with ServiceFault")
+                               m.log.Error().Interface("header", 
header).Msg("Read request ended up with ServiceFault")
                        } else {
-                               
m.log.Error().Stringer("extensionObjectDefinition", 
extensionObjectDefinition).Msg("Remote party returned an error")
+                               
m.log.Error().Interface("extensionObjectDefinition", 
extensionObjectDefinition).Msg("Remote party returned an error")
                        }
 
                        responseCodes := map[string]apiModel.PlcResponseCode{}
diff --git a/plc4go/internal/opcua/SecureChannel.go 
b/plc4go/internal/opcua/SecureChannel.go
index 7ca50655a9..ae2be89df2 100644
--- a/plc4go/internal/opcua/SecureChannel.go
+++ b/plc4go/internal/opcua/SecureChannel.go
@@ -227,7 +227,7 @@ func (s *SecureChannel) submit(ctx context.Context, codec 
*MessageCodec, errorDi
                                opcuaAPU = 
decodedOpcuaAPU.(readWriteModel.OpcuaAPU)
                        }
                        messagePDU := opcuaAPU.GetMessage()
-                       s.log.Trace().Stringer("messagePDU", 
messagePDU).Msg("looking at messagePDU")
+                       s.log.Trace().Interface("messagePDU", 
messagePDU).Msg("looking at messagePDU")
                        opcuaResponse, ok := 
messagePDU.(readWriteModel.OpcuaMessageResponse)
                        if !ok {
                                s.log.Debug().Type("type", message).Msg("Not 
relevant")
@@ -251,7 +251,7 @@ func (s *SecureChannel) submit(ctx context.Context, codec 
*MessageCodec, errorDi
                        opcuaAPU := message.(readWriteModel.OpcuaAPU)
                        opcuaAPU, _ = s.encryptionHandler.decodeMessage(ctx, 
opcuaAPU)
                        messagePDU := opcuaAPU.GetMessage()
-                       s.log.Trace().Stringer("messagePDU", 
messagePDU).Msg("looking at messagePDU")
+                       s.log.Trace().Interface("messagePDU", 
messagePDU).Msg("looking at messagePDU")
                        opcuaResponse := 
messagePDU.(readWriteModel.OpcuaMessageResponse)
                        if opcuaResponse.GetChunk() == 
(readWriteModel.ChunkType_FINAL) {
                                
s.tokenId.Store(opcuaResponse.GetSecurityHeader().GetSecureTokenId())
@@ -259,7 +259,7 @@ func (s *SecureChannel) submit(ctx context.Context, codec 
*MessageCodec, errorDi
 
                                consumer(messageBuffer)
                        } else {
-                               s.log.Warn().Stringer("chunk", 
opcuaResponse.GetChunk()).Msg("Message discarded")
+                               s.log.Warn().Interface("chunk", 
opcuaResponse.GetChunk()).Msg("Message discarded")
                        }
                        return nil
                }, func(err error) error {
@@ -549,13 +549,13 @@ func (s *SecureChannel) onConnectCreateSessionRequest(ctx 
context.Context, conne
                        connection.fireConnectionError(err, errChan)
                        return
                }
-               s.log.Trace().Stringer("extensionObject", 
extensionObject).Msg("looking at message")
+               s.log.Trace().Interface("extensionObject", 
extensionObject).Msg("looking at message")
                if fault, ok := 
extensionObject.GetBody().(readWriteModel.ServiceFault); ok {
                        statusCode := 
fault.GetResponseHeader().(readWriteModel.ResponseHeader).GetServiceResult().GetStatusCode()
                        statusCodeByValue, _ := 
readWriteModel.OpcuaStatusCodeByValue(statusCode)
                        s.log.Error().
                                Uint32("statusCode", statusCode).
-                               Stringer("statusCodeByValue", 
statusCodeByValue).
+                               Interface("statusCodeByValue", 
statusCodeByValue).
                                Msg("Failed to connect to opc ua server for the 
following reason")
                        connection.fireConnectionError(errors.New("service 
fault received"), errChan)
                        return
@@ -665,13 +665,13 @@ func (s *SecureChannel) 
onConnectActivateSessionRequest(ctx context.Context, con
                        s.log.Error().Err(err).Msg("error parsing")
                        return
                }
-               s.log.Trace().Stringer("message", message).Msg("looking at 
message")
+               s.log.Trace().Interface("message", message).Msg("looking at 
message")
                if fault, ok := 
message.GetBody().(readWriteModel.ServiceFault); ok {
                        statusCode := 
fault.GetResponseHeader().(readWriteModel.ResponseHeader).GetServiceResult().GetStatusCode()
                        statusCodeByValue, _ := 
readWriteModel.OpcuaStatusCodeByValue(statusCode)
                        s.log.Error().
                                Uint32("statusCode", statusCode).
-                               Stringer("statusCodeByValue", 
statusCodeByValue).
+                               Interface("statusCodeByValue", 
statusCodeByValue).
                                Msg("Failed to connect to opc ua server for the 
following reason")
                        connection.fireConnectionError(errors.New("service 
fault received"), errChan)
                        return
@@ -760,13 +760,13 @@ func (s *SecureChannel) onDisconnect(ctx context.Context, 
connection *Connection
                        s.log.Error().Err(err).Msg("error parsing")
                        return
                }
-               s.log.Trace().Stringer("message", message).Msg("looking at 
message")
+               s.log.Trace().Interface("message", message).Msg("looking at 
message")
                if fault, ok := 
message.GetBody().(readWriteModel.ServiceFault); ok {
                        statusCode := 
fault.GetResponseHeader().(readWriteModel.ResponseHeader).GetServiceResult().GetStatusCode()
                        statusCodeByValue, _ := 
readWriteModel.OpcuaStatusCodeByValue(statusCode)
                        s.log.Error().
                                Uint32("statusCode", statusCode).
-                               Stringer("statusCodeByValue", 
statusCodeByValue).
+                               Interface("statusCodeByValue", 
statusCodeByValue).
                                Msg("Failed to connect to opc ua server for the 
following reason")
                        return
                }
@@ -851,7 +851,7 @@ func (s *SecureChannel) onDisconnectCloseSecureChannel(ctx 
context.Context, conn
                        opcuaAPU := message.(readWriteModel.OpcuaAPU)
                        messagePDU := opcuaAPU.GetMessage()
                        opcuaMessageResponse := 
messagePDU.(readWriteModel.OpcuaMessageResponse)
-                       s.log.Trace().Stringer("opcuaMessageResponse", 
opcuaMessageResponse).Msg("Got close secure channel response")
+                       s.log.Trace().Interface("opcuaMessageResponse", 
opcuaMessageResponse).Msg("Got close secure channel response")
                        return nil
                }, func(err error) error {
                        s.log.Debug().Err(err).Msg("error submitting")
@@ -903,7 +903,7 @@ func (s *SecureChannel) onDiscover(ctx context.Context, 
codec *MessageCodec) {
                        opcuaAPU := message.(readWriteModel.OpcuaAPU)
                        messagePDU := opcuaAPU.GetMessage()
                        opcuaAcknowledgeResponse := 
messagePDU.(readWriteModel.OpcuaAcknowledgeResponse)
-                       s.log.Trace().Stringer("opcuaAcknowledgeResponse", 
opcuaAcknowledgeResponse).Msg("Got Hello Response Connection Response")
+                       s.log.Trace().Interface("opcuaAcknowledgeResponse", 
opcuaAcknowledgeResponse).Msg("Got Hello Response Connection Response")
                        go s.onDiscoverOpenSecureChannel(ctx, codec, 
opcuaAcknowledgeResponse)
                        return nil
                }, func(err error) error {
@@ -1213,7 +1213,7 @@ func (s *SecureChannel) onDiscoverCloseSecureChannel(ctx 
context.Context, codec
                        opcuaAPU := message.(readWriteModel.OpcuaAPU)
                        messagePDU := opcuaAPU.GetMessage()
                        opcuaMessageResponse := 
messagePDU.(readWriteModel.OpcuaMessageResponse)
-                       s.log.Trace().Stringer("opcuaMessageResponse", 
opcuaMessageResponse).Msg("Got close secure channel response")
+                       s.log.Trace().Interface("opcuaMessageResponse", 
opcuaMessageResponse).Msg("Got close secure channel response")
                        return nil
                }, func(err error) error {
                        s.log.Debug().Err(err).Msg("error submitting")
@@ -1445,7 +1445,7 @@ func (s *SecureChannel) isEndpoint(endpoint 
readWriteModel.EndpointDescription)
        // Split up the connection string into its individual segments.
        matches := utils.GetSubgroupMatches(URI_PATTERN, 
*endpoint.GetEndpointUrl().GetStringValue())
        if len(matches) == 0 {
-               s.log.Error().Stringer("endpoint", endpoint).Msg("Endpoint 
returned from the server doesn't match the format 
'{protocol-code}:({transport-code})?//{transport-host}(:{transport-port})(/{transport-endpoint})'")
+               s.log.Error().Interface("endpoint", endpoint).Msg("Endpoint 
returned from the server doesn't match the format 
'{protocol-code}:({transport-code})?//{transport-host}(:{transport-port})(/{transport-endpoint})'")
                return false
        }
        s.log.Trace().
diff --git a/plc4go/internal/opcua/SubscriptionHandle.go 
b/plc4go/internal/opcua/SubscriptionHandle.go
index 7f1326be7b..86fec7858a 100644
--- a/plc4go/internal/opcua/SubscriptionHandle.go
+++ b/plc4go/internal/opcua/SubscriptionHandle.go
@@ -411,7 +411,7 @@ func (h *SubscriptionHandle) stopSubscriber() {
                                Msg("Subscription ServiceFault returned from 
server with error code, ignoring as it is probably just a result of a Delete 
Subscription Request")
                        return
                }
-               h.log.Debug().Stringer("responseMessage", 
responseMessage).Msg("Received response")
+               h.log.Debug().Interface("responseMessage", 
responseMessage).Msg("Received response")
        }
 
        errorDispatcher := func(err error) {
diff --git a/plc4go/internal/opcua/Writer.go b/plc4go/internal/opcua/Writer.go
index 4dcd7507a5..172ab52b79 100644
--- a/plc4go/internal/opcua/Writer.go
+++ b/plc4go/internal/opcua/Writer.go
@@ -146,9 +146,9 @@ func (m *Writer) WriteSync(ctx context.Context, 
writeRequest apiModel.PlcWriteRe
                } else {
                        if serviceFault, ok := 
reply.(readWriteModel.ServiceFault); ok {
                                header := serviceFault.GetResponseHeader()
-                               m.log.Error().Stringer("header", 
header).Msg("Read request ended up with ServiceFault")
+                               m.log.Error().Interface("header", 
header).Msg("Read request ended up with ServiceFault")
                        } else {
-                               m.log.Error().Stringer("reply", 
reply).Msg("Remote party returned an error")
+                               m.log.Error().Interface("reply", 
reply).Msg("Remote party returned an error")
                        }
 
                        responseCodes := map[string]apiModel.PlcResponseCode{}
diff --git a/plc4go/internal/opcua/common.go b/plc4go/internal/opcua/common.go
index a3ad7943e2..598d5b2ddd 100644
--- a/plc4go/internal/opcua/common.go
+++ b/plc4go/internal/opcua/common.go
@@ -248,7 +248,7 @@ func readResponse(localLog zerolog.Logger, readRequestIn 
apiModel.PlcReadRequest
                        } else {
                                responseCode = 
apiModel.PlcResponseCode_UNSUPPORTED
                        }
-                       localLog.Error().Stringer("statusCode", 
results[count].GetStatusCode()).Msg("Error while reading value from OPC UA 
server error code")
+                       localLog.Error().Interface("statusCode", 
results[count].GetStatusCode()).Msg("Error while reading value from OPC UA 
server error code")
                }
                count++
                responseCodes[tagName] = responseCode
diff --git a/plc4go/internal/s7/Driver.go b/plc4go/internal/s7/Driver.go
index 6fc6f75692..543aeaaa1f 100644
--- a/plc4go/internal/s7/Driver.go
+++ b/plc4go/internal/s7/Driver.go
@@ -93,7 +93,7 @@ func (d *Driver) GetConnection(ctx context.Context, 
transportUrl url.URL, transp
                transportInstance,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Debug().Stringer("codec", codec).Msg("working with codec")
+       d.log.Debug().Interface("codec", codec).Msg("working with codec")
 
        configuration, err := ParseFromOptions(d.log, driverOptions)
        if err != nil {
diff --git a/plc4go/internal/simulated/Driver.go 
b/plc4go/internal/simulated/Driver.go
index 4365ab4ce9..e86f4b3b3b 100644
--- a/plc4go/internal/simulated/Driver.go
+++ b/plc4go/internal/simulated/Driver.go
@@ -63,11 +63,11 @@ func (d *Driver) GetConnection(ctx context.Context, _ 
url.URL, _ map[string]tran
                driverOptions,
                append(d._options, options.WithCustomLogger(d.log))...,
        )
-       d.log.Trace().Stringer("connection", connection).Msg("Connecting")
+       d.log.Trace().Interface("connection", connection).Msg("Connecting")
        if err := connection.Connect(ctx); err != nil {
                return nil, errors.Wrap(err, "Error connecting connection")
        }
-       d.log.Trace().Stringer("connection", connection).Msg("Connected")
+       d.log.Trace().Interface("connection", connection).Msg("Connected")
        return connection, nil
 }
 
diff --git a/plc4go/pkg/api/cache/PlcConnectionCache.go 
b/plc4go/pkg/api/cache/PlcConnectionCache.go
index 908e5c1322..1022e6e2ab 100644
--- a/plc4go/pkg/api/cache/PlcConnectionCache.go
+++ b/plc4go/pkg/api/cache/PlcConnectionCache.go
@@ -232,7 +232,7 @@ func (c *plcConnectionCache) Close() error {
 
        var wg sync.WaitGroup
        for _, connectionContainer := range c.connections {
-               ccLog := c.log.With().Stringer("connectionContainer", 
connectionContainer).Logger()
+               ccLog := c.log.With().Interface("connectionContainer", 
connectionContainer).Logger()
                ccLog.Trace().Msg("Closing connection")
                // Mark the connection as being closed to not try to 
re-establish it.
                connectionContainer.closed = true
diff --git a/plc4go/pkg/api/logging/ZerologInterfaceMarshal.go 
b/plc4go/pkg/api/logging/ZerologInterfaceMarshal.go
index 3b3a82c2e0..bc8d249843 100644
--- a/plc4go/pkg/api/logging/ZerologInterfaceMarshal.go
+++ b/plc4go/pkg/api/logging/ZerologInterfaceMarshal.go
@@ -44,7 +44,7 @@ const (
 )
 
 // ZerologInterfacePLCMessageFormat defines the format of the PLCMessage that 
is logged by the zerolog interface marshal function
-var ZerologInterfacePLCMessageFormat = PLCMessageAsString
+var ZerologInterfacePLCMessageFormat = PLCMessageAsJSON
 
 // ZerologDefaultInterfaceMarshalFunc is the default marshal function used by 
zerolog
 var ZerologDefaultInterfaceMarshalFunc = zerolog.InterfaceMarshalFunc
diff --git a/plc4go/spi/default/DefaultCodec.go 
b/plc4go/spi/default/DefaultCodec.go
index 7462effefb..30b0bf9e4e 100644
--- a/plc4go/spi/default/DefaultCodec.go
+++ b/plc4go/spi/default/DefaultCodec.go
@@ -215,7 +215,7 @@ func (m *defaultCodec) Expect(ctx context.Context, 
acceptsMessage spi.AcceptsMes
        }
        expectation := newDefaultExpectation(ctx, ttl, acceptsMessage, 
handleMessage, handleError)
        m.expectations = append(m.expectations, expectation)
-       m.log.Debug().Stringer("expectation", expectation).Msg("Added 
expectation")
+       m.log.Debug().Interface("expectation", expectation).Msg("Added 
expectation")
        select {
        case m.notifyExpireWorker <- struct{}{}:
        default:
@@ -242,7 +242,7 @@ func (m *defaultCodec) TimeoutExpectations(now time.Time) 
time.Duration {
                // Check if this expectation has expired.
                if now.After(expectation.GetExpiration()) {
                        // Remove this expectation from the list.
-                       m.log.Debug().Stringer("expectation", 
expectation).Msg("timeout expectation")
+                       m.log.Debug().Interface("expectation", 
expectation).Msg("timeout expectation")
                        // Call the error handler.
                        m.wg.Go(func() {
                                timeoutErr := 
utils.NewTimeoutError(expectation.GetExpiration().Sub(expectation.GetCreationTime()))
@@ -254,7 +254,7 @@ func (m *defaultCodec) TimeoutExpectations(now time.Time) 
time.Duration {
                        return true
                }
                if err := expectation.GetContext().Err(); err != nil {
-                       m.log.Debug().Err(err).Stringer("expectation", 
expectation).Msg("expectation canceled")
+                       m.log.Debug().Err(err).Interface("expectation", 
expectation).Msg("expectation canceled")
                        // Remove this expectation from the list.
                        m.wg.Go(func() {
                                if err := expectation.GetHandleError()(err); 
err != nil {
@@ -281,7 +281,7 @@ func (m *defaultCodec) HandleMessages(message spi.Message) 
bool {
        messageHandled := false
        m.log.Trace().Int("nExpectations", len(m.expectations)).Msg("Current 
number of expectations")
        m.expectations = slices.DeleteFunc(m.expectations, func(expectation 
spi.Expectation) bool {
-               expectationLog := m.log.With().Stringer("expectation", 
expectation).Logger()
+               expectationLog := m.log.With().Interface("expectation", 
expectation).Logger()
                expectationLog.Trace().Msg("Checking expectation")
                // Check if the current message matches the expectations
                // If it does, let it handle the message.
@@ -421,10 +421,10 @@ mainLoop:
                if processingTime := time.Since(lastLoopTime); processingTime < 
cycleTime {
                        // Ensure that we leave at least 10ms between loops to 
not burn cycles
                        sleepTime := cycleTime - processingTime
-                       workerLog.Trace().Stringer("sleepTime", 
sleepTime).Msg("sleeping") // we use stringer instead of Dur to have it a bit 
more readable
+                       workerLog.Trace().Dur("sleepTime", 
sleepTime).Msg("sleeping")
                        time.Sleep(sleepTime)
                } else {
-                       workerLog.Debug().Stringer("processingTime", 
processingTime).Stringer("cycleTime", cycleTime).Msg("no need to sleep") // we 
use stringer instead of Dur to have it a bit more readable
+                       workerLog.Debug().Dur("processingTime", 
processingTime).Dur("cycleTime", cycleTime).Msg("no need to sleep")
                }
                workerLog.Trace().Msg("receive mainloop cycle")
                lastLoopTime = time.Now()
@@ -482,7 +482,7 @@ mainLoop:
                        workerLog.Trace().Msg("Not enough data yet")
                        continue mainLoop
                }
-               workerLog.Trace().Stringer("message", message).Msg("got 
message")
+               workerLog.Trace().Interface("message", message).Msg("got 
message")
 
                if m.customMessageHandling != nil {
                        workerLog.Trace().Msg("Executing custom handling")
@@ -512,6 +512,6 @@ func (m *defaultCodec) 
passToDefaultIncomingMessageChannel(workerLog zerolog.Log
        select {
        case m.defaultIncomingMessageChannel <- message:
        default:
-               workerLog.Warn().Stringer("message", message).Msg("Message 
discarded")
+               workerLog.Warn().Interface("message", message).Msg("Message 
discarded")
        }
 }
diff --git a/plc4go/spi/default/DefaultCodec_test.go 
b/plc4go/spi/default/DefaultCodec_test.go
index 755f1f4e09..79fa9f826d 100644
--- a/plc4go/spi/default/DefaultCodec_test.go
+++ b/plc4go/spi/default/DefaultCodec_test.go
@@ -1592,6 +1592,7 @@ func Test_defaultCodec_integration(t *testing.T) {
                {
                        expect := message.EXPECT()
                        expect.String().Return("message for " + t.Name())
+                       expect.SerializeWithWriteBuffer(mock.Anything, 
mock.Anything).Return(nil)
                }
                expect.Receive(mock.Anything).RunAndReturn(func(_ 
context.Context) (spi.Message, error) {
                        // Simulate a bit read delay
diff --git a/plc4go/spi/pool/worker.go b/plc4go/spi/pool/worker.go
index f2e93a03cb..a4e51328db 100644
--- a/plc4go/spi/pool/worker.go
+++ b/plc4go/spi/pool/worker.go
@@ -83,7 +83,7 @@ func (w *worker) start() {
                return
        }
        if w.executor.isTraceWorkers() {
-               w.log.Debug().Stringer("worker", w).Msg("Starting worker")
+               w.log.Debug().Interface("worker", w).Msg("Starting worker")
        }
        w.running.Store(true)
        w.executor.getWorkerWaitGroup().Go(w.work)
@@ -98,7 +98,7 @@ func (w *worker) stop(interrupt bool) {
        }
 
        if w.executor.isTraceWorkers() {
-               w.log.Debug().Stringer("worker", w).Msg("Stopping worker")
+               w.log.Debug().Interface("worker", w).Msg("Stopping worker")
        }
        w.shutdown.Store(true)
        if interrupt {
@@ -131,7 +131,7 @@ func (w *worker) work() {
                select {
                case _workItem := <-w.executor.getWorksItems():
                        w.lastReceived.Store(time.Now())
-                       workItemLog := workerLog.With().Stringer("workItem", 
&_workItem).Logger()
+                       workItemLog := workerLog.With().Interface("workItem", 
&_workItem).Logger()
                        workItemLog.Debug().Msg("Got work item")
                        if _workItem.completionFuture.cancelRequested.Load() || 
(w.shutdown.Load() && w.interrupted.Load()) {
                                workerLog.Debug().Msg("We need to stop")
diff --git a/plc4go/spi/transactions/RequestTransactionManager.go 
b/plc4go/spi/transactions/RequestTransactionManager.go
index 0fc5dcf055..71ce3485a6 100644
--- a/plc4go/spi/transactions/RequestTransactionManager.go
+++ b/plc4go/spi/transactions/RequestTransactionManager.go
@@ -182,9 +182,13 @@ func (r *requestTransactionManager) processWorklog() {
                Msg("Processing work log with size of workLogLen 
(numberOfConcurrentRequests concurrent requests allowed)")
        for len(r.runningRequests) < r.numberOfConcurrentRequests && 
r.workLog.Len() > 0 {
                front := r.workLog.Front()
+               if front == nil {
+                       r.log.Error().Msg("workLog front is nil")
+                       break
+               }
                next := front.Value.(*requestTransaction)
                r.log.Debug().
-                       Stringer("next", next).
+                       Interface("next", next).
                        Int("nRunningRequests", len(r.runningRequests)).
                        Msg("Handling next. (Adding to running requests 
(length: nRunningRequests))")
                r.runningRequests = append(r.runningRequests, next)


Reply via email to