コード例 #1
0
TLogger *TLoggerFactory::create(const QString &key)
{
    QMutexLocker locker(&mutex);
 
    loadPlugins();
    TLogger *logger = 0;
    QString k = key.toLower();
    if (k == TFileLogger().key().toLower()) {
        logger = new TFileLogger;
    } else {
        for (QListIterator<TLoggerInterface *> i(*ssifs); i.hasNext(); ) {
            TLoggerInterface *lif = i.next();
            if (lif->keys().contains(k)) {
                logger = lif->create(k);
                break;
            }
        }
    }
    return logger;
}
コード例 #2
0
/*!
  Creates and returns a TLogger object that matches the given key,
  or returns 0 if no matching logger is found.
*/
TLogger *TLoggerFactory::create(const QString &key)
{
    const QString FILE_KEY = TFileLogger().key().toLower();

    QMutexLocker locker(&mutex);

    loadPlugins();
    TLogger *logger = 0;

    QString k = key.toLower();
    if (k == FILE_KEY) {
        logger = new TFileLogger;
    } else {
        TLoggerInterface *lggif = lggIfMap->value(k);
        if (lggif) {
            logger = lggif->create(key);
        }
    }

    return logger;
}
コード例 #3
0
void TLoggerFactory::loadPlugins()
{
    if (!lggIfMap) {
        lggIfMap = new QMap<QString, TLoggerInterface *>();
        qAddPostRoutine(::cleanup);

        QDir dir(Tf::app()->pluginPath());
        QStringList list = dir.entryList(QDir::Files);
        for (QStringListIterator i(list); i.hasNext(); ) {
            QPluginLoader loader(dir.absoluteFilePath(i.next()));

            tSystemDebug("plugin library for logger: %s", qPrintable(loader.fileName()));
            if (!loader.load()) {
                tSystemError("plugin load error: %s", qPrintable(loader.errorString()));
                continue;
            }

            TLoggerInterface *iface = qobject_cast<TLoggerInterface *>(loader.instance());
            if ( iface ) {
#if QT_VERSION >= 0x050000
                QVariantList array = loader.metaData().value("MetaData").toObject().value("Keys").toArray().toVariantList();
                for (QListIterator<QVariant> it(array); it.hasNext(); ) {
                    QString key = it.next().toString().toLower();
                    tSystemInfo("Loaded logger plugin: %s", qPrintable(key));
                    lggIfMap->insert(key, iface);
                }
#else
                QStringList keys = iface->keys();
                for (QStringListIterator j(keys); j.hasNext(); ) {
                    QString key = j.next().toLower();
                    tSystemInfo("Loaded logger plugin: %s", qPrintable(key));
                    lggIfMap->insert(key, iface);
                }
#endif
            }
        }
    }
}