diff --git a/src/plugins/bazaar/bazaarclient.cpp b/src/plugins/bazaar/bazaarclient.cpp
index 34ef1339a6b6721e8aa3292f3c56dd3464755764..03e8487b400565c4ac6db536916e2d59fc070835 100644
--- a/src/plugins/bazaar/bazaarclient.cpp
+++ b/src/plugins/bazaar/bazaarclient.cpp
@@ -339,6 +339,50 @@ VCSBase::VCSBaseEditorParameterWidget *BazaarClient::createDiffEditor(
     return new BazaarDiffParameterWidget(this, parameters);
 }
 
+class BazaarLogParameterWidget : public VCSBase::VCSBaseEditorParameterWidget
+{
+    Q_OBJECT
+public:
+    BazaarLogParameterWidget(BazaarClient *client,
+                             const BazaarCommandParameters &p, QWidget *parent = 0) :
+        VCSBase::VCSBaseEditorParameterWidget(parent), m_client(client), m_params(p)
+    {
+        mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"),
+                                   tr("Show files changed in each revision")),
+                   &m_client->settings()->logVerbose);
+        mapSetting(addToggleButton(QLatin1String("--forward"), tr("Forward"),
+                                   tr("Show from oldest to newest")),
+                   &m_client->settings()->logForward);
+        mapSetting(addToggleButton(QLatin1String("--include-merges"), tr("Include merges"),
+                                   tr("Show merged revisions")),
+                   &m_client->settings()->logIncludeMerges);
+
+        QList<ComboBoxItem> logChoices;
+        logChoices << ComboBoxItem(tr("Detailed"), QLatin1String("long"))
+                   << ComboBoxItem(tr("Moderately short"), QLatin1String("short"))
+                   << ComboBoxItem(tr("One line"), QLatin1String("line"))
+                   << ComboBoxItem(tr("GNU ChangeLog"), QLatin1String("gnu-changelog"));
+        mapSetting(addComboBox(QLatin1String("--log-format"), logChoices),
+                   &m_client->settings()->logFormat);
+    }
+
+    void executeCommand()
+    {
+        m_client->log(m_params.workingDir, m_params.files, m_params.extraOptions);
+    }
+
+private:
+    BazaarClient* m_client;
+    const BazaarCommandParameters m_params;
+};
+
+VCSBase::VCSBaseEditorParameterWidget *BazaarClient::createLogEditor(
+    const QString &workingDir, const QStringList &files, const QStringList &extraOptions)
+{
+    const BazaarCommandParameters parameters(workingDir, files, extraOptions);
+    return new BazaarLogParameterWidget(this, parameters);
+}
+
 } //namespace Internal
 } // namespace Bazaar
 
diff --git a/src/plugins/bazaar/bazaarclient.h b/src/plugins/bazaar/bazaarclient.h
index 3ea6320294f108bd80a56e51205cc88fc99fac78..9037247f634860d693b05496972483493f989edb 100644
--- a/src/plugins/bazaar/bazaarclient.h
+++ b/src/plugins/bazaar/bazaarclient.h
@@ -80,6 +80,9 @@ protected:
                                                             const QStringList &extraOptions);
     QStringList logArguments(const QStringList &files,
                              const QStringList &extraOptions) const;
+    VCSBase::VCSBaseEditorParameterWidget *createLogEditor(const QString &workingDir,
+                                                           const QStringList &files,
+                                                           const QStringList &extraOptions);
     QStringList statusArguments(const QString &file) const;
     QStringList viewArguments(const QString &revision) const;
 
