From e80c24733f900d4c4f5da88d449737cb01ea6fec Mon Sep 17 00:00:00 2001
From: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Date: Mon, 12 Feb 2024 12:19:20 +0100
Subject: [PATCH] Lift dependencies to the workspace (Part 1) (#2070)

Changes (partial https://github.com/paritytech/polkadot-sdk/issues/994):
- Set log to `0.4.20` everywhere
- Lift `log` to the workspace

Starting with a simpler one after seeing
https://github.com/paritytech/polkadot-sdk/pull/2065 from @jsdw.
This sets the `default-features` to `false` in the root and then
overwrites that in each create to its original value. This is necessary
since otherwise the `default` features are additive and its impossible
to disable them in the crate again once they are enabled in the
workspace.

I am using a tool to do this, so its mostly a test to see that it works
as expected.

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
---
 Cargo.toml                                                      | 1 +
 bridges/bin/runtime-common/Cargo.toml                           | 2 +-
 bridges/modules/grandpa/Cargo.toml                              | 2 +-
 bridges/modules/messages/Cargo.toml                             | 2 +-
 bridges/modules/parachains/Cargo.toml                           | 2 +-
 bridges/modules/relayers/Cargo.toml                             | 2 +-
 bridges/modules/xcm-bridge-hub-router/Cargo.toml                | 2 +-
 bridges/modules/xcm-bridge-hub/Cargo.toml                       | 2 +-
 bridges/primitives/runtime/Cargo.toml                           | 2 +-
 bridges/snowbridge/pallets/ethereum-client/Cargo.toml           | 2 +-
 bridges/snowbridge/pallets/inbound-queue/Cargo.toml             | 2 +-
 bridges/snowbridge/pallets/system/Cargo.toml                    | 2 +-
 bridges/snowbridge/primitives/router/Cargo.toml                 | 2 +-
 bridges/snowbridge/runtime/runtime-common/Cargo.toml            | 2 +-
 bridges/snowbridge/runtime/test-common/Cargo.toml               | 2 +-
 cumulus/client/consensus/common/Cargo.toml                      | 2 +-
 cumulus/pallets/collator-selection/Cargo.toml                   | 2 +-
 cumulus/pallets/dmp-queue/Cargo.toml                            | 2 +-
 cumulus/pallets/parachain-system/Cargo.toml                     | 2 +-
 cumulus/pallets/xcmp-queue/Cargo.toml                           | 2 +-
 cumulus/parachain-template/node/Cargo.toml                      | 2 +-
 cumulus/parachain-template/runtime/Cargo.toml                   | 2 +-
 cumulus/parachains/common/Cargo.toml                            | 2 +-
 cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml  | 2 +-
 cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml | 2 +-
 cumulus/parachains/runtimes/assets/common/Cargo.toml            | 2 +-
 .../runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml           | 2 +-
 .../runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml          | 2 +-
 cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml   | 2 +-
 .../runtimes/collectives/collectives-westend/Cargo.toml         | 2 +-
 .../parachains/runtimes/contracts/contracts-rococo/Cargo.toml   | 2 +-
 cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml | 2 +-
 .../parachains/runtimes/coretime/coretime-westend/Cargo.toml    | 2 +-
 cumulus/parachains/runtimes/people/people-rococo/Cargo.toml     | 2 +-
 cumulus/parachains/runtimes/people/people-westend/Cargo.toml    | 2 +-
 cumulus/parachains/runtimes/testing/penpal/Cargo.toml           | 2 +-
 cumulus/polkadot-parachain/Cargo.toml                           | 2 +-
 cumulus/primitives/utility/Cargo.toml                           | 2 +-
 cumulus/xcm/xcm-emulator/Cargo.toml                             | 2 +-
 polkadot/cli/Cargo.toml                                         | 2 +-
 polkadot/node/core/approval-voting/Cargo.toml                   | 2 +-
 polkadot/node/core/av-store/Cargo.toml                          | 2 +-
 polkadot/node/jaeger/Cargo.toml                                 | 2 +-
 polkadot/node/metrics/Cargo.toml                                | 2 +-
 polkadot/node/network/approval-distribution/Cargo.toml          | 2 +-
 polkadot/node/network/availability-recovery/Cargo.toml          | 2 +-
 polkadot/node/network/bitfield-distribution/Cargo.toml          | 2 +-
 polkadot/node/network/collator-protocol/Cargo.toml              | 2 +-
 polkadot/node/service/Cargo.toml                                | 2 +-
 polkadot/node/subsystem-bench/Cargo.toml                        | 2 +-
 polkadot/node/subsystem-util/Cargo.toml                         | 2 +-
 polkadot/parachain/test-parachains/adder/collator/Cargo.toml    | 2 +-
 polkadot/parachain/test-parachains/undying/Cargo.toml           | 2 +-
 polkadot/parachain/test-parachains/undying/collator/Cargo.toml  | 2 +-
 polkadot/runtime/common/Cargo.toml                              | 2 +-
 polkadot/runtime/parachains/Cargo.toml                          | 2 +-
 polkadot/runtime/rococo/Cargo.toml                              | 2 +-
 polkadot/runtime/test-runtime/Cargo.toml                        | 2 +-
 polkadot/runtime/westend/Cargo.toml                             | 2 +-
 polkadot/utils/remote-ext-tests/bags-list/Cargo.toml            | 2 +-
 polkadot/xcm/Cargo.toml                                         | 2 +-
 polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml                   | 2 +-
 polkadot/xcm/pallet-xcm/Cargo.toml                              | 2 +-
 polkadot/xcm/xcm-builder/Cargo.toml                             | 2 +-
 polkadot/xcm/xcm-executor/Cargo.toml                            | 2 +-
 polkadot/xcm/xcm-simulator/example/Cargo.toml                   | 2 +-
 substrate/bin/node/bench/Cargo.toml                             | 2 +-
 substrate/bin/node/cli/Cargo.toml                               | 2 +-
 substrate/bin/node/runtime/Cargo.toml                           | 2 +-
 substrate/bin/node/testing/Cargo.toml                           | 2 +-
 substrate/bin/utils/chain-spec-builder/Cargo.toml               | 2 +-
 substrate/client/allocator/Cargo.toml                           | 2 +-
 substrate/client/api/Cargo.toml                                 | 2 +-
 substrate/client/authority-discovery/Cargo.toml                 | 2 +-
 substrate/client/basic-authorship/Cargo.toml                    | 2 +-
 substrate/client/chain-spec/Cargo.toml                          | 2 +-
 substrate/client/cli/Cargo.toml                                 | 2 +-
 substrate/client/consensus/aura/Cargo.toml                      | 2 +-
 substrate/client/consensus/babe/Cargo.toml                      | 2 +-
 substrate/client/consensus/beefy/Cargo.toml                     | 2 +-
 substrate/client/consensus/beefy/rpc/Cargo.toml                 | 2 +-
 substrate/client/consensus/common/Cargo.toml                    | 2 +-
 substrate/client/consensus/grandpa/Cargo.toml                   | 2 +-
 substrate/client/consensus/grandpa/rpc/Cargo.toml               | 2 +-
 substrate/client/consensus/manual-seal/Cargo.toml               | 2 +-
 substrate/client/consensus/pow/Cargo.toml                       | 2 +-
 substrate/client/consensus/slots/Cargo.toml                     | 2 +-
 substrate/client/db/Cargo.toml                                  | 2 +-
 substrate/client/executor/wasmtime/Cargo.toml                   | 2 +-
 substrate/client/informant/Cargo.toml                           | 2 +-
 substrate/client/merkle-mountain-range/Cargo.toml               | 2 +-
 substrate/client/mixnet/Cargo.toml                              | 2 +-
 substrate/client/network-gossip/Cargo.toml                      | 2 +-
 substrate/client/network/Cargo.toml                             | 2 +-
 substrate/client/network/bitswap/Cargo.toml                     | 2 +-
 substrate/client/network/light/Cargo.toml                       | 2 +-
 substrate/client/network/statement/Cargo.toml                   | 2 +-
 substrate/client/network/sync/Cargo.toml                        | 2 +-
 substrate/client/network/test/Cargo.toml                        | 2 +-
 substrate/client/network/transactions/Cargo.toml                | 2 +-
 substrate/client/offchain/Cargo.toml                            | 2 +-
 substrate/client/proposer-metrics/Cargo.toml                    | 2 +-
 substrate/client/rpc-servers/Cargo.toml                         | 2 +-
 substrate/client/rpc-spec-v2/Cargo.toml                         | 2 +-
 substrate/client/rpc/Cargo.toml                                 | 2 +-
 substrate/client/service/Cargo.toml                             | 2 +-
 substrate/client/service/test/Cargo.toml                        | 2 +-
 substrate/client/state-db/Cargo.toml                            | 2 +-
 substrate/client/statement-store/Cargo.toml                     | 2 +-
 substrate/client/storage-monitor/Cargo.toml                     | 2 +-
 substrate/client/sysinfo/Cargo.toml                             | 2 +-
 substrate/client/telemetry/Cargo.toml                           | 2 +-
 substrate/client/tracing/Cargo.toml                             | 2 +-
 substrate/client/transaction-pool/Cargo.toml                    | 2 +-
 substrate/client/transaction-pool/api/Cargo.toml                | 2 +-
 substrate/client/utils/Cargo.toml                               | 2 +-
 substrate/frame/Cargo.toml                                      | 2 +-
 substrate/frame/alliance/Cargo.toml                             | 2 +-
 substrate/frame/assets/Cargo.toml                               | 2 +-
 substrate/frame/aura/Cargo.toml                                 | 2 +-
 substrate/frame/babe/Cargo.toml                                 | 2 +-
 substrate/frame/bags-list/Cargo.toml                            | 2 +-
 substrate/frame/bags-list/remote-tests/Cargo.toml               | 2 +-
 substrate/frame/balances/Cargo.toml                             | 2 +-
 substrate/frame/beefy-mmr/Cargo.toml                            | 2 +-
 substrate/frame/beefy/Cargo.toml                                | 2 +-
 substrate/frame/benchmarking/Cargo.toml                         | 2 +-
 substrate/frame/bounties/Cargo.toml                             | 2 +-
 substrate/frame/child-bounties/Cargo.toml                       | 2 +-
 substrate/frame/collective/Cargo.toml                           | 2 +-
 substrate/frame/contracts/Cargo.toml                            | 2 +-
 substrate/frame/core-fellowship/Cargo.toml                      | 2 +-
 substrate/frame/democracy/Cargo.toml                            | 2 +-
 substrate/frame/election-provider-multi-phase/Cargo.toml        | 2 +-
 .../election-provider-multi-phase/test-staking-e2e/Cargo.toml   | 2 +-
 substrate/frame/elections-phragmen/Cargo.toml                   | 2 +-
 substrate/frame/examples/basic/Cargo.toml                       | 2 +-
 substrate/frame/examples/default-config/Cargo.toml              | 2 +-
 substrate/frame/examples/dev-mode/Cargo.toml                    | 2 +-
 substrate/frame/examples/kitchensink/Cargo.toml                 | 2 +-
 substrate/frame/examples/offchain-worker/Cargo.toml             | 2 +-
 substrate/frame/examples/split/Cargo.toml                       | 2 +-
 substrate/frame/examples/tasks/Cargo.toml                       | 2 +-
 substrate/frame/executive/Cargo.toml                            | 2 +-
 substrate/frame/fast-unstake/Cargo.toml                         | 2 +-
 substrate/frame/glutton/Cargo.toml                              | 2 +-
 substrate/frame/grandpa/Cargo.toml                              | 2 +-
 substrate/frame/identity/Cargo.toml                             | 2 +-
 substrate/frame/im-online/Cargo.toml                            | 2 +-
 substrate/frame/membership/Cargo.toml                           | 2 +-
 substrate/frame/merkle-mountain-range/Cargo.toml                | 2 +-
 substrate/frame/message-queue/Cargo.toml                        | 2 +-
 substrate/frame/mixnet/Cargo.toml                               | 2 +-
 substrate/frame/multisig/Cargo.toml                             | 2 +-
 substrate/frame/nft-fractionalization/Cargo.toml                | 2 +-
 substrate/frame/nfts/Cargo.toml                                 | 2 +-
 substrate/frame/node-authorization/Cargo.toml                   | 2 +-
 substrate/frame/nomination-pools/Cargo.toml                     | 2 +-
 substrate/frame/nomination-pools/fuzzer/Cargo.toml              | 2 +-
 substrate/frame/nomination-pools/test-staking/Cargo.toml        | 2 +-
 substrate/frame/offences/Cargo.toml                             | 2 +-
 substrate/frame/offences/benchmarking/Cargo.toml                | 2 +-
 substrate/frame/preimage/Cargo.toml                             | 2 +-
 substrate/frame/ranked-collective/Cargo.toml                    | 2 +-
 substrate/frame/referenda/Cargo.toml                            | 2 +-
 substrate/frame/salary/Cargo.toml                               | 2 +-
 substrate/frame/sassafras/Cargo.toml                            | 2 +-
 substrate/frame/scheduler/Cargo.toml                            | 2 +-
 substrate/frame/session/Cargo.toml                              | 2 +-
 substrate/frame/society/Cargo.toml                              | 2 +-
 substrate/frame/staking/Cargo.toml                              | 2 +-
 substrate/frame/staking/reward-fn/Cargo.toml                    | 2 +-
 substrate/frame/state-trie-migration/Cargo.toml                 | 2 +-
 substrate/frame/statement/Cargo.toml                            | 2 +-
 substrate/frame/support/Cargo.toml                              | 2 +-
 substrate/frame/system/Cargo.toml                               | 2 +-
 substrate/frame/timestamp/Cargo.toml                            | 2 +-
 substrate/frame/tips/Cargo.toml                                 | 2 +-
 substrate/frame/transaction-storage/Cargo.toml                  | 2 +-
 substrate/frame/uniques/Cargo.toml                              | 2 +-
 substrate/frame/vesting/Cargo.toml                              | 2 +-
 substrate/primitives/api/Cargo.toml                             | 2 +-
 substrate/primitives/api/test/Cargo.toml                        | 2 +-
 substrate/primitives/blockchain/Cargo.toml                      | 2 +-
 substrate/primitives/consensus/common/Cargo.toml                | 2 +-
 substrate/primitives/consensus/grandpa/Cargo.toml               | 2 +-
 substrate/primitives/core/Cargo.toml                            | 2 +-
 substrate/primitives/io/Cargo.toml                              | 2 +-
 substrate/primitives/merkle-mountain-range/Cargo.toml           | 2 +-
 substrate/primitives/runtime/Cargo.toml                         | 2 +-
 substrate/primitives/state-machine/Cargo.toml                   | 2 +-
 substrate/primitives/wasm-interface/Cargo.toml                  | 2 +-
 substrate/test-utils/runtime/Cargo.toml                         | 2 +-
 substrate/utils/binary-merkle-tree/Cargo.toml                   | 2 +-
 substrate/utils/frame/benchmarking-cli/Cargo.toml               | 2 +-
 substrate/utils/frame/remote-externalities/Cargo.toml           | 2 +-
 substrate/utils/frame/rpc/client/Cargo.toml                     | 2 +-
 substrate/utils/frame/rpc/system/Cargo.toml                     | 2 +-
 substrate/utils/frame/try-runtime/cli/Cargo.toml                | 2 +-
 substrate/utils/prometheus/Cargo.toml                           | 2 +-
 200 files changed, 200 insertions(+), 199 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index 0a70bb03756..d09f19f280c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -536,6 +536,7 @@ default_constructed_unit_structs = { level = "allow", priority = 2 } # stylistic
 [workspace.dependencies]
 polkavm-linker = "0.8.2"
 polkavm-derive = "0.8.0"
+log = { version = "0.4.20", default-features = false }
 
 [profile.release]
 # Polkadot runtime requires unwinding.
diff --git a/bridges/bin/runtime-common/Cargo.toml b/bridges/bin/runtime-common/Cargo.toml
index c0072064507..fac88b20ca5 100644
--- a/bridges/bin/runtime-common/Cargo.toml
+++ b/bridges/bin/runtime-common/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
 hash-db = { version = "0.16.0", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 static_assertions = { version = "1.1", optional = true }
 
diff --git a/bridges/modules/grandpa/Cargo.toml b/bridges/modules/grandpa/Cargo.toml
index 562a6e43e02..dccd7b3bdca 100644
--- a/bridges/modules/grandpa/Cargo.toml
+++ b/bridges/modules/grandpa/Cargo.toml
@@ -14,7 +14,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
 finality-grandpa = { version = "0.16.2", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Bridge Dependencies
diff --git a/bridges/modules/messages/Cargo.toml b/bridges/modules/messages/Cargo.toml
index 224aad7b36a..173d6f1c164 100644
--- a/bridges/modules/messages/Cargo.toml
+++ b/bridges/modules/messages/Cargo.toml
@@ -11,7 +11,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 num-traits = { version = "0.2", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
diff --git a/bridges/modules/parachains/Cargo.toml b/bridges/modules/parachains/Cargo.toml
index 41aeca4b3bc..e454a6f2888 100644
--- a/bridges/modules/parachains/Cargo.toml
+++ b/bridges/modules/parachains/Cargo.toml
@@ -11,7 +11,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Bridge Dependencies
diff --git a/bridges/modules/relayers/Cargo.toml b/bridges/modules/relayers/Cargo.toml
index 35017ebbd30..b78da5cbeec 100644
--- a/bridges/modules/relayers/Cargo.toml
+++ b/bridges/modules/relayers/Cargo.toml
@@ -11,7 +11,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Bridge dependencies
diff --git a/bridges/modules/xcm-bridge-hub-router/Cargo.toml b/bridges/modules/xcm-bridge-hub-router/Cargo.toml
index ff33b19a581..20f8ff4407b 100644
--- a/bridges/modules/xcm-bridge-hub-router/Cargo.toml
+++ b/bridges/modules/xcm-bridge-hub-router/Cargo.toml
@@ -11,7 +11,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["bit-vec", "derive", "serde"] }
 
 # Bridge dependencies
diff --git a/bridges/modules/xcm-bridge-hub/Cargo.toml b/bridges/modules/xcm-bridge-hub/Cargo.toml
index 89e261dc6d7..e10119e8649 100644
--- a/bridges/modules/xcm-bridge-hub/Cargo.toml
+++ b/bridges/modules/xcm-bridge-hub/Cargo.toml
@@ -11,7 +11,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Bridge Dependencies
diff --git a/bridges/primitives/runtime/Cargo.toml b/bridges/primitives/runtime/Cargo.toml
index 6786bf8f21c..2ea31c26d6b 100644
--- a/bridges/primitives/runtime/Cargo.toml
+++ b/bridges/primitives/runtime/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
 hash-db = { version = "0.16.0", default-features = false }
 impl-trait-for-tuples = "0.2.2"
-log = { version = "0.4.19", default-features = false }
+log = { workspace = true }
 num-traits = { version = "0.2", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] }
diff --git a/bridges/snowbridge/pallets/ethereum-client/Cargo.toml b/bridges/snowbridge/pallets/ethereum-client/Cargo.toml
index 2f76d5b8357..dd7051fe3f0 100644
--- a/bridges/snowbridge/pallets/ethereum-client/Cargo.toml
+++ b/bridges/snowbridge/pallets/ethereum-client/Cargo.toml
@@ -24,7 +24,7 @@ ssz_rs_derive = { version = "0.9.0", default-features = false }
 byte-slice-cast = { version = "1.2.1", default-features = false }
 rlp = { version = "0.5.2", default-features = false }
 hex-literal = { version = "0.4.1", optional = true }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 
 frame-benchmarking = { path = "../../../../substrate/frame/benchmarking", default-features = false, optional = true }
 frame-support = { path = "../../../../substrate/frame/support", default-features = false }
diff --git a/bridges/snowbridge/pallets/inbound-queue/Cargo.toml b/bridges/snowbridge/pallets/inbound-queue/Cargo.toml
index 1081b162dda..8756982ed7e 100644
--- a/bridges/snowbridge/pallets/inbound-queue/Cargo.toml
+++ b/bridges/snowbridge/pallets/inbound-queue/Cargo.toml
@@ -19,7 +19,7 @@ serde = { version = "1.0.195", optional = true }
 codec = { version = "3.6.1", package = "parity-scale-codec", default-features = false, features = ["derive"] }
 scale-info = { version = "2.9.0", default-features = false, features = ["derive"] }
 hex-literal = { version = "0.4.1", optional = true }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 alloy-primitives = { version = "0.4.2", default-features = false, features = ["rlp"] }
 alloy-sol-types = { version = "0.4.2", default-features = false }
 alloy-rlp = { version = "0.3.3", default-features = false, features = ["derive"] }
diff --git a/bridges/snowbridge/pallets/system/Cargo.toml b/bridges/snowbridge/pallets/system/Cargo.toml
index aa600511633..f6c642e7376 100644
--- a/bridges/snowbridge/pallets/system/Cargo.toml
+++ b/bridges/snowbridge/pallets/system/Cargo.toml
@@ -22,7 +22,7 @@ scale-info = { version = "2.9.0", default-features = false, features = ["derive"
 frame-benchmarking = { path = "../../../../substrate/frame/benchmarking", default-features = false, optional = true }
 frame-support = { path = "../../../../substrate/frame/support", default-features = false }
 frame-system = { path = "../../../../substrate/frame/system", default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 
 sp-core = { path = "../../../../substrate/primitives/core", default-features = false }
 sp-std = { path = "../../../../substrate/primitives/std", default-features = false }
diff --git a/bridges/snowbridge/primitives/router/Cargo.toml b/bridges/snowbridge/primitives/router/Cargo.toml
index 712c60c2148..3dbf5483e1e 100644
--- a/bridges/snowbridge/primitives/router/Cargo.toml
+++ b/bridges/snowbridge/primitives/router/Cargo.toml
@@ -15,7 +15,7 @@ workspace = true
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 scale-info = { version = "2.9.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 
 frame-support = { path = "../../../../substrate/frame/support", default-features = false }
 frame-system = { path = "../../../../substrate/frame/system", default-features = false }
diff --git a/bridges/snowbridge/runtime/runtime-common/Cargo.toml b/bridges/snowbridge/runtime/runtime-common/Cargo.toml
index f5b44b25585..d4c86f8aa75 100644
--- a/bridges/snowbridge/runtime/runtime-common/Cargo.toml
+++ b/bridges/snowbridge/runtime/runtime-common/Cargo.toml
@@ -12,7 +12,7 @@ categories = ["cryptography::cryptocurrencies"]
 workspace = true
 
 [dependencies]
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 frame-support = { path = "../../../../substrate/frame/support", default-features = false }
 frame-system = { path = "../../../../substrate/frame/system", default-features = false }
diff --git a/bridges/snowbridge/runtime/test-common/Cargo.toml b/bridges/snowbridge/runtime/test-common/Cargo.toml
index a2994e61891..ecf0a6fcc69 100644
--- a/bridges/snowbridge/runtime/test-common/Cargo.toml
+++ b/bridges/snowbridge/runtime/test-common/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 hex-literal = { version = "0.4.1" }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
 smallvec = "1.11.0"
diff --git a/cumulus/client/consensus/common/Cargo.toml b/cumulus/client/consensus/common/Cargo.toml
index 7fee51310d0..5a014b10e35 100644
--- a/cumulus/client/consensus/common/Cargo.toml
+++ b/cumulus/client/consensus/common/Cargo.toml
@@ -14,7 +14,7 @@ async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.0.0", features = ["derive"] }
 dyn-clone = "1.0.16"
 futures = "0.3.28"
-log = "0.4.20"
+log = { workspace = true, default-features = true }
 tracing = "0.1.37"
 
 # Substrate
diff --git a/cumulus/pallets/collator-selection/Cargo.toml b/cumulus/pallets/collator-selection/Cargo.toml
index 4216776fe8a..20f048b97d5 100644
--- a/cumulus/pallets/collator-selection/Cargo.toml
+++ b/cumulus/pallets/collator-selection/Cargo.toml
@@ -16,7 +16,7 @@ workspace = true
 targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" }
 rand = { version = "0.8.5", features = ["std_rng"], default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
diff --git a/cumulus/pallets/dmp-queue/Cargo.toml b/cumulus/pallets/dmp-queue/Cargo.toml
index 301a77003cb..83ed994d041 100644
--- a/cumulus/pallets/dmp-queue/Cargo.toml
+++ b/cumulus/pallets/dmp-queue/Cargo.toml
@@ -15,7 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 frame-benchmarking = { path = "../../../substrate/frame/benchmarking", default-features = false, optional = true }
diff --git a/cumulus/pallets/parachain-system/Cargo.toml b/cumulus/pallets/parachain-system/Cargo.toml
index 848efd3eab6..86647290563 100644
--- a/cumulus/pallets/parachain-system/Cargo.toml
+++ b/cumulus/pallets/parachain-system/Cargo.toml
@@ -14,7 +14,7 @@ bytes = { version = "1.4.0", default-features = false }
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 environmental = { version = "1.1.4", default-features = false }
 impl-trait-for-tuples = "0.2.1"
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 trie-db = { version = "0.28.0", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
diff --git a/cumulus/pallets/xcmp-queue/Cargo.toml b/cumulus/pallets/xcmp-queue/Cargo.toml
index 8dde44ca0ff..9078d5eda99 100644
--- a/cumulus/pallets/xcmp-queue/Cargo.toml
+++ b/cumulus/pallets/xcmp-queue/Cargo.toml
@@ -11,7 +11,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", features = ["derive"], default-features = false }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Substrate
diff --git a/cumulus/parachain-template/node/Cargo.toml b/cumulus/parachain-template/node/Cargo.toml
index c66c96056b9..0ad07ac7aac 100644
--- a/cumulus/parachain-template/node/Cargo.toml
+++ b/cumulus/parachain-template/node/Cargo.toml
@@ -15,7 +15,7 @@ workspace = true
 
 [dependencies]
 clap = { version = "4.4.18", features = ["derive"] }
-log = "0.4.20"
+log = { workspace = true, default-features = true }
 codec = { package = "parity-scale-codec", version = "3.0.0" }
 serde = { version = "1.0.195", features = ["derive"] }
 jsonrpsee = { version = "0.20.3", features = ["server"] }
diff --git a/cumulus/parachain-template/runtime/Cargo.toml b/cumulus/parachain-template/runtime/Cargo.toml
index e4575d196c7..44d96ffc4e6 100644
--- a/cumulus/parachain-template/runtime/Cargo.toml
+++ b/cumulus/parachain-template/runtime/Cargo.toml
@@ -20,7 +20,7 @@ substrate-wasm-builder = { path = "../../../substrate/utils/wasm-builder", optio
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 hex-literal = { version = "0.4.1", optional = true }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 smallvec = "1.11.0"
 
diff --git a/cumulus/parachains/common/Cargo.toml b/cumulus/parachains/common/Cargo.toml
index fe5e24ee607..ebc9f822beb 100644
--- a/cumulus/parachains/common/Cargo.toml
+++ b/cumulus/parachains/common/Cargo.toml
@@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", features = ["derive"], default-features = false }
-log = { version = "0.4.19", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Substrate
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
index d1b302dc6d4..05936e93993 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
@@ -12,7 +12,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
 hex-literal = { version = "0.4.1" }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Substrate
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
index 415c8c1cb06..78c48507a7a 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
@@ -12,7 +12,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
 hex-literal = { version = "0.4.1", optional = true }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Substrate
diff --git a/cumulus/parachains/runtimes/assets/common/Cargo.toml b/cumulus/parachains/runtimes/assets/common/Cargo.toml
index 74e5e44ce15..c9252375cfb 100644
--- a/cumulus/parachains/runtimes/assets/common/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/common/Cargo.toml
@@ -12,7 +12,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 impl-trait-for-tuples = "0.2.2"
 
 # Substrate
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
index 920e7b1571c..88fb56a2f0b 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
@@ -17,7 +17,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features =
 	"derive",
 ] }
 hex-literal = { version = "0.4.1" }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = [
 	"derive",
 ] }
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
index 4cbfde91d00..4ce77f8060c 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
@@ -15,7 +15,7 @@ substrate-wasm-builder = { path = "../../../../../substrate/utils/wasm-builder",
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 hex-literal = { version = "0.4.1" }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
 
diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml
index f2cf60354ad..d34b5cd0eed 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml
@@ -12,7 +12,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
 impl-trait-for-tuples = "0.2"
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 
 # Substrate
 frame-support = { path = "../../../../../substrate/frame/support", default-features = false }
diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
index c16cee4fedd..ed264f28c26 100644
--- a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
@@ -12,7 +12,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
 hex-literal = { version = "0.4.1" }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Substrate
diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
index 9f719421b9d..dcc6c4e853a 100644
--- a/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
@@ -18,7 +18,7 @@ substrate-wasm-builder = { path = "../../../../../substrate/utils/wasm-builder",
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 hex-literal = { version = "0.4.1", optional = true }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 # Substrate
diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml b/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
index ae604da87a9..ef9869d727a 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
@@ -15,7 +15,7 @@ substrate-wasm-builder = { path = "../../../../../substrate/utils/wasm-builder",
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 hex-literal = "0.4.1"
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.9.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
 
diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml b/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
index f85f6896cbe..aae194f9ad8 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
@@ -15,7 +15,7 @@ substrate-wasm-builder = { path = "../../../../../substrate/utils/wasm-builder",
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 hex-literal = "0.4.1"
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.9.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
 
diff --git a/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml b/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
index 5e5e1e01606..b44d40c7013 100644
--- a/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
@@ -13,7 +13,7 @@ substrate-wasm-builder = { path = "../../../../../substrate/utils/wasm-builder",
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 enumflags2 = { version = "0.7.7" }
 hex-literal = { version = "0.4.1" }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.9.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
 
diff --git a/cumulus/parachains/runtimes/people/people-westend/Cargo.toml b/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
index c4c76074d75..7295b22f5a3 100644
--- a/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
@@ -13,7 +13,7 @@ substrate-wasm-builder = { path = "../../../../../substrate/utils/wasm-builder",
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 enumflags2 = { version = "0.7.7" }
 hex-literal = { version = "0.4.1" }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.9.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
 
diff --git a/cumulus/parachains/runtimes/testing/penpal/Cargo.toml b/cumulus/parachains/runtimes/testing/penpal/Cargo.toml
index dab687c5277..08e5987d43a 100644
--- a/cumulus/parachains/runtimes/testing/penpal/Cargo.toml
+++ b/cumulus/parachains/runtimes/testing/penpal/Cargo.toml
@@ -20,7 +20,7 @@ substrate-wasm-builder = { path = "../../../../../substrate/utils/wasm-builder",
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 hex-literal = { version = "0.4.1", optional = true }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 smallvec = "1.11.0"
 
diff --git a/cumulus/polkadot-parachain/Cargo.toml b/cumulus/polkadot-parachain/Cargo.toml
index cc0bd47cc77..646efe3c5f5 100644
--- a/cumulus/polkadot-parachain/Cargo.toml
+++ b/cumulus/polkadot-parachain/Cargo.toml
@@ -20,7 +20,7 @@ clap = { version = "4.4.18", features = ["derive"] }
 codec = { package = "parity-scale-codec", version = "3.0.0" }
 futures = "0.3.28"
 hex-literal = "0.4.1"
-log = "0.4.20"
+log = { workspace = true, default-features = true }
 serde = { version = "1.0.195", features = ["derive"] }
 serde_json = "1.0.111"
 
diff --git a/cumulus/primitives/utility/Cargo.toml b/cumulus/primitives/utility/Cargo.toml
index 27e9fbe3c7e..45c0e667094 100644
--- a/cumulus/primitives/utility/Cargo.toml
+++ b/cumulus/primitives/utility/Cargo.toml
@@ -11,7 +11,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 
 # Substrate
 frame-support = { path = "../../../substrate/frame/support", default-features = false }
diff --git a/cumulus/xcm/xcm-emulator/Cargo.toml b/cumulus/xcm/xcm-emulator/Cargo.toml
index fb37fd01765..6b45770a8e3 100644
--- a/cumulus/xcm/xcm-emulator/Cargo.toml
+++ b/cumulus/xcm/xcm-emulator/Cargo.toml
@@ -12,7 +12,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.0.0" }
 paste = "1.0.14"
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 lazy_static = "1.4.0"
 impl-trait-for-tuples = "0.2.2"
 
diff --git a/polkadot/cli/Cargo.toml b/polkadot/cli/Cargo.toml
index 75afa2d199f..c5d9cb45baa 100644
--- a/polkadot/cli/Cargo.toml
+++ b/polkadot/cli/Cargo.toml
@@ -20,7 +20,7 @@ crate-type = ["cdylib", "rlib"]
 [dependencies]
 cfg-if = "1.0"
 clap = { version = "4.4.18", features = ["derive"], optional = true }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 thiserror = "1.0.48"
 futures = "0.3.21"
 pyro = { package = "pyroscope", version = "0.5.3", optional = true }
diff --git a/polkadot/node/core/approval-voting/Cargo.toml b/polkadot/node/core/approval-voting/Cargo.toml
index 5ab823f4894..1010779a1b3 100644
--- a/polkadot/node/core/approval-voting/Cargo.toml
+++ b/polkadot/node/core/approval-voting/Cargo.toml
@@ -51,5 +51,5 @@ polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" }
 assert_matches = "1.4.0"
 kvdb-memorydb = "0.13.0"
 test-helpers = { package = "polkadot-primitives-test-helpers", path = "../../../primitives/test-helpers" }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 env_logger = "0.9.0"
diff --git a/polkadot/node/core/av-store/Cargo.toml b/polkadot/node/core/av-store/Cargo.toml
index 68769fb8cc8..4f5c18a68d6 100644
--- a/polkadot/node/core/av-store/Cargo.toml
+++ b/polkadot/node/core/av-store/Cargo.toml
@@ -28,7 +28,7 @@ sp-consensus = { path = "../../../../substrate/primitives/consensus/common", def
 polkadot-node-jaeger = { path = "../../jaeger" }
 
 [dev-dependencies]
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 env_logger = "0.9.0"
 assert_matches = "1.4.0"
 kvdb-memorydb = "0.13.0"
diff --git a/polkadot/node/jaeger/Cargo.toml b/polkadot/node/jaeger/Cargo.toml
index 892292c714b..c8fd3d46283 100644
--- a/polkadot/node/jaeger/Cargo.toml
+++ b/polkadot/node/jaeger/Cargo.toml
@@ -19,5 +19,5 @@ sc-network = { path = "../../../substrate/client/network" }
 sp-core = { path = "../../../substrate/primitives/core" }
 thiserror = "1.0.48"
 tokio = "1.24.2"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parity-scale-codec = { version = "3.6.1", default-features = false }
diff --git a/polkadot/node/metrics/Cargo.toml b/polkadot/node/metrics/Cargo.toml
index 7d67c0a58d3..c567278f70e 100644
--- a/polkadot/node/metrics/Cargo.toml
+++ b/polkadot/node/metrics/Cargo.toml
@@ -24,7 +24,7 @@ sc-tracing = { path = "../../../substrate/client/tracing" }
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 primitives = { package = "polkadot-primitives", path = "../../primitives" }
 bs58 = { version = "0.5.0", features = ["alloc"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 
 [dev-dependencies]
 assert_cmd = "2.0.4"
diff --git a/polkadot/node/network/approval-distribution/Cargo.toml b/polkadot/node/network/approval-distribution/Cargo.toml
index a1fa803abc2..2bc09c5f42a 100644
--- a/polkadot/node/network/approval-distribution/Cargo.toml
+++ b/polkadot/node/network/approval-distribution/Cargo.toml
@@ -38,4 +38,4 @@ schnorrkel = { version = "0.11.4", default-features = false }
 rand_core = "0.6.2"
 rand_chacha = "0.3.1"
 env_logger = "0.9.0"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
diff --git a/polkadot/node/network/availability-recovery/Cargo.toml b/polkadot/node/network/availability-recovery/Cargo.toml
index 9f1d9052312..e86445730ff 100644
--- a/polkadot/node/network/availability-recovery/Cargo.toml
+++ b/polkadot/node/network/availability-recovery/Cargo.toml
@@ -32,7 +32,7 @@ sc-network = { path = "../../../../substrate/client/network" }
 assert_matches = "1.4.0"
 env_logger = "0.9.0"
 futures-timer = "3.0.2"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 
 sp-core = { path = "../../../../substrate/primitives/core" }
 sp-keyring = { path = "../../../../substrate/primitives/keyring" }
diff --git a/polkadot/node/network/bitfield-distribution/Cargo.toml b/polkadot/node/network/bitfield-distribution/Cargo.toml
index 8a05bcbd493..0ddb5f643b8 100644
--- a/polkadot/node/network/bitfield-distribution/Cargo.toml
+++ b/polkadot/node/network/bitfield-distribution/Cargo.toml
@@ -29,7 +29,7 @@ sp-authority-discovery = { path = "../../../../substrate/primitives/authority-di
 sp-keystore = { path = "../../../../substrate/primitives/keystore" }
 sp-keyring = { path = "../../../../substrate/primitives/keyring" }
 maplit = "1.0.2"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 env_logger = "0.9.0"
 assert_matches = "1.4.0"
 rand_chacha = "0.3.1"
diff --git a/polkadot/node/network/collator-protocol/Cargo.toml b/polkadot/node/network/collator-protocol/Cargo.toml
index 9a9ce6fce63..f88e8182ecc 100644
--- a/polkadot/node/network/collator-protocol/Cargo.toml
+++ b/polkadot/node/network/collator-protocol/Cargo.toml
@@ -29,7 +29,7 @@ thiserror = "1.0.48"
 tokio-util = "0.7.1"
 
 [dev-dependencies]
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 env_logger = "0.9.0"
 assert_matches = "1.4.0"
 
diff --git a/polkadot/node/service/Cargo.toml b/polkadot/node/service/Cargo.toml
index 007e3dc595e..5b73d420e3b 100644
--- a/polkadot/node/service/Cargo.toml
+++ b/polkadot/node/service/Cargo.toml
@@ -83,7 +83,7 @@ futures = "0.3.21"
 hex-literal = "0.4.1"
 is_executable = "1.0.1"
 gum = { package = "tracing-gum", path = "../gum" }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 schnellru = "0.2.1"
 serde = { version = "1.0.195", features = ["derive"] }
 serde_json = "1.0.111"
diff --git a/polkadot/node/subsystem-bench/Cargo.toml b/polkadot/node/subsystem-bench/Cargo.toml
index 136eccbf685..bc038abd648 100644
--- a/polkadot/node/subsystem-bench/Cargo.toml
+++ b/polkadot/node/subsystem-bench/Cargo.toml
@@ -43,7 +43,7 @@ sha1 = "0.10.6"
 hex = "0.4.3"
 gum = { package = "tracing-gum", path = "../gum" }
 polkadot-erasure-coding = { package = "polkadot-erasure-coding", path = "../../erasure-coding" }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 env_logger = "0.9.0"
 rand = "0.8.5"
 # `rand` only supports uniform distribution, we need normal distribution for latency.
diff --git a/polkadot/node/subsystem-util/Cargo.toml b/polkadot/node/subsystem-util/Cargo.toml
index 5f615e05abd..b2a643d92f6 100644
--- a/polkadot/node/subsystem-util/Cargo.toml
+++ b/polkadot/node/subsystem-util/Cargo.toml
@@ -46,7 +46,7 @@ parity-db = { version = "0.4.12" }
 assert_matches = "1.4.0"
 env_logger = "0.9.0"
 futures = { version = "0.3.21", features = ["thread-pool"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 polkadot-node-subsystem-test-helpers = { path = "../subsystem-test-helpers" }
 lazy_static = "1.4.0"
 polkadot-primitives-test-helpers = { path = "../../primitives/test-helpers" }
diff --git a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
index 7dd0d9a563c..c2b11aadb50 100644
--- a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
+++ b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
@@ -19,7 +19,7 @@ parity-scale-codec = { version = "3.6.1", default-features = false, features = [
 clap = { version = "4.4.18", features = ["derive"] }
 futures = "0.3.21"
 futures-timer = "3.0.2"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 
 test-parachain-adder = { path = ".." }
 polkadot-primitives = { path = "../../../../primitives" }
diff --git a/polkadot/parachain/test-parachains/undying/Cargo.toml b/polkadot/parachain/test-parachains/undying/Cargo.toml
index 19e1261db1e..82ceebcf4ee 100644
--- a/polkadot/parachain/test-parachains/undying/Cargo.toml
+++ b/polkadot/parachain/test-parachains/undying/Cargo.toml
@@ -17,7 +17,7 @@ parity-scale-codec = { version = "3.6.1", default-features = false, features = [
 sp-std = { path = "../../../../substrate/primitives/std", default-features = false }
 tiny-keccak = { version = "2.0.2", features = ["keccak"] }
 dlmalloc = { version = "0.2.4", features = ["global"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 # We need to make sure the global allocator is disabled until we have support of full substrate externalities
 sp-io = { path = "../../../../substrate/primitives/io", default-features = false, features = ["disable_allocator"] }
diff --git a/polkadot/parachain/test-parachains/undying/collator/Cargo.toml b/polkadot/parachain/test-parachains/undying/collator/Cargo.toml
index 001c48476b5..c74b01be084 100644
--- a/polkadot/parachain/test-parachains/undying/collator/Cargo.toml
+++ b/polkadot/parachain/test-parachains/undying/collator/Cargo.toml
@@ -19,7 +19,7 @@ parity-scale-codec = { version = "3.6.1", default-features = false, features = [
 clap = { version = "4.4.18", features = ["derive"] }
 futures = "0.3.21"
 futures-timer = "3.0.2"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 
 test-parachain-undying = { path = ".." }
 polkadot-primitives = { path = "../../../../primitives" }
diff --git a/polkadot/runtime/common/Cargo.toml b/polkadot/runtime/common/Cargo.toml
index acbc845c41a..7257ca1d6d6 100644
--- a/polkadot/runtime/common/Cargo.toml
+++ b/polkadot/runtime/common/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 impl-trait-for-tuples = "0.2.2"
 bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 rustc-hex = { version = "2.1.0", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", default-features = false, features = ["alloc"] }
diff --git a/polkadot/runtime/parachains/Cargo.toml b/polkadot/runtime/parachains/Cargo.toml
index 507df01ac48..12cebe8e79d 100644
--- a/polkadot/runtime/parachains/Cargo.toml
+++ b/polkadot/runtime/parachains/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 impl-trait-for-tuples = "0.2.2"
 bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 rustc-hex = { version = "2.1.0", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", default-features = false, features = ["alloc", "derive"] }
diff --git a/polkadot/runtime/rococo/Cargo.toml b/polkadot/runtime/rococo/Cargo.toml
index 11be7a9ffc4..6b718e824be 100644
--- a/polkadot/runtime/rococo/Cargo.toml
+++ b/polkadot/runtime/rococo/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 [dependencies]
 parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 serde = { version = "1.0.195", default-features = false }
 serde_derive = { version = "1.0.117", optional = true }
 static_assertions = "1.1.0"
diff --git a/polkadot/runtime/test-runtime/Cargo.toml b/polkadot/runtime/test-runtime/Cargo.toml
index 9778ff82439..3eca55a73d7 100644
--- a/polkadot/runtime/test-runtime/Cargo.toml
+++ b/polkadot/runtime/test-runtime/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 [dependencies]
 bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 rustc-hex = { version = "2.1.0", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", default-features = false }
diff --git a/polkadot/runtime/westend/Cargo.toml b/polkadot/runtime/westend/Cargo.toml
index 0ea2436b681..77acb1b8565 100644
--- a/polkadot/runtime/westend/Cargo.toml
+++ b/polkadot/runtime/westend/Cargo.toml
@@ -14,7 +14,7 @@ workspace = true
 bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 rustc-hex = { version = "2.1.0", default-features = false }
 serde = { version = "1.0.195", default-features = false }
 serde_derive = { version = "1.0.117", optional = true }
diff --git a/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml b/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
index f8190e6aefa..a300f0fca1c 100644
--- a/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
+++ b/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
@@ -19,5 +19,5 @@ frame-system = { path = "../../../../substrate/frame/system" }
 sp-core = { path = "../../../../substrate/primitives/core" }
 
 clap = { version = "4.4.18", features = ["derive"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 tokio = { version = "1.24.2", features = ["macros"] }
diff --git a/polkadot/xcm/Cargo.toml b/polkadot/xcm/Cargo.toml
index 41b79051bbf..b89a5c5c870 100644
--- a/polkadot/xcm/Cargo.toml
+++ b/polkadot/xcm/Cargo.toml
@@ -14,7 +14,7 @@ array-bytes = "6.1"
 bounded-collections = { version = "0.2.0", default-features = false, features = ["serde"] }
 derivative = { version = "2.2.0", default-features = false, features = ["use_core"] }
 impl-trait-for-tuples = "0.2.2"
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 sp-weights = { path = "../../substrate/primitives/weights", default-features = false, features = ["serde"] }
diff --git a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
index adeacddf90c..80f2d1deedf 100644
--- a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
@@ -24,7 +24,7 @@ xcm-executor = { package = "staging-xcm-executor", path = "../xcm-executor", def
 frame-benchmarking = { path = "../../../substrate/frame/benchmarking", default-features = false }
 xcm = { package = "staging-xcm", path = "..", default-features = false }
 xcm-builder = { package = "staging-xcm-builder", path = "../xcm-builder", default-features = false }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 
 [dev-dependencies]
 pallet-balances = { path = "../../../substrate/frame/balances" }
diff --git a/polkadot/xcm/pallet-xcm/Cargo.toml b/polkadot/xcm/pallet-xcm/Cargo.toml
index dc9b3c0e20d..aa15d5edc82 100644
--- a/polkadot/xcm/pallet-xcm/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm/Cargo.toml
@@ -14,7 +14,7 @@ bounded-collections = { version = "0.2.0", default-features = false }
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 frame-support = { path = "../../../substrate/frame/support", default-features = false }
 frame-system = { path = "../../../substrate/frame/system", default-features = false }
diff --git a/polkadot/xcm/xcm-builder/Cargo.toml b/polkadot/xcm/xcm-builder/Cargo.toml
index 30010fc2105..10726b0f511 100644
--- a/polkadot/xcm/xcm-builder/Cargo.toml
+++ b/polkadot/xcm/xcm-builder/Cargo.toml
@@ -23,7 +23,7 @@ sp-weights = { path = "../../../substrate/primitives/weights", default-features
 frame-support = { path = "../../../substrate/frame/support", default-features = false }
 frame-system = { path = "../../../substrate/frame/system", default-features = false }
 pallet-transaction-payment = { path = "../../../substrate/frame/transaction-payment", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 # Polkadot dependencies
 polkadot-parachain-primitives = { path = "../../parachain", default-features = false }
diff --git a/polkadot/xcm/xcm-executor/Cargo.toml b/polkadot/xcm/xcm-executor/Cargo.toml
index 7ce4a1cc171..71bd58073db 100644
--- a/polkadot/xcm/xcm-executor/Cargo.toml
+++ b/polkadot/xcm/xcm-executor/Cargo.toml
@@ -22,7 +22,7 @@ sp-core = { path = "../../../substrate/primitives/core", default-features = fals
 sp-runtime = { path = "../../../substrate/primitives/runtime", default-features = false }
 sp-weights = { path = "../../../substrate/primitives/weights", default-features = false }
 frame-support = { path = "../../../substrate/frame/support", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 frame-benchmarking = { path = "../../../substrate/frame/benchmarking", default-features = false, optional = true }
 
 [features]
diff --git a/polkadot/xcm/xcm-simulator/example/Cargo.toml b/polkadot/xcm/xcm-simulator/example/Cargo.toml
index 9cb5b6b7eeb..af471df60ab 100644
--- a/polkadot/xcm/xcm-simulator/example/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/example/Cargo.toml
@@ -12,7 +12,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 scale-info = { version = "2.10.0", features = ["derive"] }
-log = { version = "0.4.14", default-features = false }
+log = { workspace = true }
 
 frame-system = { path = "../../../../substrate/frame/system" }
 frame-support = { path = "../../../../substrate/frame/support" }
diff --git a/substrate/bin/node/bench/Cargo.toml b/substrate/bin/node/bench/Cargo.toml
index 42af802d716..78cdaeb0ceb 100644
--- a/substrate/bin/node/bench/Cargo.toml
+++ b/substrate/bin/node/bench/Cargo.toml
@@ -17,7 +17,7 @@ workspace = true
 [dependencies]
 array-bytes = "6.1"
 clap = { version = "4.4.18", features = ["derive"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 node-primitives = { path = "../primitives" }
 node-testing = { path = "../testing" }
 kitchensink-runtime = { path = "../runtime" }
diff --git a/substrate/bin/node/cli/Cargo.toml b/substrate/bin/node/cli/Cargo.toml
index 5dfe915b789..efdbd0f5b2d 100644
--- a/substrate/bin/node/cli/Cargo.toml
+++ b/substrate/bin/node/cli/Cargo.toml
@@ -46,7 +46,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1" }
 serde = { version = "1.0.195", features = ["derive"] }
 jsonrpsee = { version = "0.20.3", features = ["server"] }
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 rand = "0.8"
 
 # primitives
diff --git a/substrate/bin/node/runtime/Cargo.toml b/substrate/bin/node/runtime/Cargo.toml
index 76e32f02f0a..b82358b7c29 100644
--- a/substrate/bin/node/runtime/Cargo.toml
+++ b/substrate/bin/node/runtime/Cargo.toml
@@ -25,7 +25,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", default-features =
 ] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 static_assertions = "1.1.0"
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 serde_json = { version = "1.0.111", default-features = false, features = ["alloc", "arbitrary_precision"] }
 
 # pallet-asset-conversion: turn on "num-traits" feature
diff --git a/substrate/bin/node/testing/Cargo.toml b/substrate/bin/node/testing/Cargo.toml
index 9ca8b8ef726..31f8689d46c 100644
--- a/substrate/bin/node/testing/Cargo.toml
+++ b/substrate/bin/node/testing/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 fs_extra = "1"
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 tempfile = "3.1.0"
 frame-system = { path = "../../../frame/system" }
 node-cli = { package = "staging-node-cli", path = "../cli" }
diff --git a/substrate/bin/utils/chain-spec-builder/Cargo.toml b/substrate/bin/utils/chain-spec-builder/Cargo.toml
index e39c9898380..df4ddf33311 100644
--- a/substrate/bin/utils/chain-spec-builder/Cargo.toml
+++ b/substrate/bin/utils/chain-spec-builder/Cargo.toml
@@ -24,7 +24,7 @@ crate-type = ["rlib"]
 
 [dependencies]
 clap = { version = "4.4.18", features = ["derive"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 sc-chain-spec = { path = "../../../client/chain-spec" }
 serde_json = "1.0.111"
 sp-tracing = { path = "../../../primitives/tracing" }
diff --git a/substrate/client/allocator/Cargo.toml b/substrate/client/allocator/Cargo.toml
index f882cda9081..662125814fb 100644
--- a/substrate/client/allocator/Cargo.toml
+++ b/substrate/client/allocator/Cargo.toml
@@ -17,7 +17,7 @@ workspace = true
 targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 thiserror = "1.0.48"
 sp-core = { path = "../../primitives/core" }
 sp-wasm-interface = { path = "../../primitives/wasm-interface" }
diff --git a/substrate/client/api/Cargo.toml b/substrate/client/api/Cargo.toml
index 14aca6d9a2e..09f60a47670 100644
--- a/substrate/client/api/Cargo.toml
+++ b/substrate/client/api/Cargo.toml
@@ -22,7 +22,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", default-features =
 ] }
 fnv = "1.0.6"
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus" }
 sc-executor = { path = "../executor" }
diff --git a/substrate/client/authority-discovery/Cargo.toml b/substrate/client/authority-discovery/Cargo.toml
index 4c8370233e9..78f7144f436 100644
--- a/substrate/client/authority-discovery/Cargo.toml
+++ b/substrate/client/authority-discovery/Cargo.toml
@@ -29,7 +29,7 @@ multihash = { version = "0.18.1", default-features = false, features = [
 	"sha2",
 	"std",
 ] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 prost = "0.12"
 rand = "0.8.5"
 thiserror = "1.0"
diff --git a/substrate/client/basic-authorship/Cargo.toml b/substrate/client/basic-authorship/Cargo.toml
index 370f4a4adf5..51a06464d0d 100644
--- a/substrate/client/basic-authorship/Cargo.toml
+++ b/substrate/client/basic-authorship/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.21"
 futures-timer = "3.0.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus" }
 sc-block-builder = { path = "../block-builder" }
 sc-proposer-metrics = { path = "../proposer-metrics" }
diff --git a/substrate/client/chain-spec/Cargo.toml b/substrate/client/chain-spec/Cargo.toml
index 9ab12dc2ad5..e8ad9e35092 100644
--- a/substrate/client/chain-spec/Cargo.toml
+++ b/substrate/client/chain-spec/Cargo.toml
@@ -32,7 +32,7 @@ sp-crypto-hashing = { path = "../../primitives/crypto/hashing" }
 sp-genesis-builder = { path = "../../primitives/genesis-builder" }
 sp-runtime = { path = "../../primitives/runtime" }
 sp-state-machine = { path = "../../primitives/state-machine" }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 array-bytes = { version = "6.1" }
 docify = "0.2.7"
 
diff --git a/substrate/client/cli/Cargo.toml b/substrate/client/cli/Cargo.toml
index 2d9c2fa5ffb..50fb57bf1ff 100644
--- a/substrate/client/cli/Cargo.toml
+++ b/substrate/client/cli/Cargo.toml
@@ -23,7 +23,7 @@ fdlimit = "0.3.0"
 futures = "0.3.21"
 itertools = "0.10.3"
 libp2p-identity = { version = "0.1.3", features = ["ed25519", "peerid"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 names = { version = "0.14.0", default-features = false }
 parity-scale-codec = "3.6.1"
 rand = "0.8.5"
diff --git a/substrate/client/consensus/aura/Cargo.toml b/substrate/client/consensus/aura/Cargo.toml
index 33f7d160d81..d1076da35f9 100644
--- a/substrate/client/consensus/aura/Cargo.toml
+++ b/substrate/client/consensus/aura/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 thiserror = "1.0"
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../../utils/prometheus" }
 sc-block-builder = { path = "../../block-builder" }
diff --git a/substrate/client/consensus/babe/Cargo.toml b/substrate/client/consensus/babe/Cargo.toml
index 01c5d062d61..9bfed7e541b 100644
--- a/substrate/client/consensus/babe/Cargo.toml
+++ b/substrate/client/consensus/babe/Cargo.toml
@@ -20,7 +20,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 num-bigint = "0.4.3"
 num-rational = "0.4.1"
 num-traits = "0.2.17"
diff --git a/substrate/client/consensus/beefy/Cargo.toml b/substrate/client/consensus/beefy/Cargo.toml
index 56c38bf2e47..e76d9ec826e 100644
--- a/substrate/client/consensus/beefy/Cargo.toml
+++ b/substrate/client/consensus/beefy/Cargo.toml
@@ -18,7 +18,7 @@ async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
 fnv = "1.0.6"
 futures = "0.3"
-log = "0.4"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 thiserror = "1.0"
 wasm-timer = "0.2.5"
diff --git a/substrate/client/consensus/beefy/rpc/Cargo.toml b/substrate/client/consensus/beefy/rpc/Cargo.toml
index 496aefac113..810959dad31 100644
--- a/substrate/client/consensus/beefy/rpc/Cargo.toml
+++ b/substrate/client/consensus/beefy/rpc/Cargo.toml
@@ -15,7 +15,7 @@ workspace = true
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
 futures = "0.3.21"
 jsonrpsee = { version = "0.20.3", features = ["client-core", "macros", "server"] }
-log = "0.4"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 serde = { version = "1.0.195", features = ["derive"] }
 thiserror = "1.0"
diff --git a/substrate/client/consensus/common/Cargo.toml b/substrate/client/consensus/common/Cargo.toml
index 16d3a4a1441..496e6c82740 100644
--- a/substrate/client/consensus/common/Cargo.toml
+++ b/substrate/client/consensus/common/Cargo.toml
@@ -20,7 +20,7 @@ async-trait = "0.1.74"
 futures = { version = "0.3.21", features = ["thread-pool"] }
 futures-timer = "3.0.1"
 libp2p-identity = { version = "0.1.3", features = ["ed25519", "peerid"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 mockall = "0.11.3"
 parking_lot = "0.12.1"
 serde = { version = "1.0", features = ["derive"] }
diff --git a/substrate/client/consensus/grandpa/Cargo.toml b/substrate/client/consensus/grandpa/Cargo.toml
index 3f7b48d9f2d..1d02fbb2c88 100644
--- a/substrate/client/consensus/grandpa/Cargo.toml
+++ b/substrate/client/consensus/grandpa/Cargo.toml
@@ -24,7 +24,7 @@ dyn-clone = "1.0"
 finality-grandpa = { version = "0.16.2", features = ["derive-codec"] }
 futures = "0.3.21"
 futures-timer = "3.0.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parity-scale-codec = { version = "3.6.1", features = ["derive"] }
 parking_lot = "0.12.1"
 rand = "0.8.5"
diff --git a/substrate/client/consensus/grandpa/rpc/Cargo.toml b/substrate/client/consensus/grandpa/rpc/Cargo.toml
index ae9ab5d9d07..e6f884336b5 100644
--- a/substrate/client/consensus/grandpa/rpc/Cargo.toml
+++ b/substrate/client/consensus/grandpa/rpc/Cargo.toml
@@ -16,7 +16,7 @@ workspace = true
 finality-grandpa = { version = "0.16.2", features = ["derive-codec"] }
 futures = "0.3.16"
 jsonrpsee = { version = "0.20.3", features = ["client-core", "macros", "server"] }
-log = "0.4.8"
+log = { workspace = true, default-features = true }
 parity-scale-codec = { version = "3.6.1", features = ["derive"] }
 serde = { version = "1.0.195", features = ["derive"] }
 thiserror = "1.0"
diff --git a/substrate/client/consensus/manual-seal/Cargo.toml b/substrate/client/consensus/manual-seal/Cargo.toml
index 0094fb87800..80eeac4dd1d 100644
--- a/substrate/client/consensus/manual-seal/Cargo.toml
+++ b/substrate/client/consensus/manual-seal/Cargo.toml
@@ -22,7 +22,7 @@ async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.21"
 futures-timer = "3.0.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 serde = { version = "1.0", features = ["derive"] }
 thiserror = "1.0"
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../../utils/prometheus" }
diff --git a/substrate/client/consensus/pow/Cargo.toml b/substrate/client/consensus/pow/Cargo.toml
index c59a6a27114..6caccb9879d 100644
--- a/substrate/client/consensus/pow/Cargo.toml
+++ b/substrate/client/consensus/pow/Cargo.toml
@@ -20,7 +20,7 @@ async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
 futures = "0.3.21"
 futures-timer = "3.0.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 thiserror = "1.0"
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../../utils/prometheus" }
diff --git a/substrate/client/consensus/slots/Cargo.toml b/substrate/client/consensus/slots/Cargo.toml
index 8eed24532c9..75f8b29a2fd 100644
--- a/substrate/client/consensus/slots/Cargo.toml
+++ b/substrate/client/consensus/slots/Cargo.toml
@@ -21,7 +21,7 @@ async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.21"
 futures-timer = "3.0.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 sc-client-api = { path = "../../api" }
 sc-consensus = { path = "../common" }
 sc-telemetry = { path = "../../telemetry" }
diff --git a/substrate/client/db/Cargo.toml b/substrate/client/db/Cargo.toml
index ed7b4178f28..57ee1a8ad33 100644
--- a/substrate/client/db/Cargo.toml
+++ b/substrate/client/db/Cargo.toml
@@ -24,7 +24,7 @@ kvdb = "0.13.0"
 kvdb-memorydb = "0.13.0"
 kvdb-rocksdb = { version = "0.19.0", optional = true }
 linked-hash-map = "0.5.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parity-db = "0.4.12"
 parking_lot = "0.12.1"
 sc-client-api = { path = "../api" }
diff --git a/substrate/client/executor/wasmtime/Cargo.toml b/substrate/client/executor/wasmtime/Cargo.toml
index 12e6647c695..75cc76a2354 100644
--- a/substrate/client/executor/wasmtime/Cargo.toml
+++ b/substrate/client/executor/wasmtime/Cargo.toml
@@ -16,7 +16,7 @@ workspace = true
 targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 cfg-if = "1.0"
 libc = "0.2.152"
 parking_lot = "0.12.1"
diff --git a/substrate/client/informant/Cargo.toml b/substrate/client/informant/Cargo.toml
index 0252e9a1157..bd15e94ebaf 100644
--- a/substrate/client/informant/Cargo.toml
+++ b/substrate/client/informant/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 ansi_term = "0.12.1"
 futures = "0.3.21"
 futures-timer = "3.0.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 sc-client-api = { path = "../api" }
 sc-network-common = { path = "../network/common" }
 sc-network-sync = { path = "../network/sync" }
diff --git a/substrate/client/merkle-mountain-range/Cargo.toml b/substrate/client/merkle-mountain-range/Cargo.toml
index 201c179f302..60232bccb0e 100644
--- a/substrate/client/merkle-mountain-range/Cargo.toml
+++ b/substrate/client/merkle-mountain-range/Cargo.toml
@@ -16,7 +16,7 @@ workspace = true
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3"
-log = "0.4"
+log = { workspace = true, default-features = true }
 sp-api = { path = "../../primitives/api" }
 sp-blockchain = { path = "../../primitives/blockchain" }
 sc-client-api = { path = "../api" }
diff --git a/substrate/client/mixnet/Cargo.toml b/substrate/client/mixnet/Cargo.toml
index 280af81b86e..8bcd963bd56 100644
--- a/substrate/client/mixnet/Cargo.toml
+++ b/substrate/client/mixnet/Cargo.toml
@@ -24,7 +24,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", default-features =
 futures = "0.3.25"
 futures-timer = "3.0.2"
 libp2p-identity = { version = "0.1.3", features = ["peerid"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 mixnet = "0.7.0"
 multiaddr = "0.17.1"
 parking_lot = "0.12.1"
diff --git a/substrate/client/network-gossip/Cargo.toml b/substrate/client/network-gossip/Cargo.toml
index baf4def0b8e..a14761c0d6e 100644
--- a/substrate/client/network-gossip/Cargo.toml
+++ b/substrate/client/network-gossip/Cargo.toml
@@ -21,7 +21,7 @@ ahash = "0.8.2"
 futures = "0.3.21"
 futures-timer = "3.0.1"
 libp2p = "0.51.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 schnellru = "0.2.1"
 tracing = "0.1.29"
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus" }
diff --git a/substrate/client/network/Cargo.toml b/substrate/client/network/Cargo.toml
index 167f112705b..79f5a6b4fad 100644
--- a/substrate/client/network/Cargo.toml
+++ b/substrate/client/network/Cargo.toml
@@ -30,7 +30,7 @@ futures-timer = "3.0.2"
 ip_network = "0.4.1"
 libp2p = { version = "0.51.4", features = ["dns", "identify", "kad", "macros", "mdns", "noise", "ping", "request-response", "tcp", "tokio", "websocket", "yamux"] }
 linked_hash_set = "0.1.3"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 mockall = "0.11.3"
 parking_lot = "0.12.1"
 partial_sort = "0.2.0"
diff --git a/substrate/client/network/bitswap/Cargo.toml b/substrate/client/network/bitswap/Cargo.toml
index 9982ef80cf6..63544b069e5 100644
--- a/substrate/client/network/bitswap/Cargo.toml
+++ b/substrate/client/network/bitswap/Cargo.toml
@@ -23,7 +23,7 @@ async-channel = "1.8.0"
 cid = "0.9.0"
 futures = "0.3.21"
 libp2p-identity = { version = "0.1.3", features = ["peerid"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 prost = "0.12"
 thiserror = "1.0"
 unsigned-varint = { version = "0.7.1", features = ["asynchronous_codec", "futures"] }
diff --git a/substrate/client/network/light/Cargo.toml b/substrate/client/network/light/Cargo.toml
index efefc6f18b6..a83be7538be 100644
--- a/substrate/client/network/light/Cargo.toml
+++ b/substrate/client/network/light/Cargo.toml
@@ -26,7 +26,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", features = [
 ] }
 futures = "0.3.21"
 libp2p-identity = { version = "0.1.3", features = ["peerid"] }
-log = "0.4.16"
+log = { workspace = true, default-features = true }
 prost = "0.12"
 sp-blockchain = { path = "../../../primitives/blockchain" }
 sc-client-api = { path = "../../api" }
diff --git a/substrate/client/network/statement/Cargo.toml b/substrate/client/network/statement/Cargo.toml
index 0a0ce61527d..b6efee5d9d3 100644
--- a/substrate/client/network/statement/Cargo.toml
+++ b/substrate/client/network/statement/Cargo.toml
@@ -21,7 +21,7 @@ async-channel = "1.8.0"
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
 futures = "0.3.21"
 libp2p = "0.51.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../../utils/prometheus" }
 sc-network-common = { path = "../common" }
 sc-network-sync = { path = "../sync" }
diff --git a/substrate/client/network/sync/Cargo.toml b/substrate/client/network/sync/Cargo.toml
index f81b4ee77bd..19f86e87ac5 100644
--- a/substrate/client/network/sync/Cargo.toml
+++ b/substrate/client/network/sync/Cargo.toml
@@ -26,7 +26,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive
 futures = "0.3.21"
 futures-timer = "3.0.2"
 libp2p = "0.51.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 mockall = "0.11.3"
 prost = "0.12"
 schnellru = "0.2.1"
diff --git a/substrate/client/network/test/Cargo.toml b/substrate/client/network/test/Cargo.toml
index dced6ed6730..4f57287a39c 100644
--- a/substrate/client/network/test/Cargo.toml
+++ b/substrate/client/network/test/Cargo.toml
@@ -21,7 +21,7 @@ async-trait = "0.1.74"
 futures = "0.3.21"
 futures-timer = "3.0.1"
 libp2p = "0.51.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 rand = "0.8.5"
 sc-block-builder = { path = "../../block-builder" }
diff --git a/substrate/client/network/transactions/Cargo.toml b/substrate/client/network/transactions/Cargo.toml
index 9e021059eb3..01c8ac8814d 100644
--- a/substrate/client/network/transactions/Cargo.toml
+++ b/substrate/client/network/transactions/Cargo.toml
@@ -20,7 +20,7 @@ array-bytes = "6.1"
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
 futures = "0.3.21"
 libp2p = "0.51.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../../utils/prometheus" }
 sc-network = { path = ".." }
 sc-network-common = { path = "../common" }
diff --git a/substrate/client/offchain/Cargo.toml b/substrate/client/offchain/Cargo.toml
index 52052371286..eef385a6dd5 100644
--- a/substrate/client/offchain/Cargo.toml
+++ b/substrate/client/offchain/Cargo.toml
@@ -42,7 +42,7 @@ sp-offchain = { path = "../../primitives/offchain" }
 sp-runtime = { path = "../../primitives/runtime" }
 sp-keystore = { path = "../../primitives/keystore" }
 sp-externalities = { path = "../../primitives/externalities" }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 
 [dev-dependencies]
 lazy_static = "1.4.0"
diff --git a/substrate/client/proposer-metrics/Cargo.toml b/substrate/client/proposer-metrics/Cargo.toml
index 40fcc722010..f560ce2d65e 100644
--- a/substrate/client/proposer-metrics/Cargo.toml
+++ b/substrate/client/proposer-metrics/Cargo.toml
@@ -16,5 +16,5 @@ workspace = true
 targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus" }
diff --git a/substrate/client/rpc-servers/Cargo.toml b/substrate/client/rpc-servers/Cargo.toml
index b624a14e263..8a0b8f80f43 100644
--- a/substrate/client/rpc-servers/Cargo.toml
+++ b/substrate/client/rpc-servers/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 jsonrpsee = { version = "0.20.3", features = ["server"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 serde_json = "1.0.111"
 tokio = { version = "1.22.0", features = ["parking_lot"] }
 prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus" }
diff --git a/substrate/client/rpc-spec-v2/Cargo.toml b/substrate/client/rpc-spec-v2/Cargo.toml
index 6d0e7e07848..12a02e0b450 100644
--- a/substrate/client/rpc-spec-v2/Cargo.toml
+++ b/substrate/client/rpc-spec-v2/Cargo.toml
@@ -39,7 +39,7 @@ parking_lot = "0.12.1"
 tokio-stream = { version = "0.1.14", features = ["sync"] }
 tokio = { version = "1.22.0", features = ["sync"] }
 array-bytes = "6.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 futures-util = { version = "0.3.30", default-features = false }
 
 [dev-dependencies]
diff --git a/substrate/client/rpc/Cargo.toml b/substrate/client/rpc/Cargo.toml
index 6917eb0b551..a39d9226b62 100644
--- a/substrate/client/rpc/Cargo.toml
+++ b/substrate/client/rpc/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.21"
 jsonrpsee = { version = "0.20.3", features = ["server"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 serde_json = "1.0.111"
 sc-block-builder = { path = "../block-builder" }
diff --git a/substrate/client/service/Cargo.toml b/substrate/client/service/Cargo.toml
index 1c95112aa6b..41ec22a97c2 100644
--- a/substrate/client/service/Cargo.toml
+++ b/substrate/client/service/Cargo.toml
@@ -33,7 +33,7 @@ thiserror = "1.0.48"
 futures = "0.3.21"
 rand = "0.8.5"
 parking_lot = "0.12.1"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 futures-timer = "3.0.1"
 exit-future = "0.2.0"
 pin-project = "1.0.12"
diff --git a/substrate/client/service/test/Cargo.toml b/substrate/client/service/test/Cargo.toml
index 625d8286396..ee7e60f6011 100644
--- a/substrate/client/service/test/Cargo.toml
+++ b/substrate/client/service/test/Cargo.toml
@@ -19,7 +19,7 @@ async-channel = "1.8.0"
 array-bytes = "6.1"
 fdlimit = "0.3.0"
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parity-scale-codec = "3.6.1"
 parking_lot = "0.12.1"
 tempfile = "3.1.0"
diff --git a/substrate/client/state-db/Cargo.toml b/substrate/client/state-db/Cargo.toml
index 3f86a0da88e..400dda20c22 100644
--- a/substrate/client/state-db/Cargo.toml
+++ b/substrate/client/state-db/Cargo.toml
@@ -17,6 +17,6 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 sp-core = { path = "../../primitives/core" }
diff --git a/substrate/client/statement-store/Cargo.toml b/substrate/client/statement-store/Cargo.toml
index ed229259379..676f6cb36f6 100644
--- a/substrate/client/statement-store/Cargo.toml
+++ b/substrate/client/statement-store/Cargo.toml
@@ -16,7 +16,7 @@ workspace = true
 targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 parity-db = "0.4.12"
 tokio = { version = "1.22.0", features = ["time"] }
diff --git a/substrate/client/storage-monitor/Cargo.toml b/substrate/client/storage-monitor/Cargo.toml
index f4db58d6bb0..6cea3f3894b 100644
--- a/substrate/client/storage-monitor/Cargo.toml
+++ b/substrate/client/storage-monitor/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 
 [dependencies]
 clap = { version = "4.4.18", features = ["derive", "string"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 fs4 = "0.7.0"
 sp-core = { path = "../../primitives/core" }
 tokio = { version = "1.22.0", features = ["time"] }
diff --git a/substrate/client/sysinfo/Cargo.toml b/substrate/client/sysinfo/Cargo.toml
index c09fa41d4df..4c2b0eae161 100644
--- a/substrate/client/sysinfo/Cargo.toml
+++ b/substrate/client/sysinfo/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 futures = "0.3.19"
 libc = "0.2"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 rand = "0.8.5"
 rand_pcg = "0.3.1"
 derive_more = "0.99"
diff --git a/substrate/client/telemetry/Cargo.toml b/substrate/client/telemetry/Cargo.toml
index 3270a2e148d..e0563c44bc4 100644
--- a/substrate/client/telemetry/Cargo.toml
+++ b/substrate/client/telemetry/Cargo.toml
@@ -20,7 +20,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 chrono = "0.4.31"
 futures = "0.3.21"
 libp2p = { version = "0.51.4", features = ["dns", "tcp", "tokio", "wasm-ext", "websocket"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 pin-project = "1.0.12"
 sc-utils = { path = "../utils" }
diff --git a/substrate/client/tracing/Cargo.toml b/substrate/client/tracing/Cargo.toml
index 9f0f5fb6936..1331071d3bd 100644
--- a/substrate/client/tracing/Cargo.toml
+++ b/substrate/client/tracing/Cargo.toml
@@ -22,7 +22,7 @@ chrono = "0.4.31"
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 lazy_static = "1.4.0"
 libc = "0.2.152"
-log = { version = "0.4.17" }
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 regex = "1.6.0"
 rustc-hash = "1.1.0"
diff --git a/substrate/client/transaction-pool/Cargo.toml b/substrate/client/transaction-pool/Cargo.toml
index b491f7bcafd..23ffebec67c 100644
--- a/substrate/client/transaction-pool/Cargo.toml
+++ b/substrate/client/transaction-pool/Cargo.toml
@@ -21,7 +21,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.21"
 futures-timer = "3.0.2"
 linked-hash-map = "0.5.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 serde = { version = "1.0.195", features = ["derive"] }
 thiserror = "1.0.48"
diff --git a/substrate/client/transaction-pool/api/Cargo.toml b/substrate/client/transaction-pool/api/Cargo.toml
index f5fba65a068..9cf732cb87a 100644
--- a/substrate/client/transaction-pool/api/Cargo.toml
+++ b/substrate/client/transaction-pool/api/Cargo.toml
@@ -15,7 +15,7 @@ workspace = true
 async-trait = "0.1.74"
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 serde = { version = "1.0.195", features = ["derive"] }
 thiserror = "1.0.48"
 sp-blockchain = { path = "../../../primitives/blockchain" }
diff --git a/substrate/client/utils/Cargo.toml b/substrate/client/utils/Cargo.toml
index ec7b3d0eb0d..7f604219bc0 100644
--- a/substrate/client/utils/Cargo.toml
+++ b/substrate/client/utils/Cargo.toml
@@ -17,7 +17,7 @@ async-channel = "1.8.0"
 futures = "0.3.21"
 futures-timer = "3.0.2"
 lazy_static = "1.4.0"
-log = "0.4"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 prometheus = { version = "0.13.0", default-features = false }
 sp-arithmetic = { path = "../../primitives/arithmetic", default-features = false }
diff --git a/substrate/frame/Cargo.toml b/substrate/frame/Cargo.toml
index 9419eb15974..01c1358ecb9 100644
--- a/substrate/frame/Cargo.toml
+++ b/substrate/frame/Cargo.toml
@@ -49,7 +49,7 @@ frame-system-rpc-runtime-api = { default-features = false, path = "../frame/syst
 
 docify = "0.2.7"
 simple-mermaid = { git = "https://github.com/kianenigma/simple-mermaid.git", rev = "e48b187bcfd5cc75111acd9d241f1bd36604344b", optional = true }
-log = { version = "0.4.20", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 pallet-examples = { path = "./examples" }
diff --git a/substrate/frame/alliance/Cargo.toml b/substrate/frame/alliance/Cargo.toml
index 955f9e268c6..bc873ad69c8 100644
--- a/substrate/frame/alliance/Cargo.toml
+++ b/substrate/frame/alliance/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 array-bytes = { version = "6.1", optional = true }
-log = { version = "0.4.14", default-features = false }
+log = { workspace = true }
 
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
diff --git a/substrate/frame/assets/Cargo.toml b/substrate/frame/assets/Cargo.toml
index 6fe3a272360..2efc96348cb 100644
--- a/substrate/frame/assets/Cargo.toml
+++ b/substrate/frame/assets/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 sp-std = { path = "../../primitives/std", default-features = false }
 # Needed for various traits. In our case, `OnFinalize`.
diff --git a/substrate/frame/aura/Cargo.toml b/substrate/frame/aura/Cargo.toml
index 7620d172ffc..de698487efa 100644
--- a/substrate/frame/aura/Cargo.toml
+++ b/substrate/frame/aura/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-support = { path = "../support", default-features = false }
 frame-system = { path = "../system", default-features = false }
diff --git a/substrate/frame/babe/Cargo.toml b/substrate/frame/babe/Cargo.toml
index 8f49faaa2d6..fc7385efa1f 100644
--- a/substrate/frame/babe/Cargo.toml
+++ b/substrate/frame/babe/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/bags-list/Cargo.toml b/substrate/frame/bags-list/Cargo.toml
index b8ab099a069..f9ae462e16d 100644
--- a/substrate/frame/bags-list/Cargo.toml
+++ b/substrate/frame/bags-list/Cargo.toml
@@ -33,7 +33,7 @@ frame-system = { path = "../system", default-features = false }
 frame-election-provider-support = { path = "../election-provider-support", default-features = false }
 
 # third party
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 docify = "0.2.7"
 aquamarine = { version = "0.5.0" }
 
diff --git a/substrate/frame/bags-list/remote-tests/Cargo.toml b/substrate/frame/bags-list/remote-tests/Cargo.toml
index fb61a986778..266355f5cab 100644
--- a/substrate/frame/bags-list/remote-tests/Cargo.toml
+++ b/substrate/frame/bags-list/remote-tests/Cargo.toml
@@ -34,4 +34,4 @@ sp-std = { path = "../../../primitives/std" }
 remote-externalities = { package = "frame-remote-externalities", path = "../../../utils/frame/remote-externalities" }
 
 # others
-log = "0.4.17"
+log = { workspace = true, default-features = true }
diff --git a/substrate/frame/balances/Cargo.toml b/substrate/frame/balances/Cargo.toml
index e47e916a274..64ae90c6757 100644
--- a/substrate/frame/balances/Cargo.toml
+++ b/substrate/frame/balances/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/beefy-mmr/Cargo.toml b/substrate/frame/beefy-mmr/Cargo.toml
index 250a6fb450c..b2ede900f26 100644
--- a/substrate/frame/beefy-mmr/Cargo.toml
+++ b/substrate/frame/beefy-mmr/Cargo.toml
@@ -14,7 +14,7 @@ workspace = true
 [dependencies]
 array-bytes = { version = "6.1", optional = true }
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true }
 binary-merkle-tree = { path = "../../utils/binary-merkle-tree", default-features = false }
diff --git a/substrate/frame/beefy/Cargo.toml b/substrate/frame/beefy/Cargo.toml
index ba02cf1460d..54b57b44742 100644
--- a/substrate/frame/beefy/Cargo.toml
+++ b/substrate/frame/beefy/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 serde = { version = "1.0.195", optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/benchmarking/Cargo.toml b/substrate/frame/benchmarking/Cargo.toml
index 38c7bc2b905..cde1aea188b 100644
--- a/substrate/frame/benchmarking/Cargo.toml
+++ b/substrate/frame/benchmarking/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 linregress = { version = "0.5.1", optional = true }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 paste = "1.0"
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true }
diff --git a/substrate/frame/bounties/Cargo.toml b/substrate/frame/bounties/Cargo.toml
index df7c3c0cbe5..191a38d20b2 100644
--- a/substrate/frame/bounties/Cargo.toml
+++ b/substrate/frame/bounties/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
 	"derive",
 ] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/child-bounties/Cargo.toml b/substrate/frame/child-bounties/Cargo.toml
index bcd8426c316..589ca95a751 100644
--- a/substrate/frame/child-bounties/Cargo.toml
+++ b/substrate/frame/child-bounties/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
 	"derive",
 ] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/collective/Cargo.toml b/substrate/frame/collective/Cargo.toml
index 91bb36bb89e..e19e1496e7b 100644
--- a/substrate/frame/collective/Cargo.toml
+++ b/substrate/frame/collective/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/contracts/Cargo.toml b/substrate/frame/contracts/Cargo.toml
index de49983a4b3..0b127a5a454 100644
--- a/substrate/frame/contracts/Cargo.toml
+++ b/substrate/frame/contracts/Cargo.toml
@@ -24,7 +24,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", default-features =
 	"max-encoded-len",
 ] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-log = { version = "0.4", default-features = false }
+log = { workspace = true }
 serde = { version = "1", optional = true, features = ["derive"] }
 smallvec = { version = "1", default-features = false, features = [
 	"const_generics",
diff --git a/substrate/frame/core-fellowship/Cargo.toml b/substrate/frame/core-fellowship/Cargo.toml
index 8e59725d317..3e678d32744 100644
--- a/substrate/frame/core-fellowship/Cargo.toml
+++ b/substrate/frame/core-fellowship/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.16", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/democracy/Cargo.toml b/substrate/frame/democracy/Cargo.toml
index 0ade0d58a6d..1e824eac2d2 100644
--- a/substrate/frame/democracy/Cargo.toml
+++ b/substrate/frame/democracy/Cargo.toml
@@ -28,7 +28,7 @@ sp-io = { path = "../../primitives/io", default-features = false }
 sp-runtime = { path = "../../primitives/runtime", default-features = false }
 sp-std = { path = "../../primitives/std", default-features = false }
 sp-core = { path = "../../primitives/core", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 pallet-balances = { path = "../balances" }
diff --git a/substrate/frame/election-provider-multi-phase/Cargo.toml b/substrate/frame/election-provider-multi-phase/Cargo.toml
index 91bdb3c027f..eadce8c1ff8 100644
--- a/substrate/frame/election-provider-multi-phase/Cargo.toml
+++ b/substrate/frame/election-provider-multi-phase/Cargo.toml
@@ -21,7 +21,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", default-features =
 scale-info = { version = "2.10.0", default-features = false, features = [
 	"derive",
 ] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 frame-support = { path = "../support", default-features = false }
 frame-system = { path = "../system", default-features = false }
diff --git a/substrate/frame/election-provider-multi-phase/test-staking-e2e/Cargo.toml b/substrate/frame/election-provider-multi-phase/test-staking-e2e/Cargo.toml
index e9bcc96455b..e6384450a6f 100644
--- a/substrate/frame/election-provider-multi-phase/test-staking-e2e/Cargo.toml
+++ b/substrate/frame/election-provider-multi-phase/test-staking-e2e/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 parking_lot = "0.12.1"
 codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
 scale-info = { version = "2.10.0", features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 sp-runtime = { path = "../../../primitives/runtime" }
 sp-io = { path = "../../../primitives/io" }
diff --git a/substrate/frame/elections-phragmen/Cargo.toml b/substrate/frame/elections-phragmen/Cargo.toml
index 4f8c5638d4b..4dc4a3454aa 100644
--- a/substrate/frame/elections-phragmen/Cargo.toml
+++ b/substrate/frame/elections-phragmen/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
 	"derive",
 ] }
-log = { version = "0.4.14", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/examples/basic/Cargo.toml b/substrate/frame/examples/basic/Cargo.toml
index 2be5aecb968..e4ab5112201 100644
--- a/substrate/frame/examples/basic/Cargo.toml
+++ b/substrate/frame/examples/basic/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../../support", default-features = false }
diff --git a/substrate/frame/examples/default-config/Cargo.toml b/substrate/frame/examples/default-config/Cargo.toml
index 83d9ae79510..e40845a425a 100644
--- a/substrate/frame/examples/default-config/Cargo.toml
+++ b/substrate/frame/examples/default-config/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-support = { path = "../../support", default-features = false }
 frame-system = { path = "../../system", default-features = false }
diff --git a/substrate/frame/examples/dev-mode/Cargo.toml b/substrate/frame/examples/dev-mode/Cargo.toml
index f150f446446..a9c4e3f3b1f 100644
--- a/substrate/frame/examples/dev-mode/Cargo.toml
+++ b/substrate/frame/examples/dev-mode/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-support = { path = "../../support", default-features = false }
 frame-system = { path = "../../system", default-features = false }
diff --git a/substrate/frame/examples/kitchensink/Cargo.toml b/substrate/frame/examples/kitchensink/Cargo.toml
index f866024b8e9..37384107530 100644
--- a/substrate/frame/examples/kitchensink/Cargo.toml
+++ b/substrate/frame/examples/kitchensink/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 frame-support = { path = "../../support", default-features = false, features = ["experimental"] }
diff --git a/substrate/frame/examples/offchain-worker/Cargo.toml b/substrate/frame/examples/offchain-worker/Cargo.toml
index cc337707a29..fc5151ff292 100644
--- a/substrate/frame/examples/offchain-worker/Cargo.toml
+++ b/substrate/frame/examples/offchain-worker/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 lite-json = { version = "0.2.0", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-support = { path = "../../support", default-features = false }
 frame-system = { path = "../../system", default-features = false }
diff --git a/substrate/frame/examples/split/Cargo.toml b/substrate/frame/examples/split/Cargo.toml
index 733ca92b820..d140fc3eef4 100644
--- a/substrate/frame/examples/split/Cargo.toml
+++ b/substrate/frame/examples/split/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 frame-support = { path = "../../support", default-features = false }
diff --git a/substrate/frame/examples/tasks/Cargo.toml b/substrate/frame/examples/tasks/Cargo.toml
index f6850b53c03..41521114366 100644
--- a/substrate/frame/examples/tasks/Cargo.toml
+++ b/substrate/frame/examples/tasks/Cargo.toml
@@ -15,7 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 frame-support = { path = "../../support", default-features = false }
diff --git a/substrate/frame/executive/Cargo.toml b/substrate/frame/executive/Cargo.toml
index 7c72fc77be9..a4ca265f617 100644
--- a/substrate/frame/executive/Cargo.toml
+++ b/substrate/frame/executive/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
 	"derive",
 ] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-support = { path = "../support", default-features = false }
 frame-system = { path = "../system", default-features = false }
diff --git a/substrate/frame/fast-unstake/Cargo.toml b/substrate/frame/fast-unstake/Cargo.toml
index 5d0a5410f8d..eca8247845e 100644
--- a/substrate/frame/fast-unstake/Cargo.toml
+++ b/substrate/frame/fast-unstake/Cargo.toml
@@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/glutton/Cargo.toml b/substrate/frame/glutton/Cargo.toml
index b9543e7f47c..7de18080b87 100644
--- a/substrate/frame/glutton/Cargo.toml
+++ b/substrate/frame/glutton/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 blake2 = { version = "0.10.4", default-features = false }
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.14", default-features = false }
+log = { workspace = true }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
 frame-system = { path = "../system", default-features = false }
diff --git a/substrate/frame/grandpa/Cargo.toml b/substrate/frame/grandpa/Cargo.toml
index 3775ccdac1d..db540564fbe 100644
--- a/substrate/frame/grandpa/Cargo.toml
+++ b/substrate/frame/grandpa/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/identity/Cargo.toml b/substrate/frame/identity/Cargo.toml
index ba1fd500f70..912444bf603 100644
--- a/substrate/frame/identity/Cargo.toml
+++ b/substrate/frame/identity/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
 enumflags2 = { version = "0.7.7" }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/im-online/Cargo.toml b/substrate/frame/im-online/Cargo.toml
index 04c35908c53..038cbbcd678 100644
--- a/substrate/frame/im-online/Cargo.toml
+++ b/substrate/frame/im-online/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/membership/Cargo.toml b/substrate/frame/membership/Cargo.toml
index 658bf67f12f..64214670292 100644
--- a/substrate/frame/membership/Cargo.toml
+++ b/substrate/frame/membership/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/merkle-mountain-range/Cargo.toml b/substrate/frame/merkle-mountain-range/Cargo.toml
index 607fa340e96..d623e25cec2 100644
--- a/substrate/frame/merkle-mountain-range/Cargo.toml
+++ b/substrate/frame/merkle-mountain-range/Cargo.toml
@@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/message-queue/Cargo.toml b/substrate/frame/message-queue/Cargo.toml
index c2ecf445262..8f3e913ee36 100644
--- a/substrate/frame/message-queue/Cargo.toml
+++ b/substrate/frame/message-queue/Cargo.toml
@@ -15,7 +15,7 @@ workspace = true
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 environmental = { version = "1.1.4", default-features = false }
 
 sp-core = { path = "../../primitives/core", default-features = false }
diff --git a/substrate/frame/mixnet/Cargo.toml b/substrate/frame/mixnet/Cargo.toml
index cb00b38890e..de4c2074e79 100644
--- a/substrate/frame/mixnet/Cargo.toml
+++ b/substrate/frame/mixnet/Cargo.toml
@@ -20,7 +20,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", default-features =
 frame-benchmarking = { default-features = false, optional = true, path = "../benchmarking" }
 frame-support = { default-features = false, path = "../support" }
 frame-system = { default-features = false, path = "../system" }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", default-features = false, features = ["derive"] }
 sp-application-crypto = { default-features = false, path = "../../primitives/application-crypto" }
diff --git a/substrate/frame/multisig/Cargo.toml b/substrate/frame/multisig/Cargo.toml
index aefdbe855a3..1d2a79bdc52 100644
--- a/substrate/frame/multisig/Cargo.toml
+++ b/substrate/frame/multisig/Cargo.toml
@@ -26,7 +26,7 @@ sp-runtime = { path = "../../primitives/runtime", default-features = false }
 sp-std = { path = "../../primitives/std", default-features = false }
 
 # third party
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 pallet-balances = { path = "../balances" }
diff --git a/substrate/frame/nft-fractionalization/Cargo.toml b/substrate/frame/nft-fractionalization/Cargo.toml
index a55bcab533d..8002b7e1165 100644
--- a/substrate/frame/nft-fractionalization/Cargo.toml
+++ b/substrate/frame/nft-fractionalization/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/nfts/Cargo.toml b/substrate/frame/nfts/Cargo.toml
index d92a9c0b44e..69e9ea170b1 100644
--- a/substrate/frame/nfts/Cargo.toml
+++ b/substrate/frame/nfts/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 enumflags2 = { version = "0.7.7" }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/node-authorization/Cargo.toml b/substrate/frame/node-authorization/Cargo.toml
index ac139853cdb..a39b0ec4eff 100644
--- a/substrate/frame/node-authorization/Cargo.toml
+++ b/substrate/frame/node-authorization/Cargo.toml
@@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-support = { path = "../support", default-features = false }
 frame-system = { path = "../system", default-features = false }
diff --git a/substrate/frame/nomination-pools/Cargo.toml b/substrate/frame/nomination-pools/Cargo.toml
index cac092c98dc..9830f31d5fa 100644
--- a/substrate/frame/nomination-pools/Cargo.toml
+++ b/substrate/frame/nomination-pools/Cargo.toml
@@ -31,7 +31,7 @@ sp-std = { path = "../../primitives/std", default-features = false }
 sp-staking = { path = "../../primitives/staking", default-features = false }
 sp-core = { path = "../../primitives/core", default-features = false }
 sp-io = { path = "../../primitives/io", default-features = false }
-log = { version = "0.4.0", default-features = false }
+log = { workspace = true }
 
 # Optional: use for testing and/or fuzzing
 pallet-balances = { path = "../balances", optional = true }
diff --git a/substrate/frame/nomination-pools/fuzzer/Cargo.toml b/substrate/frame/nomination-pools/fuzzer/Cargo.toml
index 52f49b28457..c0d63a26859 100644
--- a/substrate/frame/nomination-pools/fuzzer/Cargo.toml
+++ b/substrate/frame/nomination-pools/fuzzer/Cargo.toml
@@ -29,7 +29,7 @@ sp-io = { path = "../../../primitives/io" }
 sp-tracing = { path = "../../../primitives/tracing" }
 
 rand = { version = "0.8.5", features = ["small_rng"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 
 [[bin]]
 name = "call"
diff --git a/substrate/frame/nomination-pools/test-staking/Cargo.toml b/substrate/frame/nomination-pools/test-staking/Cargo.toml
index 845535ae04f..9c7b12e4c63 100644
--- a/substrate/frame/nomination-pools/test-staking/Cargo.toml
+++ b/substrate/frame/nomination-pools/test-staking/Cargo.toml
@@ -37,4 +37,4 @@ pallet-staking-reward-curve = { path = "../../staking/reward-curve" }
 pallet-nomination-pools = { path = ".." }
 
 sp-tracing = { path = "../../../primitives/tracing" }
-log = { version = "0.4.0" }
+log = { workspace = true, default-features = true }
diff --git a/substrate/frame/offences/Cargo.toml b/substrate/frame/offences/Cargo.toml
index 73842c696af..e7f559086a6 100644
--- a/substrate/frame/offences/Cargo.toml
+++ b/substrate/frame/offences/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/offences/benchmarking/Cargo.toml b/substrate/frame/offences/benchmarking/Cargo.toml
index fc3fb076f1f..8dcce84d257 100644
--- a/substrate/frame/offences/benchmarking/Cargo.toml
+++ b/substrate/frame/offences/benchmarking/Cargo.toml
@@ -32,7 +32,7 @@ pallet-staking = { path = "../../staking", default-features = false }
 sp-runtime = { path = "../../../primitives/runtime", default-features = false }
 sp-staking = { path = "../../../primitives/staking", default-features = false }
 sp-std = { path = "../../../primitives/std", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 pallet-staking-reward-curve = { path = "../../staking/reward-curve" }
diff --git a/substrate/frame/preimage/Cargo.toml b/substrate/frame/preimage/Cargo.toml
index 5951663d291..10a15f97bd5 100644
--- a/substrate/frame/preimage/Cargo.toml
+++ b/substrate/frame/preimage/Cargo.toml
@@ -21,7 +21,7 @@ sp-core = { path = "../../primitives/core", default-features = false, optional =
 sp-io = { path = "../../primitives/io", default-features = false }
 sp-runtime = { path = "../../primitives/runtime", default-features = false }
 sp-std = { path = "../../primitives/std", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 pallet-balances = { path = "../balances" }
diff --git a/substrate/frame/ranked-collective/Cargo.toml b/substrate/frame/ranked-collective/Cargo.toml
index 62e01df372b..54e84c0b558 100644
--- a/substrate/frame/ranked-collective/Cargo.toml
+++ b/substrate/frame/ranked-collective/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.16", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/referenda/Cargo.toml b/substrate/frame/referenda/Cargo.toml
index 0f8a92ff72a..ad0e5993fc9 100644
--- a/substrate/frame/referenda/Cargo.toml
+++ b/substrate/frame/referenda/Cargo.toml
@@ -29,7 +29,7 @@ frame-system = { path = "../system", default-features = false }
 sp-io = { path = "../../primitives/io", default-features = false }
 sp-runtime = { path = "../../primitives/runtime", default-features = false }
 sp-std = { path = "../../primitives/std", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 assert_matches = { version = "1.5" }
diff --git a/substrate/frame/salary/Cargo.toml b/substrate/frame/salary/Cargo.toml
index 90a44da1a10..ba57fd46eeb 100644
--- a/substrate/frame/salary/Cargo.toml
+++ b/substrate/frame/salary/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.16", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/sassafras/Cargo.toml b/substrate/frame/sassafras/Cargo.toml
index 5f4900b5a29..325a39bf597 100644
--- a/substrate/frame/sassafras/Cargo.toml
+++ b/substrate/frame/sassafras/Cargo.toml
@@ -22,7 +22,7 @@ scale-info = { version = "2.5.0", default-features = false, features = ["derive"
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
 frame-system = { path = "../system", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 sp-consensus-sassafras = { path = "../../primitives/consensus/sassafras", default-features = false, features = ["serde"] }
 sp-io = { path = "../../primitives/io", default-features = false }
 sp-runtime = { path = "../../primitives/runtime", default-features = false }
diff --git a/substrate/frame/scheduler/Cargo.toml b/substrate/frame/scheduler/Cargo.toml
index bca17242d20..f50f6afdc06 100644
--- a/substrate/frame/scheduler/Cargo.toml
+++ b/substrate/frame/scheduler/Cargo.toml
@@ -14,7 +14,7 @@ workspace = true
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/session/Cargo.toml b/substrate/frame/session/Cargo.toml
index 91ffecbf717..de041307f70 100644
--- a/substrate/frame/session/Cargo.toml
+++ b/substrate/frame/session/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 impl-trait-for-tuples = "0.2.2"
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 frame-support = { path = "../support", default-features = false }
 frame-system = { path = "../system", default-features = false }
diff --git a/substrate/frame/society/Cargo.toml b/substrate/frame/society/Cargo.toml
index 8b24f637f42..3dab082b395 100644
--- a/substrate/frame/society/Cargo.toml
+++ b/substrate/frame/society/Cargo.toml
@@ -16,7 +16,7 @@ workspace = true
 targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 rand_chacha = { version = "0.2", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
diff --git a/substrate/frame/staking/Cargo.toml b/substrate/frame/staking/Cargo.toml
index 2c3f50beaea..5f82a326145 100644
--- a/substrate/frame/staking/Cargo.toml
+++ b/substrate/frame/staking/Cargo.toml
@@ -33,7 +33,7 @@ pallet-session = { path = "../session", default-features = false, features = [
 pallet-authorship = { path = "../authorship", default-features = false }
 sp-application-crypto = { path = "../../primitives/application-crypto", default-features = false, features = ["serde"] }
 frame-election-provider-support = { path = "../election-provider-support", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 # Optional imports for benchmarking
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
diff --git a/substrate/frame/staking/reward-fn/Cargo.toml b/substrate/frame/staking/reward-fn/Cargo.toml
index 0b8903f2871..5169db5072e 100644
--- a/substrate/frame/staking/reward-fn/Cargo.toml
+++ b/substrate/frame/staking/reward-fn/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [lib]
 
 [dependencies]
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 sp-arithmetic = { path = "../../../primitives/arithmetic", default-features = false }
 
 [features]
diff --git a/substrate/frame/state-trie-migration/Cargo.toml b/substrate/frame/state-trie-migration/Cargo.toml
index 1fb49e62562..83abf3615f0 100644
--- a/substrate/frame/state-trie-migration/Cargo.toml
+++ b/substrate/frame/state-trie-migration/Cargo.toml
@@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", optional = true }
 thousands = { version = "0.2.0", optional = true }
diff --git a/substrate/frame/statement/Cargo.toml b/substrate/frame/statement/Cargo.toml
index 58f8b40dc26..6827dbda962 100644
--- a/substrate/frame/statement/Cargo.toml
+++ b/substrate/frame/statement/Cargo.toml
@@ -25,7 +25,7 @@ sp-runtime = { path = "../../primitives/runtime", default-features = false }
 sp-std = { path = "../../primitives/std", default-features = false }
 sp-io = { path = "../../primitives/io", default-features = false }
 sp-core = { path = "../../primitives/core", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 pallet-balances = { path = "../balances" }
diff --git a/substrate/frame/support/Cargo.toml b/substrate/frame/support/Cargo.toml
index ad97ad5146e..fd39e8397d0 100644
--- a/substrate/frame/support/Cargo.toml
+++ b/substrate/frame/support/Cargo.toml
@@ -41,7 +41,7 @@ sp-state-machine = { path = "../../primitives/state-machine", default-features =
 bitflags = "1.3"
 impl-trait-for-tuples = "0.2.2"
 smallvec = "1.11.0"
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 sp-crypto-hashing-proc-macro = { path = "../../primitives/crypto/hashing/proc-macro" }
 k256 = { version = "0.13.1", default-features = false, features = ["ecdsa"] }
 environmental = { version = "1.1.4", default-features = false }
diff --git a/substrate/frame/system/Cargo.toml b/substrate/frame/system/Cargo.toml
index d4094601314..d25746dcde8 100644
--- a/substrate/frame/system/Cargo.toml
+++ b/substrate/frame/system/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 cfg-if = "1.0"
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
 serde = { version = "1.0.195", default-features = false, features = ["alloc", "derive"] }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/timestamp/Cargo.toml b/substrate/frame/timestamp/Cargo.toml
index cd0737c6bb8..28e57fcab0a 100644
--- a/substrate/frame/timestamp/Cargo.toml
+++ b/substrate/frame/timestamp/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/tips/Cargo.toml b/substrate/frame/tips/Cargo.toml
index 900cd47e0dc..65931bf2d59 100644
--- a/substrate/frame/tips/Cargo.toml
+++ b/substrate/frame/tips/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", features = ["derive"], optional = true }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
diff --git a/substrate/frame/transaction-storage/Cargo.toml b/substrate/frame/transaction-storage/Cargo.toml
index c96aa91d54a..8ae77cae79f 100644
--- a/substrate/frame/transaction-storage/Cargo.toml
+++ b/substrate/frame/transaction-storage/Cargo.toml
@@ -29,7 +29,7 @@ sp-io = { path = "../../primitives/io", default-features = false }
 sp-runtime = { path = "../../primitives/runtime", default-features = false }
 sp-std = { path = "../../primitives/std", default-features = false }
 sp-transaction-storage-proof = { path = "../../primitives/transaction-storage-proof", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 sp-core = { path = "../../primitives/core", default-features = false }
diff --git a/substrate/frame/uniques/Cargo.toml b/substrate/frame/uniques/Cargo.toml
index 8a5a180d75f..4e5f21b3d8d 100644
--- a/substrate/frame/uniques/Cargo.toml
+++ b/substrate/frame/uniques/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/frame/vesting/Cargo.toml b/substrate/frame/vesting/Cargo.toml
index f81b7a122c5..96938b95a2a 100644
--- a/substrate/frame/vesting/Cargo.toml
+++ b/substrate/frame/vesting/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
 	"derive",
 ] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
 frame-support = { path = "../support", default-features = false }
diff --git a/substrate/primitives/api/Cargo.toml b/substrate/primitives/api/Cargo.toml
index cd882c7a050..3330d2a88de 100644
--- a/substrate/primitives/api/Cargo.toml
+++ b/substrate/primitives/api/Cargo.toml
@@ -32,7 +32,7 @@ scale-info = { version = "2.10.0", default-features = false, features = [
 	"derive",
 ] }
 sp-metadata-ir = { path = "../metadata-ir", default-features = false, optional = true }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 sp-test-primitives = { path = "../test-primitives" }
diff --git a/substrate/primitives/api/test/Cargo.toml b/substrate/primitives/api/test/Cargo.toml
index b0975082c44..3a90553bbf0 100644
--- a/substrate/primitives/api/test/Cargo.toml
+++ b/substrate/primitives/api/test/Cargo.toml
@@ -31,7 +31,7 @@ scale-info = { version = "2.10.0", default-features = false, features = ["derive
 [dev-dependencies]
 criterion = "0.4.0"
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 sp-core = { path = "../../core" }
 static_assertions = "1.1.0"
 
diff --git a/substrate/primitives/blockchain/Cargo.toml b/substrate/primitives/blockchain/Cargo.toml
index 176e9ed6dd2..26ba41645e5 100644
--- a/substrate/primitives/blockchain/Cargo.toml
+++ b/substrate/primitives/blockchain/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parking_lot = "0.12.1"
 schnellru = "0.2.1"
 thiserror = "1.0.48"
diff --git a/substrate/primitives/consensus/common/Cargo.toml b/substrate/primitives/consensus/common/Cargo.toml
index 00c2fca5e22..cbca0d94d3e 100644
--- a/substrate/primitives/consensus/common/Cargo.toml
+++ b/substrate/primitives/consensus/common/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 async-trait = "0.1.74"
 futures = { version = "0.3.21", features = ["thread-pool"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 thiserror = "1.0.48"
 sp-core = { path = "../../core" }
 sp-inherents = { path = "../../inherents" }
diff --git a/substrate/primitives/consensus/grandpa/Cargo.toml b/substrate/primitives/consensus/grandpa/Cargo.toml
index de02b189070..1398cb93564 100644
--- a/substrate/primitives/consensus/grandpa/Cargo.toml
+++ b/substrate/primitives/consensus/grandpa/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 grandpa = { package = "finality-grandpa", version = "0.16.2", default-features = false, features = ["derive-codec"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.195", features = ["alloc", "derive"], default-features = false, optional = true }
 sp-api = { path = "../../api", default-features = false }
diff --git a/substrate/primitives/core/Cargo.toml b/substrate/primitives/core/Cargo.toml
index f5914049f41..25c69253354 100644
--- a/substrate/primitives/core/Cargo.toml
+++ b/substrate/primitives/core/Cargo.toml
@@ -18,7 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
 scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 serde = { version = "1.0.195", optional = true, default-features = false, features = ["alloc", "derive"] }
 bounded-collections = { version = "0.2.0", default-features = false }
 primitive-types = { version = "0.12.0", default-features = false, features = ["codec", "scale-info"] }
diff --git a/substrate/primitives/io/Cargo.toml b/substrate/primitives/io/Cargo.toml
index d2d56b83153..c78def9bf44 100644
--- a/substrate/primitives/io/Cargo.toml
+++ b/substrate/primitives/io/Cargo.toml
@@ -30,7 +30,7 @@ sp-runtime-interface = { path = "../runtime-interface", default-features = false
 sp-trie = { path = "../trie", default-features = false, optional = true }
 sp-externalities = { path = "../externalities", default-features = false }
 sp-tracing = { path = "../tracing", default-features = false }
-log = { version = "0.4.17", optional = true }
+log = { optional = true, workspace = true, default-features = true }
 secp256k1 = { version = "0.28.0", features = ["global-context", "recovery"], optional = true }
 tracing = { version = "0.1.29", default-features = false }
 tracing-core = { version = "0.1.32", default-features = false }
diff --git a/substrate/primitives/merkle-mountain-range/Cargo.toml b/substrate/primitives/merkle-mountain-range/Cargo.toml
index 729f458dd8d..66dc762ec28 100644
--- a/substrate/primitives/merkle-mountain-range/Cargo.toml
+++ b/substrate/primitives/merkle-mountain-range/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 mmr-lib = { package = "ckb-merkle-mountain-range", version = "0.5.2", default-features = false }
 serde = { version = "1.0.195", features = ["alloc", "derive"], default-features = false, optional = true }
 sp-api = { path = "../api", default-features = false }
diff --git a/substrate/primitives/runtime/Cargo.toml b/substrate/primitives/runtime/Cargo.toml
index f4b11582429..940fca54ab1 100644
--- a/substrate/primitives/runtime/Cargo.toml
+++ b/substrate/primitives/runtime/Cargo.toml
@@ -21,7 +21,7 @@ codec = { package = "parity-scale-codec", version = "3.6.1", default-features =
 either = { version = "1.5", default-features = false }
 hash256-std-hasher = { version = "0.15.2", default-features = false }
 impl-trait-for-tuples = "0.2.2"
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 paste = "1.0"
 rand = { version = "0.8.5", optional = true }
 scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
diff --git a/substrate/primitives/state-machine/Cargo.toml b/substrate/primitives/state-machine/Cargo.toml
index b63d5685a33..489209ecc33 100644
--- a/substrate/primitives/state-machine/Cargo.toml
+++ b/substrate/primitives/state-machine/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 hash-db = { version = "0.16.0", default-features = false }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 parking_lot = { version = "0.12.1", optional = true }
 rand = { version = "0.8.5", optional = true }
 smallvec = "1.11.0"
diff --git a/substrate/primitives/wasm-interface/Cargo.toml b/substrate/primitives/wasm-interface/Cargo.toml
index ccd2a3043c5..f7d1038903e 100644
--- a/substrate/primitives/wasm-interface/Cargo.toml
+++ b/substrate/primitives/wasm-interface/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 impl-trait-for-tuples = "0.2.2"
-log = { version = "0.4.17", optional = true }
+log = { optional = true, workspace = true, default-features = true }
 wasmtime = { version = "8.0.1", default-features = false, optional = true }
 anyhow = { version = "1.0.68", optional = true }
 sp-std = { path = "../std", default-features = false }
diff --git a/substrate/test-utils/runtime/Cargo.toml b/substrate/test-utils/runtime/Cargo.toml
index 589686c1229..cdc94782ec5 100644
--- a/substrate/test-utils/runtime/Cargo.toml
+++ b/substrate/test-utils/runtime/Cargo.toml
@@ -51,7 +51,7 @@ sp-externalities = { path = "../../primitives/externalities", default-features =
 
 # 3rd party
 array-bytes = { version = "6.1", optional = true }
-log = { version = "0.4.17", default-features = false }
+log = { workspace = true }
 
 [dev-dependencies]
 futures = "0.3.21"
diff --git a/substrate/utils/binary-merkle-tree/Cargo.toml b/substrate/utils/binary-merkle-tree/Cargo.toml
index b0b870823fb..6ba515afee1 100644
--- a/substrate/utils/binary-merkle-tree/Cargo.toml
+++ b/substrate/utils/binary-merkle-tree/Cargo.toml
@@ -13,7 +13,7 @@ workspace = true
 
 [dependencies]
 array-bytes = { version = "6.1", optional = true }
-log = { version = "0.4", default-features = false, optional = true }
+log = { optional = true, workspace = true }
 hash-db = { version = "0.16.0", default-features = false }
 
 [dev-dependencies]
diff --git a/substrate/utils/frame/benchmarking-cli/Cargo.toml b/substrate/utils/frame/benchmarking-cli/Cargo.toml
index 0314e3035c0..2af8e055cf2 100644
--- a/substrate/utils/frame/benchmarking-cli/Cargo.toml
+++ b/substrate/utils/frame/benchmarking-cli/Cargo.toml
@@ -26,7 +26,7 @@ Inflector = "0.11.4"
 itertools = "0.10.3"
 lazy_static = "1.4.0"
 linked-hash-map = "0.5.4"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 rand = { version = "0.8.5", features = ["small_rng"] }
 rand_pcg = "0.3.1"
 serde = "1.0.195"
diff --git a/substrate/utils/frame/remote-externalities/Cargo.toml b/substrate/utils/frame/remote-externalities/Cargo.toml
index ff0b7572d33..0fee718d832 100644
--- a/substrate/utils/frame/remote-externalities/Cargo.toml
+++ b/substrate/utils/frame/remote-externalities/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 jsonrpsee = { version = "0.20.3", features = ["http-client"] }
 codec = { package = "parity-scale-codec", version = "3.6.1" }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 serde = "1.0.195"
 sp-core = { path = "../../../primitives/core" }
 sp-crypto-hashing = { path = "../../../primitives/crypto/hashing" }
diff --git a/substrate/utils/frame/rpc/client/Cargo.toml b/substrate/utils/frame/rpc/client/Cargo.toml
index a97bc77b00f..d1959fe9452 100644
--- a/substrate/utils/frame/rpc/client/Cargo.toml
+++ b/substrate/utils/frame/rpc/client/Cargo.toml
@@ -20,7 +20,7 @@ sc-rpc-api = { path = "../../../../client/rpc-api" }
 async-trait = "0.1.74"
 serde = "1"
 sp-runtime = { path = "../../../../primitives/runtime" }
-log = "0.4"
+log = { workspace = true, default-features = true }
 
 [dev-dependencies]
 tokio = { version = "1.22.0", features = ["macros", "rt-multi-thread", "sync"] }
diff --git a/substrate/utils/frame/rpc/system/Cargo.toml b/substrate/utils/frame/rpc/system/Cargo.toml
index 3f06ffe2bc2..8097a4bf3d3 100644
--- a/substrate/utils/frame/rpc/system/Cargo.toml
+++ b/substrate/utils/frame/rpc/system/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 codec = { package = "parity-scale-codec", version = "3.6.1" }
 jsonrpsee = { version = "0.20.3", features = ["client-core", "macros", "server"] }
 futures = "0.3.21"
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 frame-system-rpc-runtime-api = { path = "../../../../frame/system/rpc/runtime-api" }
 sc-rpc-api = { path = "../../../../client/rpc-api" }
 sc-transaction-pool-api = { path = "../../../../client/transaction-pool/api" }
diff --git a/substrate/utils/frame/try-runtime/cli/Cargo.toml b/substrate/utils/frame/try-runtime/cli/Cargo.toml
index 1550a2cec4b..1c8484f9a80 100644
--- a/substrate/utils/frame/try-runtime/cli/Cargo.toml
+++ b/substrate/utils/frame/try-runtime/cli/Cargo.toml
@@ -40,7 +40,7 @@ substrate-rpc-client = { path = "../../rpc/client" }
 async-trait = "0.1.74"
 clap = { version = "4.4.18", features = ["derive"] }
 hex = { version = "0.4.3", default-features = false }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 parity-scale-codec = "3.6.1"
 serde = "1.0.195"
 serde_json = "1.0.111"
diff --git a/substrate/utils/prometheus/Cargo.toml b/substrate/utils/prometheus/Cargo.toml
index 5ce943fbc59..2a09cb2bb51 100644
--- a/substrate/utils/prometheus/Cargo.toml
+++ b/substrate/utils/prometheus/Cargo.toml
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
 hyper = { version = "0.14.16", default-features = false, features = ["http1", "server", "tcp"] }
-log = "0.4.17"
+log = { workspace = true, default-features = true }
 prometheus = { version = "0.13.0", default-features = false }
 thiserror = "1.0"
 tokio = { version = "1.22.0", features = ["parking_lot"] }
-- 
GitLab