Comments (12)
如果需要使用QLoginCategory、qCWarning之类的日志输出方式,应该调用registerCategoryAppender,否则该category不会被注册到Logger
from dtkcore.
如果需要使用QLoginCategory、qCWarning之类的日志输出方式,应该调用registerCategoryAppender,否则该category不会被注册到Logger
DLogManager无此方法.
from dtkcore.
#include <LogManager.h>
#include <Logger.h>
#include <dtkcore_global.h>
#include <FileAppender.h>
#include <QLoggingCategory>
#ifndef QT_DEBUG
inline Q_LOGGING_CATEGORY(test, "dtk.test", QtInfoMsg);
#else
inline Q_LOGGING_CATEGORY(test, "dtk.test");
#endif
DCORE_USE_NAMESPACE
int main() {
DLogManager::registerConsoleAppender();
DLogManager::registerFileAppender();
Logger *gLogger = Logger::globalInstance();
FileAppender *fileAppener = new FileAppender("/tmp/log");
if (fileAppener->detailsLevel() > Logger::Trace)
fileAppener->setDetailsLevel(Logger::Trace);
gLogger->registerCategoryAppender("dtk.test", fileAppener);
qCWarning(test, "test log");
return 0;
}
这里有一个例子,可以参考一下
from dtkcore.
#include <LogManager.h> #include <Logger.h> #include <dtkcore_global.h> #include <FileAppender.h> #include <QLoggingCategory> #ifndef QT_DEBUG inline Q_LOGGING_CATEGORY(test, "dtk.test", QtInfoMsg); #else inline Q_LOGGING_CATEGORY(test, "dtk.test"); #endif DCORE_USE_NAMESPACE int main() { DLogManager::registerConsoleAppender(); DLogManager::registerFileAppender(); Logger *gLogger = Logger::globalInstance(); FileAppender *fileAppener = new FileAppender("/tmp/log"); if (fileAppener->detailsLevel() > Logger::Trace) fileAppener->setDetailsLevel(Logger::Trace); gLogger->registerCategoryAppender("dtk.test", fileAppener); qCWarning(test, "test log"); return 0; }
这里有一个例子,可以参考一下
不太应该让每个程序自己注册(如果这个程序自己不需要对某个 category 做特殊处理的话),举个例子,比如 dxcb 插件中有自己的 category,这就会导致一旦触发 dxcb 的日志(默认至少会输出warning级别)。就会在某个程序的日志文件里看到一行不知所以的警告,这时候是要这个程序自己注册一下对 dxcb 插件里的日志的处理吗?如果有更多的插件要怎么办?
能不能这样:如果没有注册专门的 registerCategoryAppender,全都到默认的 globalAppender 中处理。
from dtkcore.
DLogManager::registerConsoleAppender();
DLogManager::registerFileAppender();
qCWarning(dtkDefaultCategory()) << "test log";
这样可以吗?
from dtkcore.
DLogManager::registerConsoleAppender(); DLogManager::registerFileAppender(); qCWarning(dtkDefaultCategory()) << "test log";
这样可以吗?
你的意思是提供一个默认的 dtkDefaultCategory 给所有程序用?
from dtkcore.
是的,如果不想自己注册category的话统一使用默认的category, 默认写到/tmp/rollLog
里
from dtkcore.
是的,如果不想自己注册category的话统一使用默认的category, 默认写到
/tmp/rollLog
里
这样没有意义,如果不想注册 category,那跟直接使用 qDebug 这类不带 category 的没有区别。今后我们自己开发的项目的log都会要求按不同的分类使用不同的 category。如果程序使用的 category 都是同样的,那就失去了用 category 的意义。
from dtkcore.
但qCWarning必须要提供一个category,并且原来的实现也是提供一个默认的category:
#if QT_VERSION >= 0x050000
static void qtLoggerMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString &msg)
{
Logger::LogLevel level = Logger::Warning;
switch (type)
{
case QtDebugMsg:
level = Logger::Debug;
break;
#if QT_VERSION >= 0x050500
case QtInfoMsg:
level = Logger::Info;
break;
#endif
case QtWarningMsg:
level = Logger::Warning;
break;
case QtCriticalMsg:
level = Logger::Error;
break;
case QtFatalMsg:
level = Logger::Fatal;
break;
}
bool isDefaultCategory = QString::fromLatin1(context.category) == "default";
Logger::globalInstance()->write(level, context.file, context.line, context.function,
isDefaultCategory ? nullptr : context.category, msg);
}
#else
from dtkcore.
已有pr需要验证:#294
from dtkcore.
已有pr需要验证:#294
在pr的comment和commit信息(注意commit信息里不要写 Close)中关联一下这个issue。
from dtkcore.
信息已更新
from dtkcore.
Related Issues (20)
- Doc: [Standardized documents][ddesktopentry.h]
- Doc: [Example documents][ddesktopentry.h] HOT 1
- Doc: [Example documents][dconfig.h]
- Doc: [Standardized documents][dsysinfo.h]
- Doc: [Example documents][dconfigfile.h] HOT 4
- 关于dconfigfile中缺失的宏以及创建目录的问题 HOT 12
- Doc: [Example documents][ddcifile.h]
- Doc: [Example documents][dsettings.h]
- Doc: [Standardized documents][dfilesystemwatcher.h]
- Need to add new features to dfilewatchermanager HOT 1
- Compile failed: a header file not found HOT 3
- 汉字转拼音多音字支持 HOT 1
- dcapfsfileengine.cpp implementation HOT 2
- header files include mess HOT 2
- Add test: [DStandardPaths]
- Add test: [RollingFileAppender]
- 环境变量及部分关键字的地方支持 `DDE` 字段
- Feature request: implement missing features of QtDBus HOT 3
- DConfig接口支持异步
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dtkcore.