diff --git a/src/plugins/bazaar/bazaarsettings.cpp b/src/plugins/bazaar/bazaarsettings.cpp
index 83a8f84d688c01d38cf5df00f47501aa3eb9e927..c0d650c4ca080157732fff43a5e26de36c98a42b 100644
--- a/src/plugins/bazaar/bazaarsettings.cpp
+++ b/src/plugins/bazaar/bazaarsettings.cpp
@@ -40,10 +40,18 @@ namespace Internal {
 
 const QLatin1String diffIgnoreWhiteSpaceKey("diffIgnoreWhiteSpace");
 const QLatin1String diffIgnoreBlankLinesKey("diffIgnoreBlankLines");
+const QLatin1String logVerboseKey("logVerbose");
+const QLatin1String logForwardKey("logForward");
+const QLatin1String logIncludeMergesKey("logIncludeMerges");
+const QLatin1String logFormatKey("logFormat");
 
 BazaarSettings::BazaarSettings() :
     diffIgnoreWhiteSpace(false),
-    diffIgnoreBlankLines(false)
+    diffIgnoreBlankLines(false),
+    logVerbose(false),
+    logForward(false),
+    logIncludeMerges(false),
+    logFormat(QLatin1String("long"))
 {
     setSettingsGroup(QLatin1String(Constants::BAZAAR));
     setBinary(QLatin1String(Constants::BAZAARDEFAULT));
@@ -55,6 +63,10 @@ BazaarSettings& BazaarSettings::operator=(const BazaarSettings& other)
     if (this != &other) {
         diffIgnoreWhiteSpace = other.diffIgnoreWhiteSpace;
         diffIgnoreBlankLines = other.diffIgnoreBlankLines;
+        logVerbose = other.logVerbose;
+        logForward = other.logForward;
+        logIncludeMerges = other.logIncludeMerges;
+        logFormat = other.logFormat;
     }
     return *this;
 }
@@ -70,6 +82,10 @@ void BazaarSettings::writeSettings(QSettings *settings) const
     settings->beginGroup(settingsGroup());
     settings->setValue(diffIgnoreWhiteSpaceKey, diffIgnoreWhiteSpace);
     settings->setValue(diffIgnoreBlankLinesKey, diffIgnoreBlankLines);
+    settings->setValue(logVerboseKey, logVerbose);
+    settings->setValue(logForwardKey, logForward);
+    settings->setValue(logIncludeMergesKey, logIncludeMerges);
+    settings->setValue(logFormatKey, logFormat);
     settings->endGroup();
 }
 
@@ -79,6 +95,10 @@ void BazaarSettings::readSettings(const QSettings *settings)
     const QString keyRoot = settingsGroup() + QLatin1Char('/');
     diffIgnoreWhiteSpace = settings->value(keyRoot + diffIgnoreWhiteSpaceKey, false).toBool();
     diffIgnoreBlankLines = settings->value(keyRoot + diffIgnoreBlankLinesKey, false).toBool();
+    logVerbose = settings->value(keyRoot + logVerboseKey, false).toBool();
+    logForward = settings->value(keyRoot + logForwardKey, false).toBool();
+    logIncludeMerges = settings->value(keyRoot + logIncludeMergesKey, false).toBool();
+    logFormat = settings->value(keyRoot + logFormatKey, QLatin1String("long")).toString();
 }
 
 bool BazaarSettings::equals(const VCSBaseClientSettings &rhs) const
@@ -88,7 +108,11 @@ bool BazaarSettings::equals(const VCSBaseClientSettings &rhs) const
         return false;
     return VCSBaseClientSettings::equals(rhs)
             && diffIgnoreWhiteSpace == bzrRhs->diffIgnoreWhiteSpace
-            && diffIgnoreBlankLines == bzrRhs->diffIgnoreBlankLines;
+            && diffIgnoreBlankLines == bzrRhs->diffIgnoreBlankLines
+            && logVerbose == bzrRhs->logVerbose
+            && logForward == bzrRhs->logForward
+            && logIncludeMerges == bzrRhs->logIncludeMerges
+            && logFormat == bzrRhs->logFormat;
 }
 
 } // namespace Internal
diff --git a/src/plugins/bazaar/bazaarsettings.h b/src/plugins/bazaar/bazaarsettings.h
index b23573d8012aa3f58cead4a2f628ee76811be65b..32040b307b95de7480b7b0e89e1922dc343635eb 100644
--- a/src/plugins/bazaar/bazaarsettings.h
+++ b/src/plugins/bazaar/bazaarsettings.h
@@ -51,6 +51,11 @@ public:
 
     bool diffIgnoreWhiteSpace;
     bool diffIgnoreBlankLines;
+
+    bool logVerbose;
+    bool logForward;
+    bool logIncludeMerges;
+    QString logFormat;
 };
 
 } // namespace Internal