diff --git a/Cargo.toml b/Cargo.toml
index 0a70bb03756b053fe3365b9cbcd5d5956b295d78..d09f19f280cbb0b81ac634249912357919209fbf 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 c0072064507331848beaaec3a56a8324296dd1f4..fac88b20ca57901d4116e147bd9363a41ff35e36 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 562a6e43e0271dadcf68f77f0a74bba887c862f5..dccd7b3bdca3533cda4fec82ed0266d0b221b7a7 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 224aad7b36a2fd217fa910bbb49ed4474046b30e..173d6f1c16448517b7051cfba2f96625ff3d525a 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 41aeca4b3bc5c608915783d2603ef0157aef54bb..e454a6f2888fa169a0b0795101172b2f260b4020 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 35017ebbd30361ae5c6184cfdbbdd7a42e9d59bb..b78da5cbeeca65a4f448cbc38928894d51e8f7b4 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 ff33b19a5811e2de96c276920fc8e354ca73ec19..20f8ff4407b2ad9882c64b334fa557a6c7dc4ef2 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 89e261dc6d79cd41d3afda77b37e4b48f4563c36..e10119e864953f1777c43151092ae43a5e594b8c 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 6786bf8f21ced12e2424ecc17ff0c4ce96fd96d7..2ea31c26d6b7d9c6c9a2e5e7f14beab9cc850a21 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 2f76d5b8357985c65cdc09c86257bc6ddd766250..dd7051fe3f039b39f9260a85d8f9ab57a5c5fb04 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 1081b162ddaec58037863a65028db4dffd03b438..8756982ed7ecdc07a790c3ea54d7a8ac19388fd6 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 aa600511633bb7d5fef36f8d4ae6cec847c4e6c4..f6c642e7376f7f068af1fe3c2cf9b11a2c50f2cc 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 712c60c2148f60f12e2be246e32242b67188bdaf..3dbf5483e1ebafdd6947a90a113d334c5562e7da 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 f5b44b25585aaccdc434d93cb039e24b4712aebc..d4c86f8aa750134df8dfbe22a277a872e77f9175 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 a2994e618913416214cb7eb21d1a56c23c2d1094..ecf0a6fcc69338930107f1840a17129f0e4a6d7e 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 7fee51310d01e2e6696c4cbb20ba10dade106dbc..5a014b10e35f39b0a5e00ca01da7cfd3ecc50a5f 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 4216776fe8ac017958462aec1da5af58edc67f39..20f048b97d558962ea270ef51399f6d2905ab1a0 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 301a77003cb6a08c2cac2c1feec48fe333959bb1..83ed994d04167607e3df54587c49e6b88576d4ec 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 848efd3eab67c1b02473e6d0a62e75efcac16f35..86647290563cb0379f1acce5090e3fc79da34f1e 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 8dde44ca0ff43bb3764ed53be7db0110671b0107..9078d5eda997526b8f3ed7d9f118cc9c927dedc1 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 c66c96056b956f8ebb4cecff39f2ecf0269dc12c..0ad07ac7aac4b299011456cf7c075ea2b11e2cc0 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 e4575d196c799e82049ecc69cba03174c16e4a88..44d96ffc4e628e5b48209e46fe39da1a75826043 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 fe5e24ee6079e6e0483efe7455ab86af21ae112e..ebc9f822beb2c0069276876161158243501ab288 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 d1b302dc6d4f3bf3f51fa6d444c288f78bfefe7e..05936e93993231429d738edf15acc48150bcc542 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 415c8c1cb062b25e51c593f167ec13c011dc470f..78c48507a7a44efadd39ab7729f9cadfe681cf8a 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 74e5e44ce15581e8e4df7ad6c49417c2b0fdc756..c9252375cfbf019c27a1ce0d5dc38f11db30cac5 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 920e7b1571c6f83ee241700ad30c57a10c76429e..88fb56a2f0be811af46cacfcb2c8f43c611e6d27 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 4cbfde91d00b8911a833afca2457940fbe998e6f..4ce77f8060c9b5eb41eeccb9eba03293d50e55e8 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 f2cf60354adc69e33f6cc19e86d2173f3e30c511..d34b5cd0eed1ef3f9c8192f0eb0bd3fdfdfa2abf 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 c16cee4fedd82dad622d2c6ec4eaafe7d2434bb4..ed264f28c26e4d48bca416f1e6bea0f0049aa334 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 9f719421b9d52f8607eb425062ac554b5725b8da..dcc6c4e853a39d6acb15e205256141de1db4ed2e 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 ae604da87a98392b2a69b3732e05e1b7f38eaeb9..ef9869d727acb028aa467738db5d3e9d6571e5fb 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 f85f6896cbe8f683e7f8b81e2c918d4ed53381b7..aae194f9ad8fa628a07ef000c9761863213337d0 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 5e5e1e01606f9739b8777c5e8e1643dd017945fe..b44d40c7013d0c3b6de6a0475e68be92cb8a56c2 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 c4c76074d75b93b9532ce2efc34988ebae5a0cb2..7295b22f5a360f13da667c593c4b31e06c1d6dae 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 dab687c527786366ff1901156c0aec58879ccaf4..08e5987d43afd5cf2676e56dee79afa04362ada0 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 cc0bd47cc77337362926c712b26ab7f6ae3d407d..646efe3c5f5f76ffa063cc0bb02e36f9f61f580b 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 27e9fbe3c7eb1157c4dbd2f631d4d63c4088e570..45c0e6670942e6b9b1ba0e6b1e80a1f0b357ff50 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 fb37fd01765e1623b1e412262948e1baae14f8d0..6b45770a8e3df47cb083dba5a8a0eeed1759e338 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 75afa2d199f40053ef84b62cc19007592504eb87..c5d9cb45baa23aaba3806a6d2c08495c3297b0e6 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 5ab823f489454e8cc8f3b7fa3fd32119484277fa..1010779a1b3650042f789bd13cc68e531b382d15 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 68769fb8cc8a66b94d52251d1e203555e900f43f..4f5c18a68d6c378c5c82e3c49c6f3d00c149b18b 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 892292c714b11bba1114f7016706299065378de6..c8fd3d462834552e86c78a2ebb77c637b467bb4f 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 7d67c0a58d3b0a58904e8e1b00e0e13a1f48e710..c567278f70ea79740510aea4099170179f7e1f85 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 a1fa803abc25fcbe587c4c574902ca8dbf63ad4b..2bc09c5f42acad52a8a96dab3916ed6314f27d56 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 9f1d9052312f2cbbff8f32ffc22b7e1c234cfc3f..e86445730ffcf9e8006d806aa5ea833eb46b441a 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 8a05bcbd493fd21c5c55bd1603319465f6003ae8..0ddb5f643b89d382855de92fe450a5807e6e21ac 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 9a9ce6fce6359a9e44e7820839952c5f9a8c11ba..f88e8182eccad0db949117b4f89db589bf0785a8 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 007e3dc595e9d49610e9d302fd28af712b27e300..5b73d420e3b2d48fbbc975416f48666205da4350 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 136eccbf685482f05b34b8de20007c7ef548320d..bc038abd648497c37629d8b0ada3f90ed6c7abea 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 5f615e05abd4f2cf7526935d3093e2c9492b9eba..b2a643d92f69698e7de5017ae3f8aa4f5504a644 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 7dd0d9a563c5087b9295d5de5d6a6ee812033578..c2b11aadb50b9e35a8d68f911de71d10b4cb62f2 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 19e1261db1e7c4f17308061929d559df34943159..82ceebcf4eee99f36140908580b41c13b04ea87e 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 001c48476b58929852075fd914154b0b86daa93a..c74b01be0846e52c35c5fb4b2709592949c02919 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 acbc845c41a3cbc6077bd0d4c743066369db6885..7257ca1d6d64e72d6390eb1c1c9d2625cdda793f 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 507df01ac4816c07b5dd8533fff483c5489631a9..12cebe8e79d74f05928fc295ce1450466c5d6c7f 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 11be7a9ffc4396e7deeabf7527bdf72e6c0bf92e..6b718e824be259a247bf075811791d1ca92b5779 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 9778ff82439494767b83d5acb6f7f9f57ac89619..3eca55a73d7e298db15b057c4aa71a4b7330394e 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 0ea2436b6811eb74a4e402eb49c38b176592a869..77acb1b8565e6ab2cc6dc2a74baf04a6df33919c 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 f8190e6aefa941f328a31c46b21bda7d8f089872..a300f0fca1c4793e3656a8e725bc9d68e1a9876f 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 41b79051bbf01d5af62bd0646e77e146a8498d93..b89a5c5c870e3eaa09c74616ea4698e21a789cd6 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 adeacddf90c1522a9505b7126365e2791fbc88e9..80f2d1deedf724c28ca71508a2b21411b57096ee 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 dc9b3c0e20d352bd3240f9e002919be39e6e4464..aa15d5edc829d1cfb97310e60c2e393c2d62874e 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 30010fc2105b8f47a9a943dbd72ec9490cd49f7a..10726b0f511909c5cc4509746c09b731d32b2faf 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 7ce4a1cc171ded3eba5ab6711d9dc307a0a2cc05..71bd58073db6d7247cf5048d4a684aa19ea79bfd 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 9cb5b6b7eeb92e7cf6095d2e86ed9b05185165c4..af471df60aba4dbc4d03692e7bfb84d99eb16420 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 42af802d716b7181b91310318137928896c6bd66..78cdaeb0ceb713bbba1f262f44412a1779930ca6 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 5dfe915b789d5e2e22b56d786513214e9c4e26a6..efdbd0f5b2da9b4984080156e32f611016869f94 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 76e32f02f0a395a7b87ad82bf6d87779078e1ad5..b82358b7c29506e2d04c3dccb430a4d1862d9376 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 9ca8b8ef7265e362de2ec8b2f482efe389d71dff..31f8689d46ca30546482d438938c09457a433bf5 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 e39c98983800a72ed24ab64a0af07f70c2d7d48d..df4ddf333117b76f99194586e483309865048662 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 f882cda9081fd27c57f41e2b75b57ff8018e7f54..662125814fbe11ed85e00788b66929a6e06ce793 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 14aca6d9a2ee1631483df3e10a4dd1549670e0d0..09f60a476702c842ff80a36437f7a9f91eb968a9 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 4c8370233e9413d7a2c6476e58ca61dfc8f3dce6..78f7144f4368d7975898c24e30c7cf8e4e0fdcc0 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 370f4a4adf5c17f57e4c036a7aaeed81e559a1da..51a06464d0d6d5df0ccf960509f4df46d8b12207 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 9ab12dc2ad55878714327e4c51c049c8d8da5396..e8ad9e3509288f6204c248e1e38ac102d83a5c1f 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 2d9c2fa5ffbdd97e53bb2a246ceee69c013ea7c7..50fb57bf1ff30bd93db199a7b243256b7c289711 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 33f7d160d8131f2b7eaadd679c8f32c112c1646f..d1076da35f9d81c80ab868dcd1b88aebc0625a6a 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 01c5d062d61db800bc2fbdc727aa6349963505a8..9bfed7e541b28bf547c14270e401110ce7fcff4f 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 56c38bf2e479a216aa3343b553583b5079c99a61..e76d9ec826e3012ccc0ec59120476752f9aacf9d 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 496aefac113aeffbdc9ad361c2df9a8fc2c99856..810959dad31e9361f5bba0bcdde4ea6930f146b5 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 16d3a4a1441ffcf0986ea9ee0418a770ded4a60d..496e6c82740c8904d023fef0a3f224433bbd3434 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 3f7b48d9f2d0d2202170818d41d4730dcfb0bfa8..1d02fbb2c8865cd2000fd05bebd68489eeb7766c 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 ae9ab5d9d0794872c28f60f9694ee719c103d74e..e6f884336b505a2a70554bf8fdba32a6c21b579c 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 0094fb8780095b355e9fe621f90f9d090d1c5eec..80eeac4dd1d8c4d27313b4afccab74449e7a22a6 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 c59a6a271143264fa1e03dadc95302a4bc0ad67f..6caccb9879dd4f8c97438b86c9495268abc0535c 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 8eed24532c9fd3649f6f8dd6dc9f9a4914579e2d..75f8b29a2fd755c18d68b817499e2dfb75ea232c 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 ed7b4178f287a67c72946b9829b91d91c84bb442..57ee1a8ad3315036f44e5b560fb55fa3f31c97e5 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 12e6647c69522f24d9e51b3b36c87a759311c955..75cc76a235430fa33b735e8b234493a24a3e2961 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 0252e9a11572cc5f99cb30b513820e4c4f922473..bd15e94ebafab26c89f76927d9d2f9c576ca1541 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 201c179f302c729d4c4a5864dd44ed9bc0e2896e..60232bccb0e08d1fb65aeb6d94723c03fcf77fa1 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 280af81b86ef631b5c99588eef28f20471c65bc8..8bcd963bd56fc8b4e9a9b8d83242b24d2cf659e9 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 baf4def0b8e7d2fbfca34c17d6680d37b65fdf71..a14761c0d6e81e4eeda2e1e3d8dacd5fd7b99d4a 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 167f112705be32a34bbdf062e0499d4c286c40fd..79f5a6b4fad24dc586a01ea979690563a5735319 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 9982ef80cf6de65885e8089159bfb95fd5eafd73..63544b069e5198c7890ccb0e8f0b2359a0b1ddc0 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 efefc6f18b6b70c847af334d4e99cbc0dda2a6b5..a83be7538bef1e7d910747ee917329ff2ea4d2ff 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 0a0ce61527d1b349378fbd6f92d0cecde364d363..b6efee5d9d36ae9deffe9ecd4951176c829de0bc 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 f81b4ee77bdf4b4babbede1936d65c19bc784cb9..19f86e87ac50fbe095ca888d5f58c5ceaa758473 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 dced6ed673057deb6959eb4b6fb001cff5be301a..4f57287a39cc8da10d3a30f769d7d584e16f0904 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 9e021059eb3da48eab08803a0b2b69819575d718..01c8ac8814d6aff1448caa18bbe8f3287139553f 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 520523712862d7e21775f5b10a22f20d205ecdba..eef385a6dd568db48bd8c64a15ab2e3e6665e216 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 40fcc722010c96b1f8a380d61f0fab6f58b4a485..f560ce2d65e6e6336c7fa372618c858616ca134e 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 b624a14e263ad935ecdcce03de0cf3d38c3c07ea..8a0b8f80f43702d730babd4fa0d03b5877df9d5f 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 6d0e7e07848535d01cdc56214963105794a9c93f..12a02e0b45083b18bf5bc34997288199eb2425a5 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 6917eb0b551a98253c7908b353d8c40a581ff3b7..a39d9226b62890ea46aec9402f0af20df2fb7c3b 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 1c95112aa6b0e714eeb0ea4cc24c76a026bf60b4..41ec22a97c2e296fc02f9270b4c350ba8ad2c1e3 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 625d8286396e7778dd7271db772d143550dc6b5e..ee7e60f6011701f9d12fdb521db8226c883dbfe4 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 3f86a0da88e4244573d43e19997ed6dadd05767f..400dda20c223443687292315b4974e5125570553 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 ed2292593790afbb61a20d588cda84c502189c7a..676f6cb36f67992c86db1174cbbf96e02e53d1b1 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 f4db58d6bb0ce364fd6c9402f1e7aa00f897cca9..6cea3f3894bd8aef5a150fe4e963ef87c2a439de 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 c09fa41d4df478b135315aea28516ed259d65d55..4c2b0eae161bb458db6787d95301354df404535a 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 3270a2e148dbfe5ac2a83ddf6f7fdc1ebb2c279b..e0563c44bc4ec34dc1e090c50c89589e0da6640a 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 9f0f5fb6936fe98df880b1c62188ef77f881802d..1331071d3bd3336225b82b09e507b22d67d65ec2 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 b491f7bcafdabc53b172ed18cebf6f49d078391c..23ffebec67c7646dd1f76dfa6f7ce0e77c4d9d5f 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 f5fba65a06839e61347372b80af1226e7be142af..9cf732cb87a9f081df48dba2a38cdb10f7f26b04 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 ec7b3d0eb0dcbbb23e5512b4d3cf582a4eb25e54..7f604219bc09a96ebb8114df01e10f7d474a87f4 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 9419eb15974b368cc706e9b7092f50e86149bb80..01c1358ecb9e17ccb4549ee0de6f19814e85241d 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 955f9e268c6f1e80c778a596d171f74260a08c8e..bc873ad69c803a9f686d5329cffde11c76e8dc35 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 6fe3a27236052d1139327a549f9276caa6730c3b..2efc96348cb5447b792c334256076a395f646719 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 7620d172ffc98934b066558a7399d4ff3a163985..de698487efa7fa6c1cc37cc89e872b9603a9f253 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 8f49faaa2d602bb9c8f8894e45f28d481adf2670..fc7385efa1f14c371af682304f3e1c8d3c614c2d 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 b8ab099a0694220b933758fbd96a6635216d572f..f9ae462e16d729f9652da114f5ebcef4cc2f21b7 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 fb61a9867783a32084dc363f6ac18c76ed4f3e10..266355f5cabe19214643db024e641339acd60630 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 e47e916a274de8074b58692e36df47610efb186b..64ae90c67575fc1dcd139b7ed6dcbaa1c3ffda59 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 250a6fb450ca730476ecdba5bc8d5e81a0490b62..b2ede900f26a7e12f945627d1cffeb3dc9269e64 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 ba02cf1460d3ec32e8358169437ee0a2c93a5b39..54b57b447423194a89aa6ddb456c7965b6b28fd4 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 38c7bc2b905d37531f97906616f490ab4d4181a1..cde1aea188bcdf030c18de6ab630a8619920b30c 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 df7c3c0cbe56098a03a87e462f71da07f4432f8f..191a38d20b2faf4a923bc074afd905c523c8a2c1 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 bcd8426c31645114230c03ca17fce6d67469c521..589ca95a7516148531434fc641af40f0f36796bb 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 91bb36bb89ec79fa8a71b0a4a41888383aab5553..e19e1496e7b5016819b1efaede408b19ae013c48 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 de49983a4b3fa89309b939d03e76aa053c1fd16d..0b127a5a454800bac4303240438115baaba4da85 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 8e59725d317443f14e6a2a0c78dbcb17d001f101..3e678d3274463f46619c19e71be97350fc1c5955 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 0ade0d58a6d91b44965a85b45efd5532c329ba68..1e824eac2d2066a0aba263cf85b0569f94126932 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 91bdb3c027ffb45a6ec5f4eca6b1f61ee454cdf6..eadce8c1ff847b2902d2d3ca9eb21d797060da4f 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 e9bcc96455b15b8b87ea882ac284ad8c17f9112a..e6384450a6fd632f206b7c9bf2bbc870604143e7 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 4f8c5638d4bf4825295bbd1ffe6909aebf4f9d55..4dc4a3454aa031da708f536aadcbe9764b093726 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 2be5aecb9681d990366f8d79bf6b6020069ffb99..e4ab5112201d1661d1bbc991489bb6d847d6c32d 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 83d9ae79510da26280a2f150e70312d35eeb07fb..e40845a425a29d8d2868e823c1ba34dbabd136c0 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 f150f446446cf99da82f4a5535a8e8f031d54b73..a9c4e3f3b1fccb9085f1bc9a6a2f018a055d683a 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 f866024b8e900cc094b488c49920e14aa9394b36..37384107530ee4dca645f12f1b50e4af5547dabc 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 cc337707a2962120eb035d355c328705381a152d..fc5151ff292b4571d9cb898d6246668d5f3b4dc8 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 733ca92b820d6b8a4230f7c8868494ec0410656e..d140fc3eef43b04ca7b9175efbdae2830e2d6282 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 f6850b53c030262d49b59205c1dec22923f1a38d..41521114366a298861c883b4d6f14b0eaf6c4276 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 7c72fc77be90a12c055329b3e71c07bfb0167bc1..a4ca265f6178218791bf83f6b8f259821e086a98 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 5d0a5410f8db0e32daf44b9523cd8b85614325ab..eca8247845e2a5990ee98426866fdf5ac929034d 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 b9543e7f47c041202767ae35be932721417f52ce..7de18080b879edb369811a321501c8fe0630e3b7 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 3775ccdac1dc2cddaa59f995d51eae76b4495028..db540564fbe7bda05b006b5fb7d2b6da2e33d7c5 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 ba1fd500f707566743ea4aa3c3b80ddd4a9d167b..912444bf603606e885d7b0c38c8f8bccbbe93d34 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 04c35908c535513f1c0aa0b5741f36281a01646b..038cbbcd678cca4d947eb4750e11314f643f2ad9 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 658bf67f12f2c67d9abe84984437ce98c4373958..64214670292739395dc38a024085dec52868d275 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 607fa340e9695ea1f66145e27e7ba0ac3183908d..d623e25cec2613d590562e5b17d077a10a833357 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 c2ecf4452627d36a4fdac3cf05d9758bb6a47701..8f3e913ee36c0851155649371f20ee92ef6b6571 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 cb00b38890ea48498eab31da2ff29cbc970ccddf..de4c2074e793de168aa5958803a2ba89452749dc 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 aefdbe855a3c4b6cee4330b14c4e3d958ddccd2b..1d2a79bdc52f2fadd6fe2aa782029936c76a28e0 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 a55bcab533d8ee05476ac6fdc0520129e6525771..8002b7e1165f1648d5edd39486c996f4eabe2bc6 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 d92a9c0b44ed00ed127808a011586e162b1e473e..69e9ea170b14c97ef81a9a5a4fa8ae855cce94d2 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 ac139853cdbd322c7aaba6743077186ebaf4ebc0..a39b0ec4eff8b7fce397866acc7be3a8b812c827 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 cac092c98dc400815ef3a8b221b43e6a948be888..9830f31d5fa9accedeb5edbde0c526df4ecefee2 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 52f49b28457c26c3c247dd4c137565cd9564dcc8..c0d63a2685937a10e6a53288403099bc78ed1fa9 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 845535ae04f567bbe5fa4c4c7f22854b077176b5..9c7b12e4c6345b2080ef4b989171929c505c8a40 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 73842c696af294adb729c7621e239fe7dcd7e4d8..e7f559086a6229ee75c970bd0b421086071bccb6 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 fc3fb076f1f9ecf4652cfa64f3daa7ca1e5d4478..8dcce84d257e596609e4062f8a46d684a72b2683 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 5951663d291423bc5b41213531578d816bc0de4e..10a15f97bd5a72417243b86c81cc7b3ddf1db2a6 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 62e01df372bdef15e9f2ee3e43ce4dc5a06044eb..54e84c0b55887d55017f8c16447424a594185f10 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 0f8a92ff72a6ebb7094e6dca9634f853346f2e6c..ad0e5993fc9ad8a6a53386ff243a51f6c5df48fa 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 90a44da1a10459410240506b22c944efab35a6e7..ba57fd46eebb44f0164ffd8aa2a5edf936ab3835 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 5f4900b5a29d4514ab8621e8689aba1a63bcb640..325a39bf59799f6b314d54ad131b892eec61ec44 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 bca17242d2071e22c232baab294d8dba0a27d77c..f50f6afdc06379f0ffaca3460df314e1eb0e4945 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 91ffecbf7178ec6d241ba5f4f1d6d509c3aa307c..de041307f7022678235d98372bf7119eb4d48eaa 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 8b24f637f420012953233832f9701f050fca73ff..3dab082b3954b7bc1f5e20463c6df5192305550b 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 2c3f50beaeaea9981beed9d4771bc49b11d83901..5f82a326145d5bc959afdeaa1e96c0cc41e5b2e3 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 0b8903f28718cb917a9742db79380c25d62747c9..5169db5072e2fc80805605c3517d8c6e779e5620 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 1fb49e6256205ccc5aff3514dfa0a16ee8713265..83abf3615f0ff3b1c72abbbfb5793ffd8727fd03 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 58f8b40dc26d0ee45ebec7b9ab018b4f9b0debd3..6827dbda962b3d4973133f38b723579ab1ddfd4d 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 ad97ad5146e7698dfe0dbac8331e089d093abc6f..fd39e8397d04d15fb33cfb54b2e1ad9cbc4d09f4 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 d4094601314873671a1c749c72b91a27452b5702..d25746dcde823f39638f70ee828127689ca31da9 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 cd0737c6bb8fea31471e7e9ba14637588b33c4de..28e57fcab0a79d18ea8d8a1b2b8be90cb05198db 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 900cd47e0dc02afaad237b1de8c1e98c6941e672..65931bf2d59319bede4f5a18b16e4a46f6c1ecf1 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 c96aa91d54a8287f66ebccaa4493f8d69ab496d5..8ae77cae79f3c7ccb625ddc0211e011bce228373 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 8a5a180d75f3ab03bb0ecce8c7a337dc9f3e0c17..4e5f21b3d8df8fa45da0735cdd0ebe1afac6d181 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 f81b7a122c57b82c8a8b841ca72e56d5fb275f48..96938b95a2ad4c09f3ec821ecc14c5cc3bc68270 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 cd882c7a050fee1a32cba0183adec7b1a4d323a7..3330d2a88de941896b2be432d404caa565a266eb 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 b0975082c44ecde816cfc332c940dfbd1783b04b..3a90553bbf000c1b1ea70ae11e7532a456f1c2f2 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 176e9ed6dd28f1fc55b7b237746325071d8a9e64..26ba41645e52949cb69f4048a14f065243d7756b 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 00c2fca5e22f05cb5fd0f00880ca346ba012dd24..cbca0d94d3e5ab1172df2dd9e5a4c226e85969de 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 de02b1890703c22265c8f2e71a43a473d926b02a..1398cb93564fc84db0c69ca4bae24ee415d8eb5a 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 f5914049f41a6c5eefe0b4ebd362d7d762c2e101..25c69253354ceaeadee24e98180048b9cd88b5ab 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 d2d56b831532a4fdbf6e3ca70cf52820b2dc42fc..c78def9bf4429eab1e5c9822a52732ee3a3c74ca 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 729f458dd8dfa3186b6646d7a2b37f1e68da3567..66dc762ec281f462648ad4dd1ad1ceaee2b74e09 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 f4b1158242941286e539c9a87bbc16d57ab1b3af..940fca54ab1f7e11693eda553a228126afc3a4e0 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 b63d5685a331a88d659e13ea9d15b9f17becc402..489209ecc33732631b9848beba7a9a81047a6ad5 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 ccd2a3043c5c9f319681ae9306c82ad0336f9a2b..f7d1038903eab6954374e6dac141b74683315a25 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 589686c1229432acbbeac9885213a019531174a9..cdc94782ec5ce3f1d18b7eac98c72d62b242fbdb 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 b0b870823fbf42b1dc3790978f460c66dac1e8f5..6ba515afee175751840edadfb7e6fc2ab01c5e46 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 0314e3035c027ea34aa26a1b259ceb5ea8451d89..2af8e055cf2f6129395dcddd717ae107ce727a0d 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 ff0b7572d334ca219b0aa007277a06e7aec24824..0fee718d832ccaae06b0bb96d810f23948fb4cbd 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 a97bc77b00f531d9dd0fc816a04a59a4ea73142f..d1959fe9452ce2510514dbd5290d0806732bb6e7 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 3f06ffe2bc2ee4ce5e96cb8e1e25bb7affff1779..8097a4bf3d371146b881a435c959546bbe7feb26 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 1550a2cec4b054a5d8b9dc3874855dc705cc5336..1c8484f9a80e2f19f6fe47002577c4ddaac910c7 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 5ce943fbc598faf21af32f86edb81d7abe187a91..2a09cb2bb5105f9a906f61b65dd3fc32cd8d784e 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"] }