diff --git a/src/lib.rs b/src/lib.rs
index 1218f03bcec340b2b59d0b3bef1fa757776a5a41..ab03f652fa6e2f46fa48d03709f65f46e570c64b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -634,6 +634,14 @@ fn start_discover(
             raft_id: %raft_id,
             initiator: "admin",
         );
+        crate::audit!(
+            message: "local database connected on `{instance_id}`",
+            title: "connect_local_db",
+            severity: Low,
+            instance_id: %instance_id,
+            raft_id: %raft_id,
+            initiator: "admin",
+        );
         return Ok(());
     }
 
@@ -724,6 +732,15 @@ fn start_boot(config: &PicodataConfig) -> Result<(), Error> {
     .unwrap();
 
     postjoin(config, storage, raft_storage)?;
+    // In this case `create_local_db` is logged in postjoin
+    crate::audit!(
+        message: "local database connected on `{instance_id}`",
+        title: "connect_local_db",
+        severity: Low,
+        instance_id: %instance_id,
+        raft_id: %raft_id,
+        initiator: "admin",
+    );
 
     Ok(())
 }
diff --git a/src/traft/node.rs b/src/traft/node.rs
index c4e7e9ee26fdc943fc077c63cc1f66dae27c02e8..02a4a30407a5b90d07b4e9047d3e91e8018b185c 100644
--- a/src/traft/node.rs
+++ b/src/traft/node.rs
@@ -865,6 +865,7 @@ impl NodeImpl {
                 // * Or its raft id has changed, meaning it's no longer the same node.
                 // WARN: this condition will not pass on the joining instance
                 // as it preemptively puts itself into `_pico_instance` table.
+                // Locally it's logged in src/lib.rs.
                 if old.as_ref().map(|x| x.raft_id) != Some(new.raft_id) {
                     let instance_id = &new.instance_id;
                     crate::audit!(
diff --git a/test/int/test_audit.py b/test/int/test_audit.py
index 3c4fb3a324c2e35b37ab7a9c917862181ba1b7f2..c22b21797c16790c1dda0193ca3d61c45244d1b2 100644
--- a/test/int/test_audit.py
+++ b/test/int/test_audit.py
@@ -89,6 +89,18 @@ def test_startup(instance: Instance):
     assert event is not None
     assert event["initiator"] == "admin"
 
+    create_db = take_until_title(events, "create_local_db")
+    assert create_db is not None
+    assert create_db["initiator"] == "admin"
+    assert create_db["instance_id"] == "i1"
+    assert create_db["raft_id"] == "1"
+
+    event = take_until_title(events, "connect_local_db")
+    assert event is not None
+    assert event["initiator"] == "admin"
+    assert event["instance_id"] == "i1"
+    assert event["raft_id"] == "1"
+
 
 def test_integrity_violation(instance: Instance):
     # Instance was up for some time
@@ -139,6 +151,12 @@ def test_recover_database(instance: Instance):
     assert event["instance_id"] == "i1"
     assert event["raft_id"] == "1"
 
+    event = take_until_title(events, "connect_local_db")
+    assert event is not None
+    assert event["initiator"] == "admin"
+    assert event["instance_id"] == "i1"
+    assert event["raft_id"] == "1"
+
 
 def test_create_drop_table(instance: Instance):
     instance.start()