diff --git a/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.C b/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.C
index 2c5087c..0137c89 100644
--- a/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.C
+++ b/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.C
@@ -36,6 +36,7 @@ Description
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 defineTypeNameAndDebug(Foam::IOdictionary, 0);
+bool Foam::IOdictionary::writeDictionaryLog(Foam::debug::infoSwitch("writeDictionaryLog", 0));
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
@@ -53,6 +54,14 @@ void Foam::IOdictionary::readFile(const bool masterOnly)
         }
         readStream(typeName) >> *this;
         close();
+
+        if (writeDictionaryLog)
+        {
+            Info<<"Settings for " << name() << " from " << objectPath() << ":" <<nl;
+            writeHeader(Info);
+            Info<<*this;
+            Info<<"End of " << name() << " from " << objectPath() <<nl;
+        }
     }
 
     if (masterOnly && Pstream::parRun())
diff --git a/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.H b/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.H
index 581d9be..df9c0cd 100644
--- a/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.H
+++ b/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionary.H
@@ -57,6 +57,9 @@ class IOdictionary
     public dictionary
 {
 
+    // Private data
+        static bool writeDictionaryLog;
+
     // Private Member Functions
 
         //- read dictionary from file
diff --git a/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionaryIO.C b/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionaryIO.C
index 288056f..80e1001 100644
--- a/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionaryIO.C
+++ b/src/OpenFOAM/db/IOobjects/IOdictionary/IOdictionaryIO.C
@@ -36,6 +36,15 @@ Description
 bool Foam::IOdictionary::readData(Istream& is)
 {
     is >> *this;
+
+    if (writeDictionaryLog)
+    {
+        Info<<"Settings for " << name() << " from " << objectPath() << ":" <<nl;
+        writeHeader(Info);
+        Info<<*this;
+        Info<<"End of " << name() << " from " << objectPath() <<nl;
+    }
+
     return !is.bad();
 }
 
