Browse Source

New commandline option 'verbosity' to allow different log levels (#3364)

* Fix indentation

* Added a new commandline option 'verbosity', to support more than two levels of logging. Currently, levels 0 (none), 1 (info) and 2 (extra) are supported.
Current 'quiet' option has been kept for backwards compatibility and it has been mapped to the new 'verbosity' values 0 (--quiet=true) and 1 (--quiet=false).

* Fix missing dpi parameter.

* Fix indentation.

* Log levels support.

* Common handler for LogLevel

* LogLevel integration into wkhtmltopdf

* LogLevel integration into wkhtmltoimage

* Bindings updated to support loglevel
Daniel M. Lambea 8 years ago
parent
commit
c754e38b07

+ 1 - 1
include/wkhtmltox/converter.hh

@@ -32,7 +32,7 @@ public:
 	virtual ~Converter() {};
 
     int currentPhase();
-	int phaseCount();
+    int phaseCount();
     QString phaseDescription(int phase=-1);
     QString progressString();
     int httpErrorCode();

+ 6 - 2
include/wkhtmltox/imagesettings.hh

@@ -1,3 +1,6 @@
+// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
+// vi:set ts=4 sts=4 sw=4 noet :
+//
 // Copyright 2010 wkhtmltopdf authors
 //
 // This file is part of wkhtmltopdf.
@@ -19,6 +22,7 @@
 #define __IMAGESETTINGS_HH__
 
 #include <QString>
+#include <wkhtmltox/logging.hh>
 #include <wkhtmltox/loadsettings.hh>
 #include <wkhtmltox/websettings.hh>
 
@@ -57,8 +61,8 @@ struct DLL_PUBLIC ImageGlobal {
 	LoadPage loadPage;
 	Web web;
 
-	//! Be less verbose
-	bool quiet;
+	//! Log level
+	LogLevel logLevel;
 
 	bool transparent;
 

+ 43 - 0
include/wkhtmltox/logging.hh

@@ -0,0 +1,43 @@
+// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
+// vi:set ts=4 sts=4 sw=4 noet :
+//
+// Copyright 2010 wkhtmltopdf authors
+//
+// This file is part of wkhtmltopdf.
+//
+// wkhtmltopdf is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// wkhtmltopdf is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with wkhtmltopdf.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef __LOGGING_HH__
+#define __LOGGING_HH__
+
+#include <QMap>
+#include <QString>
+#include <wkhtmltox/dllbegin.inc>
+namespace wkhtmltopdf {
+namespace settings {
+
+enum LogLevel {
+	None,
+	Error,
+	Warn,
+	Info
+};
+
+DLL_PUBLIC LogLevel strToLogLevel(const char * s, bool * ok=0);
+DLL_PUBLIC QString logLevelToStr(const LogLevel & l, bool * ok=0);
+
+}
+}
+#include <wkhtmltox/dllend.inc>
+#endif //__LOGGING_HH__

+ 1 - 1
include/wkhtmltox/multipageloader.hh

@@ -45,7 +45,7 @@ class DLL_LOCAL MultiPageLoaderPrivate;
 class DLL_LOCAL MultiPageLoader: public QObject {
 	Q_OBJECT
 public:
-	MultiPageLoader(settings::LoadGlobal & s, bool mainLoader = false);
+	MultiPageLoader(settings::LoadGlobal & s, int dpi, bool mainLoader = false);
 	~MultiPageLoader();
 	LoaderObject * addResource(const QString & url, const settings::LoadPage & settings, const QString * data=NULL);
 	LoaderObject * addResource(const QUrl & url, const settings::LoadPage & settings);

+ 8 - 4
include/wkhtmltox/pdfsettings.hh

@@ -1,3 +1,6 @@
+// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
+// vi:set ts=4 sts=4 sw=4 noet :
+//
 // Copyright 2010 wkhtmltopdf authors
 //
 // This file is part of wkhtmltopdf.
@@ -21,6 +24,7 @@
 #include <QNetworkProxy>
 #include <QPrinter>
 #include <QString>
+#include <wkhtmltox/logging.hh>
 #include <wkhtmltox/loadsettings.hh>
 #include <wkhtmltox/websettings.hh>
 
@@ -82,13 +86,13 @@ struct DLL_PUBLIC PdfGlobal {
 	//! Size related settings
 	Size size;
 
-	//! Be less verbose
-	bool quiet;
+	//! Log level
+	LogLevel logLevel;
 
 	//! Should we use the graphics system
 	bool useGraphics;
-	
-	//! Should relative links be resolved
+
+	//! Should relative links be resolved or kept as-is
 	bool resolveRelativeLinks;
 
 	//! Should we orientate in landscape or portrate

+ 2 - 1
src/image/imagearguments.cc

@@ -31,7 +31,8 @@ ImageCommandLineParser::ImageCommandLineParser(wkhtmltopdf::settings::ImageGloba
 
 	extended(false);
 	qthack(false);
-	addarg("quiet", 'q', "Be less verbose", new ConstSetter<bool>(s.quiet,true));
+	addarg("quiet", 'q', "Be less verbose, maintained for backwards compatibility; Same as using --log-level none", new ConstSetter<wkhtmltopdf::settings::LogLevel>(s.logLevel, wkhtmltopdf::settings::None));
+	addarg("log-level", 0, "Set log level to: none, error, warn or info", new LogLevelSetter(s.logLevel, "level"));
 	addarg("width",0,"Set screen width, note that this is used only as a guide line. Use --disable-smart-width to make it strict.", new IntSetter(s.screenWidth,"int"));
 	addarg("height",0,"Set screen height (default is calculated from page content)", new IntSetter(s.screenHeight, "int"));
 	// addarg("scale-w",0,"Set width for resizing", new IntSetter(s.scale.width,"int"));

+ 1 - 1
src/image/wkhtmltoimage.cc

@@ -60,7 +60,7 @@ int main(int argc, char** argv) {
 	QObject::connect(&converter, SIGNAL(radiobuttonSvgChanged(const QString &)), style, SLOT(setRadioButtonSvg(const QString &)));
 	QObject::connect(&converter, SIGNAL(radiobuttonCheckedSvgChanged(const QString &)), style, SLOT(setRadioButtonCheckedSvg(const QString &)));
 
-	wkhtmltopdf::ProgressFeedback feedback(settings.quiet, converter);
+	wkhtmltopdf::ProgressFeedback feedback(settings.logLevel, converter);
 	bool success = converter.convert();
 	return handleError(success, converter.httpErrorCode());
 }

+ 1 - 1
src/lib/converter.hh

@@ -35,7 +35,7 @@ public:
 	virtual ~Converter() {};
 
     int currentPhase();
-	int phaseCount();
+    int phaseCount();
     QString phaseDescription(int phase=-1);
     QString progressString();
     int httpErrorCode();

+ 3 - 3
src/lib/image_c_bindings.cc

@@ -49,11 +49,11 @@
 using namespace wkhtmltopdf;
 
 void MyImageConverter::warning(const QString & message) {
-	if (warning_cb) (warning_cb)(reinterpret_cast<wkhtmltoimage_converter*>(this), message.toUtf8().constData());
+	if (warning_cb && globalSettings->logLevel > settings::Error) (warning_cb)(reinterpret_cast<wkhtmltoimage_converter*>(this), message.toUtf8().constData());
 }
 
 void MyImageConverter::error(const QString & message) {
-	if (error_cb) (error_cb)(reinterpret_cast<wkhtmltoimage_converter*>(this), message.toUtf8().constData());
+	if (error_cb && globalSettings->logLevel > settings::None) (error_cb)(reinterpret_cast<wkhtmltoimage_converter*>(this), message.toUtf8().constData());
 }
 
 void MyImageConverter::phaseChanged() {
@@ -104,7 +104,7 @@ CAPI(wkhtmltoimage_global_settings *) wkhtmltoimage_create_global_settings() {
 }
 
 CAPI(void) wkhtmltoimage_destroy_global_settings(wkhtmltoimage_global_settings * obj) {
-	delete reinterpret_cast<settings::ImageGlobal *>(obj);
+    delete reinterpret_cast<settings::ImageGlobal *>(obj);
 }
 
 CAPI(int) wkhtmltoimage_set_global_setting(wkhtmltoimage_global_settings * settings, const char * name, const char * value) {

+ 3 - 2
src/lib/imagesettings.cc

@@ -41,7 +41,8 @@ struct DLL_LOCAL ReflectImpl<ImageGlobal>: public ReflectClass {
 	ReflectImpl(ImageGlobal & c) {
 		WKHTMLTOPDF_REFLECT(screenWidth);
 		WKHTMLTOPDF_REFLECT(screenHeight);
-		WKHTMLTOPDF_REFLECT(quiet);
+		ReflectClass::add("quiet", new QuietArgBackwardsCompatReflect(c.logLevel));	// Fake the "quiet" argument
+		WKHTMLTOPDF_REFLECT(logLevel);
 		WKHTMLTOPDF_REFLECT(transparent);
 		WKHTMLTOPDF_REFLECT(useGraphics);
 		WKHTMLTOPDF_REFLECT(in);
@@ -60,7 +61,7 @@ CropSettings::CropSettings():
 	height(-1) {}
 
 ImageGlobal::ImageGlobal():
-	quiet(false),
+	logLevel(Info),
 	transparent(false),
 	useGraphics(false),
 	in(""),

+ 3 - 2
src/lib/imagesettings.hh

@@ -22,6 +22,7 @@
 #define __IMAGESETTINGS_HH__
 
 #include <QString>
+#include <wkhtmltox/logging.hh>
 #include <wkhtmltox/loadsettings.hh>
 #include <wkhtmltox/websettings.hh>
 
@@ -60,8 +61,8 @@ struct DLL_PUBLIC ImageGlobal {
 	LoadPage loadPage;
 	Web web;
 
-	//! Be less verbose
-	bool quiet;
+	//! Log level
+	LogLevel logLevel;
 
 	bool transparent;
 

+ 2 - 2
src/lib/lib.pri

@@ -22,8 +22,8 @@ PUBLIC_HEADERS += ../lib/converter.hh ../lib/multipageloader.hh ../lib/dllbegin.
 PUBLIC_HEADERS += ../lib/dllend.inc ../lib/loadsettings.hh ../lib/websettings.hh
 PUBLIC_HEADERS += ../lib/utilities.hh
 HEADERS += ../lib/multipageloader_p.hh  ../lib/converter_p.hh
-SOURCES += ../lib/loadsettings.cc ../lib/multipageloader.cc ../lib/tempfile.cc \
-	   ../lib/converter.cc ../lib/websettings.cc  \
+SOURCES += ../lib/loadsettings.cc ../lib/logging.cc ../lib/multipageloader.cc \
+	   ../lib/tempfile.cc ../lib/converter.cc ../lib/websettings.cc  \
   	   ../lib/reflect.cc ../lib/utilities.cc
 
 #Pdf

+ 62 - 0
src/lib/logging.cc

@@ -0,0 +1,62 @@
+// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
+// vi:set ts=4 sts=4 sw=4 noet :
+//
+// Copyright 2010 wkhtmltopdf authors
+//
+// This file is part of wkhtmltopdf.
+//
+// wkhtmltopdf is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// wkhtmltopdf is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with wkhtmltopdf.  If not, see <http://www.gnu.org/licenses/>.
+
+#include "logging.hh"
+#include <QMap>
+#include <QString>
+#include <wkhtmltox/dllbegin.inc>
+namespace wkhtmltopdf {
+namespace settings {
+
+// Centralized name-to-enum value mapping
+QMap<QString, LogLevel> logLevelMap() {
+	QMap<QString, LogLevel> res;
+	res["none"] = None;
+	res["error"] = Error;
+	res["warn"] = Warn;
+	res["info"] = Info;
+	return res;
+}
+
+QMap<QString, LogLevel> logLevels = logLevelMap();
+
+LogLevel strToLogLevel(const char * s, bool * ok) {
+	for (QMap<QString, LogLevel>::const_iterator i = logLevels.begin(); i != logLevels.end(); ++i) {
+		if (i.key().compare(s, Qt::CaseInsensitive) != 0) continue;
+		if (ok) *ok = true;
+		return i.value();
+	}
+	if (ok) *ok = false;
+	return Info;
+}
+
+QString logLevelToStr(const LogLevel & l, bool * ok) {
+	for (QMap<QString, LogLevel>::const_iterator i = logLevels.begin(); i != logLevels.end(); ++i) {
+		if (i.value() != l) continue;
+		if (ok) *ok = true;
+		return i.key();
+	}
+	if (ok) *ok = false;
+	return QString();
+}
+
+}
+}
+#include <wkhtmltox/dllend.inc>

+ 43 - 0
src/lib/logging.hh

@@ -0,0 +1,43 @@
+// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
+// vi:set ts=4 sts=4 sw=4 noet :
+//
+// Copyright 2010 wkhtmltopdf authors
+//
+// This file is part of wkhtmltopdf.
+//
+// wkhtmltopdf is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// wkhtmltopdf is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with wkhtmltopdf.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef __LOGGING_HH__
+#define __LOGGING_HH__
+
+#include <QMap>
+#include <QString>
+#include <wkhtmltox/dllbegin.inc>
+namespace wkhtmltopdf {
+namespace settings {
+
+enum LogLevel {
+	None,
+	Error,
+	Warn,
+	Info
+};
+
+DLL_PUBLIC LogLevel strToLogLevel(const char * s, bool * ok=0);
+DLL_PUBLIC QString logLevelToStr(const LogLevel & l, bool * ok=0);
+
+}
+}
+#include <wkhtmltox/dllend.inc>
+#endif //__LOGGING_HH__

+ 2 - 2
src/lib/pdf_c_bindings.cc

@@ -209,11 +209,11 @@ QApplication * a = 0;
 int usage = 0;
 
 void MyPdfConverter::warning(const QString & message) {
-	if (warning_cb) (warning_cb)(reinterpret_cast<wkhtmltopdf_converter*>(this), message.toUtf8().constData());
+	if (warning_cb && globalSettings->logLevel > settings::Error) (warning_cb)(reinterpret_cast<wkhtmltopdf_converter*>(this), message.toUtf8().constData());
 }
 
 void MyPdfConverter::error(const QString & message) {
-	if (error_cb) (error_cb)(reinterpret_cast<wkhtmltopdf_converter*>(this), message.toUtf8().constData());
+	if (error_cb && globalSettings->logLevel > settings::None) (error_cb)(reinterpret_cast<wkhtmltopdf_converter*>(this), message.toUtf8().constData());
 }
 
 void MyPdfConverter::phaseChanged() {

+ 3 - 2
src/lib/pdfsettings.cc

@@ -107,7 +107,8 @@ template<>
 struct DLL_LOCAL ReflectImpl<PdfGlobal>: public ReflectClass {
 	ReflectImpl(PdfGlobal & c) {
 		WKHTMLTOPDF_REFLECT(size);
-		WKHTMLTOPDF_REFLECT(quiet);
+		ReflectClass::add("quiet", new QuietArgBackwardsCompatReflect(c.logLevel));	// Fake the "quiet" argument
+		WKHTMLTOPDF_REFLECT(logLevel);
 		WKHTMLTOPDF_REFLECT(useGraphics);
 		WKHTMLTOPDF_REFLECT(resolveRelativeLinks);
 		WKHTMLTOPDF_REFLECT(orientation);
@@ -368,7 +369,7 @@ Margin::Margin():
 	left(UnitReal(10,QPrinter::Millimeter)) {}
 
 PdfGlobal::PdfGlobal():
-	quiet(false),
+	logLevel(Info),
 	useGraphics(false),
 	resolveRelativeLinks(true),
 	orientation(QPrinter::Portrait),

+ 3 - 2
src/lib/pdfsettings.hh

@@ -24,6 +24,7 @@
 #include <QNetworkProxy>
 #include <QPrinter>
 #include <QString>
+#include <wkhtmltox/logging.hh>
 #include <wkhtmltox/loadsettings.hh>
 #include <wkhtmltox/websettings.hh>
 
@@ -85,8 +86,8 @@ struct DLL_PUBLIC PdfGlobal {
 	//! Size related settings
 	Size size;
 
-	//! Be less verbose
-	bool quiet;
+	//! Log level
+	LogLevel logLevel;
 
 	//! Should we use the graphics system
 	bool useGraphics;

+ 29 - 0
src/lib/reflect.hh

@@ -25,6 +25,7 @@
 #define typeof decltype
 #endif
 
+#include "logging.hh"
 #include "loadsettings.hh"
 #include "websettings.hh"
 #include <QStringList>
@@ -61,12 +62,40 @@ public:
 	~ReflectClass();
 };
 
+class DLL_LOCAL QuietArgBackwardsCompatReflect: public ReflectSimple {
+	LogLevel & l;
+public:
+	QuietArgBackwardsCompatReflect(LogLevel & _): l(_) {}
+	QString get() {return l == None ? "true":"false";}
+	void set(const QString & value, bool * ok) {
+		if (value == "true") l=None;
+		else if (value == "false") l=Info;
+		else {
+			*ok=false;
+			return;
+		}
+		*ok=true;
+	}
+};
+
 template <typename X>
 class DLL_LOCAL ReflectImpl {
 private:
 	ReflectImpl();
 };
 
+template<>
+struct DLL_LOCAL ReflectImpl<LogLevel>: public ReflectSimple {
+	LogLevel & l;
+	ReflectImpl(LogLevel & _): l(_) {	}
+	QString get() {
+		return logLevelToStr(l, 0);
+	}
+	void set(const QString & value, bool * ok) {
+		l = strToLogLevel(qPrintable(value), ok);
+	}
+};
+
 template<>
 struct DLL_LOCAL ReflectImpl<bool>: public ReflectSimple {
 	bool & b;

+ 2 - 1
src/pdf/pdfarguments.cc

@@ -176,7 +176,8 @@ PdfCommandLineParser::PdfCommandLineParser(PdfGlobal & s, QList<PdfObject> & ps)
 	extended(false);
 	qthack(false);
 
-	addarg("quiet", 'q', "Be less verbose", new ConstSetter<bool>(s.quiet,true));
+	addarg("quiet", 'q', "Be less verbose, maintained for backwards compatibility; Same as using --log-level none", new ConstSetter<LogLevel>(s.logLevel, None));
+	addarg("log-level", 0, "Set log level to: none, error, warn or info", new LogLevelSetter(s.logLevel, "level"));
 
 	addarg("no-collate", 0, "Do not collate when printing multiple copies", new ConstSetter<bool>(s.collate, false));
 	addarg("collate", 0, "Collate when printing multiple copies", new ConstSetter<bool>(s.collate, true));

+ 2 - 2
src/pdf/wkhtmltopdf.cc

@@ -208,7 +208,7 @@ int main(int argc, char * argv[]) {
 			parser.parseArguments(nargc, (const char**)nargv, true);
 
 			PdfConverter converter(globalSettings);
-			ProgressFeedback feedback(globalSettings.quiet, converter);
+			ProgressFeedback feedback(globalSettings.logLevel, converter);
 			foreach (const PdfObject & object, objectSettings)
 				converter.addResource(object);
 
@@ -227,7 +227,7 @@ int main(int argc, char * argv[]) {
 	QObject::connect(&converter, SIGNAL(radiobuttonSvgChanged(const QString &)), style, SLOT(setRadioButtonSvg(const QString &)));
 	QObject::connect(&converter, SIGNAL(radiobuttonCheckedSvgChanged(const QString &)), style, SLOT(setRadioButtonCheckedSvg(const QString &)));
 
-	ProgressFeedback feedback(globalSettings.quiet, converter);
+	ProgressFeedback feedback(globalSettings.logLevel, converter);
 	foreach (const PdfObject & object, objectSettings)
 		converter.addResource(object);
 

+ 14 - 0
src/shared/arghandler.inl

@@ -22,6 +22,7 @@
 #define __ARGHANDLER_INL__
 #include "commandlineparserbase.hh"
 #include <wkhtmltox/loadsettings.hh>
+#include <wkhtmltox/logging.hh>
 
 template <typename T> class DstArgHandler: public ArgHandler {
 public:
@@ -165,6 +166,19 @@ struct FloatTM: public SomeSetterTM<float> {
 */
 typedef SomeSetter<FloatTM> FloatSetter;
 
+struct LogLevelTM: public SomeSetterTM<wkhtmltopdf::settings::LogLevel> {
+	static wkhtmltopdf::settings::LogLevel strToT(const char * val, bool & ok) {
+		return wkhtmltopdf::settings::strToLogLevel(val, &ok);
+	}
+	static QString TToStr(const wkhtmltopdf::settings::LogLevel & l, bool & ok) {
+		return wkhtmltopdf::settings::logLevelToStr(l, &ok);
+	}
+};
+/*!
+  Argument handler setting an loglevel variable
+*/
+typedef SomeSetter<LogLevelTM> LogLevelSetter;
+
 struct StrTM: public SomeSetterTM<const char *> {
 	static const char * strToT(const char * val, bool & ok) {
 		ok=true;

+ 6 - 5
src/shared/progressfeedback.cc

@@ -38,7 +38,7 @@ namespace wkhtmltopdf {
   \param message The warning message
 */
 void ProgressFeedback::warning(const QString &message) {
-	if (quiet) return;
+	if (logLevel < settings::Warn) return;
 	fprintf(stderr, "Warning: %s",S(message));
 	for (int l = 9 + message.size(); l < lw; ++l)
 		fprintf(stderr, " ");
@@ -51,6 +51,7 @@ void ProgressFeedback::warning(const QString &message) {
   \param message The error message
 */
 void ProgressFeedback::error(const QString &message) {
+	if (logLevel < settings::Error) return;
 	fprintf(stderr, "Error: %s",S(message));
 	for (int l = 7 + message.size(); l < lw; ++l)
 		fprintf(stderr, " ");
@@ -62,7 +63,7 @@ void ProgressFeedback::error(const QString &message) {
   \brief Write out the name of the next phase
 */
 void ProgressFeedback::phaseChanged() {
-	if (quiet) return;
+	if (logLevel < settings::Info) return;
 	QString desc=converter.phaseDescription();
 	fprintf(stderr, "%s", S(desc));
 
@@ -79,7 +80,7 @@ void ProgressFeedback::phaseChanged() {
   \brief Update progress bar
 */
 void ProgressFeedback::progressChanged(int progress) {
-	if (quiet) return;
+	if (logLevel < settings::Info) return;
 	fprintf(stderr, "[");
 	int w=60;
 	progress *= w;
@@ -97,8 +98,8 @@ void ProgressFeedback::progressChanged(int progress) {
 	fprintf(stderr, "\r");
 }
 
-ProgressFeedback::ProgressFeedback(bool q, Converter & _):
-    quiet(q), converter(_), lw(0) {
+ProgressFeedback::ProgressFeedback(settings::LogLevel l, Converter & _):
+    logLevel(l), converter(_), lw(0) {
     connect(&converter, SIGNAL(warning(const QString &)), this, SLOT(warning(const QString &)));
 	connect(&converter, SIGNAL(error(const QString &)), this, SLOT(error(const QString &)));
 	connect(&converter, SIGNAL(phaseChanged()), this, SLOT(phaseChanged()));

+ 3 - 2
src/shared/progressfeedback.hh

@@ -21,12 +21,13 @@
 #ifndef __PROGRESSFEEDBACK_HH__
 #define __PROGRESSFEEDBACK_HH__
 #include <wkhtmltox/converter.hh>
+#include <wkhtmltox/logging.hh>
 namespace wkhtmltopdf {
 
 class ProgressFeedback: public QObject {
 	Q_OBJECT
 private:
-	bool quiet;
+	settings::LogLevel logLevel;
 	Converter & converter;
 	int lw;
 public slots:
@@ -35,7 +36,7 @@ public slots:
 	void phaseChanged();
 	void progressChanged(int progress);
 public:
-	ProgressFeedback(bool quiet, Converter & _);
+	ProgressFeedback(settings::LogLevel logLevel, Converter & _);
 };
 
 }