It looks to me like it is only used for scoping rules, so that Lock falls out of scope at the end of the block.
If that's the reason for it, then it's completely unnecesarry:
// some other code...
string s = "oh hai";
{
Lock lock(logMutex);
// MAGIC HAPPENS
}
s = "oh bai";