Add defaultLogLevel to LoggingCategory
Add possibility to define default logging category log level. Just like in QLoggingCategory constructor. [ChangeLog][QML Elements][LoggingCategory] Added defaultLogLevel property. It is possible to define default log level that LoggingCategory is enabled for. Task-number: QTBUG-67094 Change-Id: I12557dfb7c228c40b325d0dccde4c525acae0300 Reviewed-by: Michael Brasser <michael.brasser@live.com>
This commit is contained in:
parent
8597f74e52
commit
f319fcf709
|
@ -198,9 +198,20 @@ Module {
|
|||
Component {
|
||||
name: "QQmlLoggingCategory"
|
||||
prototype: "QObject"
|
||||
exports: ["QtQml/LoggingCategory 2.8"]
|
||||
exportMetaObjectRevisions: [0]
|
||||
exports: ["QtQml/LoggingCategory 2.12", "QtQml/LoggingCategory 2.8"]
|
||||
exportMetaObjectRevisions: [1, 0]
|
||||
Enum {
|
||||
name: "DefaultLogLevel"
|
||||
values: {
|
||||
"Debug": 0,
|
||||
"Info": 4,
|
||||
"Warning": 1,
|
||||
"Critical": 2,
|
||||
"Fatal": 3
|
||||
}
|
||||
}
|
||||
Property { name: "name"; type: "string" }
|
||||
Property { name: "defaultLogLevel"; revision: 1; type: "DefaultLogLevel" }
|
||||
}
|
||||
Component {
|
||||
name: "QQmlTimer"
|
||||
|
|
|
@ -228,7 +228,9 @@ void QQmlEnginePrivate::registerBaseTypes(const char *uri, int versionMajor, int
|
|||
qmlRegisterType<QQmlInstantiator>(uri, versionMajor, (versionMinor < 1 ? 1 : versionMinor), "Instantiator"); //Only available in >=2.1
|
||||
qmlRegisterCustomType<QQmlConnections>(uri, versionMajor, versionMinor,"Connections", new QQmlConnectionsParser);
|
||||
qmlRegisterType<QQmlInstanceModel>();
|
||||
qmlRegisterType<QQmlLoggingCategory>(uri, versionMajor, (versionMinor < 8 ? 8 : versionMinor), "LoggingCategory"); //Only available in >=2.8
|
||||
|
||||
qmlRegisterType<QQmlLoggingCategory>(uri, versionMajor, 8, "LoggingCategory"); //Only available in >=2.8
|
||||
qmlRegisterType<QQmlLoggingCategory,1>(uri, versionMajor, 12, "LoggingCategory"); //Only available in >=2.12
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
LoggingCategory {
|
||||
id: category
|
||||
name: "com.qt.category"
|
||||
defaultLogLevel: LoggingCategory.Warning
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
|
@ -84,6 +85,17 @@
|
|||
\sa QLoggingCategory::categoryName()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\qmlproperty enumeration QtQml::LoggingCategory::defaultLogLevel
|
||||
\since 5.12
|
||||
|
||||
Holds the default log level of the logging category. By default it is
|
||||
created with the LoggingCategory.Debug log level.
|
||||
|
||||
\note This property needs to be set when declaring the LoggingCategory
|
||||
and cannot be changed later.
|
||||
*/
|
||||
|
||||
QQmlLoggingCategory::QQmlLoggingCategory(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_initialized(false)
|
||||
|
@ -99,6 +111,11 @@ QString QQmlLoggingCategory::name() const
|
|||
return QString::fromUtf8(m_name);
|
||||
}
|
||||
|
||||
QQmlLoggingCategory::DefaultLogLevel QQmlLoggingCategory::defaultLogLevel() const
|
||||
{
|
||||
return m_defaultLogLevel;
|
||||
}
|
||||
|
||||
QLoggingCategory *QQmlLoggingCategory::category() const
|
||||
{
|
||||
return m_category.data();
|
||||
|
@ -111,10 +128,25 @@ void QQmlLoggingCategory::classBegin()
|
|||
void QQmlLoggingCategory::componentComplete()
|
||||
{
|
||||
m_initialized = true;
|
||||
if (m_name.isNull())
|
||||
if (m_name.isNull()) {
|
||||
qmlWarning(this) << QLatin1String("Declaring the name of the LoggingCategory is mandatory and cannot be changed later !");
|
||||
} else {
|
||||
QScopedPointer<QLoggingCategory> category(new QLoggingCategory(m_name.constData(), QtMsgType(m_defaultLogLevel)));
|
||||
m_category.swap(category);
|
||||
}
|
||||
}
|
||||
|
||||
void QQmlLoggingCategory::setDefaultLogLevel(DefaultLogLevel defaultLogLevel)
|
||||
{
|
||||
if (m_initialized) {
|
||||
qmlWarning(this) << QLatin1String("The defaultLogLevel of a LoggingCategory cannot be changed after the Item is created");
|
||||
return;
|
||||
}
|
||||
|
||||
m_defaultLogLevel = defaultLogLevel;
|
||||
}
|
||||
|
||||
|
||||
void QQmlLoggingCategory::setName(const QString &name)
|
||||
{
|
||||
if (m_initialized) {
|
||||
|
@ -123,8 +155,6 @@ void QQmlLoggingCategory::setName(const QString &name)
|
|||
}
|
||||
|
||||
m_name = name.toUtf8();
|
||||
QScopedPointer<QLoggingCategory> category(new QLoggingCategory(m_name.constData()));
|
||||
m_category.swap(category);
|
||||
}
|
||||
|
||||
#include "moc_qqmlloggingcategory_p.cpp"
|
||||
|
|
|
@ -65,11 +65,23 @@ class QQmlLoggingCategory : public QObject, public QQmlParserStatus
|
|||
Q_INTERFACES(QQmlParserStatus)
|
||||
|
||||
Q_PROPERTY(QString name READ name WRITE setName)
|
||||
Q_PROPERTY(DefaultLogLevel defaultLogLevel READ defaultLogLevel WRITE setDefaultLogLevel REVISION 1)
|
||||
|
||||
public:
|
||||
enum DefaultLogLevel {
|
||||
Debug = QtDebugMsg,
|
||||
Info = QtInfoMsg,
|
||||
Warning = QtWarningMsg,
|
||||
Critical = QtCriticalMsg,
|
||||
Fatal = QtFatalMsg
|
||||
};
|
||||
Q_ENUM(DefaultLogLevel);
|
||||
|
||||
QQmlLoggingCategory(QObject *parent = nullptr);
|
||||
virtual ~QQmlLoggingCategory();
|
||||
|
||||
DefaultLogLevel defaultLogLevel() const;
|
||||
void setDefaultLogLevel(DefaultLogLevel defaultLogLevel);
|
||||
QString name() const;
|
||||
void setName(const QString &name);
|
||||
|
||||
|
@ -81,6 +93,7 @@ public:
|
|||
private:
|
||||
QByteArray m_name;
|
||||
QScopedPointer<QLoggingCategory> m_category;
|
||||
DefaultLogLevel m_defaultLogLevel = Debug;
|
||||
bool m_initialized;
|
||||
};
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.12
|
||||
|
||||
Item {
|
||||
id:root
|
||||
|
@ -47,6 +47,12 @@ Item {
|
|||
name: "qt.test"
|
||||
}
|
||||
|
||||
LoggingCategory {
|
||||
id: testCategoryStartingFromWarning
|
||||
name: "qt.test.warning"
|
||||
defaultLogLevel: LoggingCategory.Warning
|
||||
}
|
||||
|
||||
LoggingCategory {
|
||||
id: emptyCategory
|
||||
}
|
||||
|
@ -57,8 +63,14 @@ Item {
|
|||
console.info(testCategory, "console.info");
|
||||
console.warn(testCategory, "console.warn");
|
||||
console.error(testCategory, "console.error");
|
||||
console.debug(testCategoryStartingFromWarning, "console.debug");
|
||||
console.log(testCategoryStartingFromWarning, "console.log");
|
||||
console.info(testCategoryStartingFromWarning, "console.info");
|
||||
console.warn(testCategoryStartingFromWarning, "console.warn");
|
||||
console.error(testCategoryStartingFromWarning, "console.error");
|
||||
|
||||
testCategory.name = "qt.test2";
|
||||
testCategory.defaultLogLevel = LoggingCategory.Debug;
|
||||
|
||||
console.error(emptyCategory, "console.error");
|
||||
}
|
||||
|
|
|
@ -112,8 +112,13 @@ void tst_qqmlconsole::categorized_logging()
|
|||
QVERIFY(messageHandler.messages().contains("qt.test: console.info"));
|
||||
QVERIFY(messageHandler.messages().contains("qt.test: console.warn"));
|
||||
QVERIFY(messageHandler.messages().contains("qt.test: console.error"));
|
||||
QVERIFY(!messageHandler.messages().contains("qt.test.warning: console.debug"));
|
||||
QVERIFY(!messageHandler.messages().contains("qt.test.warning: console.log"));
|
||||
QVERIFY(!messageHandler.messages().contains("qt.test.warning: console.info"));
|
||||
QVERIFY(messageHandler.messages().contains("qt.test.warning: console.warn"));
|
||||
QVERIFY(messageHandler.messages().contains("qt.test.warning: console.error"));
|
||||
|
||||
QString emptyCategory = "default: " + QString::fromLatin1("%1:%2:%3: ").arg(testUrl.toString()).arg(50).arg(5) +
|
||||
QString emptyCategory = "default: " + QString::fromLatin1("%1:%2:%3: ").arg(testUrl.toString()).arg(56).arg(5) +
|
||||
"QML LoggingCategory: Declaring the name of the LoggingCategory is mandatory and cannot be changed later !";
|
||||
QVERIFY(messageHandler.messages().contains(emptyCategory));
|
||||
|
||||
|
@ -121,7 +126,11 @@ void tst_qqmlconsole::categorized_logging()
|
|||
"QML LoggingCategory: The name of a LoggingCategory cannot be changed after the Item is created";
|
||||
QVERIFY(messageHandler.messages().contains(changedCategory));
|
||||
|
||||
QString useEmptyCategory = "default: " + QString::fromLatin1("%1:%2: ").arg(testUrl.toString()).arg(63) +
|
||||
QString changedDefaultLogLevel = "default: " + QString::fromLatin1("%1:%2:%3: ").arg(testUrl.toString()).arg(45).arg(5) +
|
||||
"QML LoggingCategory: The defaultLogLevel of a LoggingCategory cannot be changed after the Item is created";
|
||||
QVERIFY(messageHandler.messages().contains(changedDefaultLogLevel));
|
||||
|
||||
QString useEmptyCategory = "default: " + QString::fromLatin1("%1:%2: ").arg(testUrl.toString()).arg(75) +
|
||||
"Error: A QmlLoggingCatgory was provided without a valid name";
|
||||
QVERIFY(messageHandler.messages().contains(useEmptyCategory));
|
||||
|
||||
|
|
Loading…
Reference in New Issue