logger.h 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666
  1. /******************************************************************************
  2. *
  3. * package: Log4Qt
  4. * file: logger.h
  5. * created: September 2007
  6. * author: Martin Heinrich
  7. *
  8. *
  9. * changes: Sep 2008, Martin Heinrich:
  10. * - Replaced usage of q_atomic_test_and_set_ptr with
  11. * QBasicAtomicPointer
  12. *
  13. *
  14. * Copyright 2007 - 2008 Martin Heinrich
  15. *
  16. * Licensed under the Apache License, Version 2.0 (the "License");
  17. * you may not use this file except in compliance with the License.
  18. * You may obtain a copy of the License at
  19. *
  20. * http://www.apache.org/licenses/LICENSE-2.0
  21. *
  22. * Unless required by applicable law or agreed to in writing, software
  23. * distributed under the License is distributed on an "AS IS" BASIS,
  24. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  25. * See the License for the specific language governing permissions and
  26. * limitations under the License.
  27. *
  28. ******************************************************************************/
  29. #ifndef LOG4QT_LOGGER_H
  30. #define LOG4QT_LOGGER_H
  31. /******************************************************************************
  32. * Dependencies
  33. ******************************************************************************/
  34. #include <QtCore/QObject>
  35. #include <QtCore/QAtomicPointer>
  36. #include <QtCore/QList>
  37. #include <QtCore/QReadWriteLock>
  38. #include "log4qt/helpers/logerror.h"
  39. #include "log4qt/helpers/classlogger.h"
  40. #include "log4qt/helpers/logobjectptr.h"
  41. #include "log4qt/level.h"
  42. #if QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)
  43. # ifndef Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
  44. # warning "QAtomicPointer test and set is not native. The macro Log4Qt::LOG4QT_DECLARE_STATIC_LOGGER is not thread-safe."
  45. # endif
  46. #endif
  47. /******************************************************************************
  48. * Declarations
  49. ******************************************************************************/
  50. namespace Log4Qt
  51. {
  52. /*!
  53. * LOG4QT_DECLARE_STATIC_LOGGER declares a static function \a FUNCTION that
  54. * returns a pointer to a \ref Log4Qt::Logger "Logger" named after \a CLASS.
  55. *
  56. * On the first invocation the \ref Log4Qt::Logger "Logger" is requested
  57. * by calling \ref Log4Qt::Logger::logger(const char *pName)
  58. * "Logger::logger( #CLASS )". The pointer is stored to be returned on
  59. * subsequent invocations.
  60. *
  61. * The following example shows how to use the macro to define a logger to be
  62. * used within a class not derived from QObject.
  63. *
  64. * \code
  65. * #file: counter.h
  66. *
  67. * #include logger.h
  68. *
  69. * class Counter
  70. * {
  71. * public:
  72. * Counter();
  73. * Counter(int preset);
  74. * private:
  75. * int mCount;
  76. * }
  77. * \endcode
  78. * \code
  79. * #file: counter.cpp
  80. *
  81. * #include counter.h
  82. *
  83. * LOG4QT_DECLARE_STATIC_LOGGER(logger, Counter)
  84. *
  85. * Counter::Counter() :
  86. * mCount(0)
  87. * {}
  88. *
  89. * void Counter::Counter(int preset) :
  90. * mCount(preset)
  91. * {
  92. * if (preset < 0)
  93. * {
  94. * logger()->warn("Invalid negative counter preset %1. Using 0 instead.", preset);
  95. * mCount = 0;
  96. * }
  97. * }
  98. * \endcode
  99. *
  100. * \note The function created by the macro is thread-safe.
  101. *
  102. * \sa \ref Log4Qt::Logger::logger(const char *pName) "Logger::logger(const char *pName)"
  103. */
  104. #if QT_VERSION < QT_VERSION_CHECK(4, 4, 0)
  105. #define LOG4QT_DECLARE_STATIC_LOGGER(FUNCTION, CLASS) \
  106. static Log4Qt::Logger *FUNCTION() \
  107. { \
  108. static Log4Qt::Logger *p_logger = 0; \
  109. if (!p_logger) \
  110. { \
  111. q_atomic_test_and_set_ptr( \
  112. &p_logger, \
  113. 0, \
  114. Log4Qt::Logger::logger( #CLASS )); \
  115. } \
  116. return p_logger; \
  117. }
  118. #elif QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
  119. #define LOG4QT_DECLARE_STATIC_LOGGER(FUNCTION, CLASS) \
  120. static Log4Qt::Logger *FUNCTION() \
  121. { \
  122. static QBasicAtomicPointer<Log4Qt::Logger > p_logger = \
  123. Q_BASIC_ATOMIC_INITIALIZER(0); \
  124. if (!p_logger) \
  125. { \
  126. p_logger.testAndSetOrdered(0, \
  127. Log4Qt::Logger::logger( #CLASS )); \
  128. } \
  129. return p_logger; \
  130. }
  131. #else
  132. #define LOG4QT_DECLARE_STATIC_LOGGER(FUNCTION, CLASS) \
  133. static Log4Qt::Logger *FUNCTION() \
  134. { \
  135. static QBasicAtomicPointer<Log4Qt::Logger > p_logger = \
  136. Q_BASIC_ATOMIC_INITIALIZER(0); \
  137. if (!p_logger.loadAcquire()) \
  138. { \
  139. p_logger.testAndSetOrdered(0, \
  140. Log4Qt::Logger::logger( #CLASS )); \
  141. } \
  142. return p_logger.loadAcquire(); \
  143. }
  144. #endif
  145. /*!
  146. * LOG4QT_DECLARE_QCLASS_LOGGER declares member functions to retrieve
  147. * \ref Log4Qt::Logger "Logger" for the class it is used in.
  148. *
  149. * On the first invocation the \ref Log4Qt::Logger "Logger" is requested
  150. * by a call to \ref Log4Qt::Logger::logger(const char *pName)
  151. * "Logger::logger(const char *pName)". The pointer is stored to be
  152. * returned on subsequent invocations.
  153. *
  154. * The following example shows how to use the macro to define a logger to be
  155. * used within a class derived from QObject.
  156. *
  157. * \code
  158. * #file: counter.h
  159. *
  160. * #include qobject.h
  161. * #include logger.h
  162. *
  163. * class Counter : public QObject
  164. * {
  165. * Q_OBJECT
  166. * LOG4QT_DECLARE_QCLASS_LOGGER
  167. * public:
  168. * Counter();
  169. * Counter(int preset);
  170. * private:
  171. * int mCount;
  172. * }
  173. * \endcode
  174. * \code
  175. * #file: counter.cpp
  176. *
  177. * #include counter.h
  178. *
  179. * Counter::Counter() :
  180. * mCount(0)
  181. * {}
  182. *
  183. * void Counter::Counter(int preset)
  184. * mCount(preset)
  185. * {
  186. * if (preset < 0)
  187. * {
  188. * logger()->warn("Invalid negative counter preset %1. Using 0 instead.", preset);
  189. * mCount = 0;
  190. * }
  191. * }
  192. * \endcode
  193. *
  194. * \note The function created by the macro is thread-safe.
  195. *
  196. * \sa \ref Log4Qt::Logger::logger(const char *pName) "Logger::logger(const char *pName)",
  197. * \ref Log4Qt::ClassLogger "ClassLogger"
  198. */
  199. #define LOG4QT_DECLARE_QCLASS_LOGGER \
  200. private: \
  201. mutable Log4Qt::ClassLogger mLog4QtClassLogger; \
  202. public: \
  203. inline Log4Qt::Logger *logger() const \
  204. { return mLog4QtClassLogger.logger(this); } \
  205. private:
  206. class Appender;
  207. class LoggingEvent;
  208. class LoggerRepository;
  209. /*!
  210. * \brief The class Logger provides logging services.
  211. *
  212. * A pointer to a logger can be retrieved by calling Logger::logger() or
  213. * LogManager::logger() with the class name as argument. Because a logger
  214. * is never destroyed it is possible to store the pointer to the logger.
  215. * This way the lookup of the pointer in the repository is only required
  216. * on the first logging operation. The macros \ref
  217. * Log4Qt::LOG4QT_DECLARE_STATIC_LOGGER "LOG4QT_DECLARE_STATIC_LOGGER" and
  218. * \ref Log4Qt::LOG4QT_DECLARE_QCLASS_LOGGER "LOG4QT_DECLARE_QCLASS_LOGGER"
  219. * provide a thread-safe implementation to store the logger pointer.
  220. *
  221. * \note All the functions declared in this class are thread-safe.
  222. */
  223. class Logger : public QObject
  224. {
  225. Q_OBJECT
  226. /*!
  227. * The property holds, if the logger is additive.
  228. *
  229. * The default is true for being additive.
  230. *
  231. * \sa additive(), setAdditive()
  232. */
  233. Q_PROPERTY(bool additivity READ additivity WRITE setAdditivity)
  234. /*!
  235. * The property holds the level used by the logger.
  236. *
  237. * The default is Level::NULL_INT.
  238. * \sa level(), setLevel()
  239. */
  240. Q_PROPERTY(Level level READ level WRITE setLevel)
  241. /*!
  242. * The property holds the LoggerRepository of the logger.
  243. *
  244. * \sa loggerRepository()
  245. */
  246. Q_PROPERTY(LoggerRepository* loggerRepository READ loggerRepository)
  247. /*!
  248. * The property holds the name of the logger.
  249. *
  250. * \sa name()
  251. */
  252. Q_PROPERTY(QString name READ name)
  253. /*!
  254. * The property holds the parent logger of the logger.
  255. *
  256. * \sa parentLogger()
  257. */
  258. Q_PROPERTY(Logger* parentLogger READ parentLogger)
  259. LOG4QT_DECLARE_QCLASS_LOGGER
  260. protected:
  261. Logger(LoggerRepository* pLoggerRepository, Level level, const QString &rName, Logger *pParent = 0);
  262. virtual ~Logger();
  263. private:
  264. Logger(const Logger &rOther); // Not implemented
  265. Logger &operator=(const Logger &rOther); // Not implemented
  266. public:
  267. bool additivity() const;
  268. QList<Appender*> appenders() const;
  269. Level level() const;
  270. LoggerRepository *loggerRepository() const;
  271. QString name() const;
  272. Logger *parentLogger() const;
  273. // JAVA: ResourceBundle *resourceBundle() const;
  274. // JAVA: void setResourceBundle(ResourceBundle *pResourceBundle);
  275. void setAdditivity(bool additivity);
  276. virtual void setLevel(Level level);
  277. void addAppender(Appender *pAppender);
  278. Appender *appender(const QString &rName) const;
  279. void callAppenders(const LoggingEvent &rEvent) const;
  280. bool isAttached(Appender *pAppender) const;
  281. /*!
  282. * Removes all appenders that have been previously added from this
  283. * Logger.
  284. *
  285. * To allow configurators to collect events during the configuration
  286. * process ListAppenders with the configuratorList property set, will
  287. * not be removed.
  288. *
  289. * \sa LisAppender::setConfiguratorList()
  290. */
  291. void removeAllAppenders();
  292. void removeAppender(Appender *pAppender);
  293. void removeAppender(const QString &rName);
  294. // JAVA: QString resourceBundleString(const QString &rKey) const;
  295. Level effectiveLevel() const;
  296. bool isDebugEnabled() const;
  297. /*!
  298. * Checks if this logger is enabled for a given Level \a level. If the
  299. * logger is enabled the function returns true. Otherwise it returns
  300. * false.
  301. *
  302. * A logger is enabled for a level, if the level is greater or equal
  303. * then the repository threshold and greater and equal then the loggers
  304. * effective level.
  305. *
  306. * \sa LoggerRepository::isDisabled(), effectiveLevel()
  307. */
  308. bool isEnabledFor(Level level) const;
  309. bool isErrorEnabled() const;
  310. bool isFatalEnabled() const;
  311. bool isInfoEnabled() const;
  312. bool isTraceEnabled() const;
  313. bool isWarnEnabled() const;
  314. void debug(const QString &rMessage) const;
  315. void debug(const LogError &rLogError) const;
  316. void debug(const char *pMessage) const;
  317. void debug(const char *pMessage,
  318. const QString &rArg1) const;
  319. void debug(const char *pMessage,
  320. int arg1) const;
  321. void debug(const char *pMessage,
  322. const QString &rArg1,
  323. const QString &rArg2) const;
  324. void debug(const char *pMessage,
  325. const QString &rArg1,
  326. int arg2) const;
  327. void debug(const char *pMessage,
  328. int arg1,
  329. const QString &rArg2) const;
  330. void debug(const char *pMessage,
  331. int arg1,
  332. int arg2) const;
  333. void debug(const char *pMessage,
  334. const QString &rArg1,
  335. const QString &rArg2,
  336. const QString &rArg3) const;
  337. void debug(const char *pMessage,
  338. const QString &rArg1,
  339. const QString &rArg2,
  340. int arg3) const;
  341. void debug(const char *pMessage,
  342. const QString &rArg1,
  343. int arg2,
  344. const QString &rArg3) const;
  345. void debug(const char *pMessage,
  346. const QString &rArg1,
  347. int arg2,
  348. int arg3) const;
  349. void debug(const char *pMessage,
  350. int arg1,
  351. const QString &rArg2,
  352. const QString &rArg3) const;
  353. void debug(const char *pMessage,
  354. int arg1,
  355. const QString &rArg2,
  356. int arg3) const;
  357. void debug(const char *pMessage,
  358. int arg1,
  359. int arg2,
  360. const QString &rArg3) const;
  361. void debug(const char *pMessage,
  362. int arg1,
  363. int arg2,
  364. int arg3) const;
  365. void debug(const char *pMessage,
  366. const QVariant &rArg1,
  367. const QVariant &rArg2,
  368. const QVariant &rArg3) const;
  369. void error(const QString &rMessage) const;
  370. void error(const LogError &rLogError) const;
  371. void error(const char *pMessage) const;
  372. void error(const char *pMessage,
  373. const QString &rArg1) const;
  374. void error(const char *pMessage,
  375. int arg1) const;
  376. void error(const char *pMessage,
  377. const QString &rArg1,
  378. const QString &rArg2) const;
  379. void error(const char *pMessage,
  380. const QString &rArg1, int arg2) const;
  381. void error(const char *pMessage,
  382. int arg1,
  383. const QString &rArg2) const;
  384. void error(const char *pMessage,
  385. int arg1,
  386. int arg2) const;
  387. void error(const char *pMessage,
  388. const QString &rArg1,
  389. const QString &rArg2,
  390. const QString &rArg3) const;
  391. void error(const char *pMessage,
  392. const QString &rArg1,
  393. const QString &rArg2,
  394. int arg3) const;
  395. void error(const char *pMessage,
  396. const QString &rArg1,
  397. int arg2,
  398. const QString &rArg3) const;
  399. void error(const char *pMessage,
  400. const QString &rArg1,
  401. int arg2,
  402. int arg3) const;
  403. void error(const char *pMessage,
  404. int arg1,
  405. const QString &rArg2,
  406. const QString &rArg3) const;
  407. void error(const char *pMessage,
  408. int arg1,
  409. const QString &rArg2,
  410. int arg3) const;
  411. void error(const char *pMessage,
  412. int arg1,
  413. int arg2,
  414. const QString &rArg3) const;
  415. void error(const char *pMessage,
  416. int arg1,
  417. int arg2,
  418. int arg3) const;
  419. void error(const char *pMessage,
  420. const QVariant &rArg1,
  421. const QVariant &rArg2,
  422. const QVariant &rArg3) const;
  423. void fatal(const QString &rMessage) const;
  424. void fatal(const LogError &rLogError) const;
  425. void fatal(const char *pMessage) const;
  426. void fatal(const char *pMessage,
  427. const QString &rArg1) const;
  428. void fatal(const char *pMessage,
  429. int arg1) const;
  430. void fatal(const char *pMessage,
  431. const QString &rArg1,
  432. const QString &rArg2) const;
  433. void fatal(const char *pMessage,
  434. const QString &rArg1,
  435. int arg2) const;
  436. void fatal(const char *pMessage,
  437. int arg1,
  438. const QString &rArg2) const;
  439. void fatal(const char *pMessage,
  440. int arg1,
  441. int arg2) const;
  442. void fatal(const char *pMessage,
  443. const QString &rArg1,
  444. const QString &rArg2,
  445. const QString &rArg3) const;
  446. void fatal(const char *pMessage,
  447. const QString &rArg1,
  448. const QString &rArg2,
  449. int arg3) const;
  450. void fatal(const char *pMessage,
  451. const QString &rArg1,
  452. int arg2,
  453. const QString &rArg3) const;
  454. void fatal(const char *pMessage,
  455. const QString &rArg1,
  456. int arg2,
  457. int arg3) const;
  458. void fatal(const char *pMessage,
  459. int arg1,
  460. const QString &rArg2,
  461. const QString &rArg3) const;
  462. void fatal(const char *pMessage,
  463. int arg1,
  464. const QString &rArg2,
  465. int arg3) const;
  466. void fatal(const char *pMessage,
  467. int arg1,
  468. int arg2,
  469. const QString &rArg3) const;
  470. void fatal(const char *pMessage,
  471. int arg1,
  472. int arg2,
  473. int arg3) const;
  474. void fatal(const char *pMessage,
  475. const QVariant &rArg1,
  476. const QVariant &rArg2,
  477. const QVariant &rArg3) const;
  478. void info(const QString &rMessage) const;
  479. void info(const LogError &rLogError) const;
  480. void info(const char *pMessage) const;
  481. void info(const char *pMessage,
  482. const QString &rArg1) const;
  483. void info(const char *pMessage,
  484. int arg1) const;
  485. void info(const char *pMessage,
  486. const QString &rArg1,
  487. const QString &rArg2) const;
  488. void info(const char *pMessage,
  489. const QString &rArg1,
  490. int arg2) const;
  491. void info(const char *pMessage,
  492. int arg1,
  493. const QString &rArg2) const;
  494. void info(const char *pMessage,
  495. int arg1,
  496. int arg2) const;
  497. void info(const char *pMessage,
  498. const QString &rArg1,
  499. const QString &rArg2,
  500. const QString &rArg3) const;
  501. void info(const char *pMessage,
  502. const QString &rArg1,
  503. const QString &rArg2,
  504. int arg3) const;
  505. void info(const char *pMessage,
  506. const QString &rArg1,
  507. int arg2,
  508. const QString &rArg3) const;
  509. void info(const char *pMessage,
  510. const QString &rArg1,
  511. int arg2,
  512. int arg3) const;
  513. void info(const char *pMessage,
  514. int arg1,
  515. const QString &rArg2,
  516. const QString &rArg3) const;
  517. void info(const char *pMessage,
  518. int arg1,
  519. const QString &rArg2,
  520. int arg3) const;
  521. void info(const char *pMessage,
  522. int arg1,
  523. int arg2,
  524. const QString &rArg3) const;
  525. void info(const char *pMessage,
  526. int arg1,
  527. int arg2,
  528. int arg3) const;
  529. void info(const char *pMessage,
  530. const QVariant &rArg1,
  531. const QVariant &rArg2,
  532. const QVariant &rArg3) const;
  533. void log(Level level,
  534. const QString &rMessage) const;
  535. void log(Level level,
  536. const LogError &rLogError) const;
  537. void log(Level level,
  538. const char *pMessage) const;
  539. void log(Level level,
  540. const char *pMessage,
  541. const QString &rArg1) const;
  542. void log(Level level,
  543. const char *pMessage,
  544. int arg1) const;
  545. void log(Level level,
  546. const char *pMessage,
  547. const QString &rArg1,
  548. const QString &rArg2) const;
  549. void log(Level level,
  550. const char *pMessage,
  551. const QString &rArg1,
  552. int arg2) const;
  553. void log(Level level,
  554. const char *pMessage,
  555. int arg1,
  556. const QString &rArg2) const;
  557. void log(Level level,
  558. const char *pMessage,
  559. int arg1,
  560. int arg2) const;
  561. void log(Level level,
  562. const char *pMessage,
  563. const QString &rArg1,
  564. const QString &rArg2,
  565. const QString &rArg3) const;
  566. void log(Level level,
  567. const char *pMessage,
  568. const QString &rArg1,
  569. const QString &rArg2,
  570. int arg3) const;
  571. void log(Level level,
  572. const char *pMessage,
  573. const QString &rArg1,
  574. int arg2,
  575. const QString &rArg3) const;
  576. void log(Level level,
  577. const char *pMessage,
  578. const QString &rArg1,
  579. int arg2,
  580. int arg3) const;
  581. void log(Level level,
  582. const char *pMessage,
  583. int arg1,
  584. const QString &rArg2,
  585. const QString &rArg3) const;
  586. void log(Level level,
  587. const char *pMessage,
  588. int arg1,
  589. const QString &rArg2,
  590. int arg3) const;
  591. void log(Level level,
  592. const char *pMessage,
  593. int arg1,
  594. int arg2,
  595. const QString &rArg3) const;
  596. void log(Level level,
  597. const char *pMessage,
  598. int arg1,
  599. int arg2,
  600. int arg3) const;
  601. void log(Level level,
  602. const char *pMessage,
  603. const QVariant &rArg1,
  604. const QVariant &rArg2,
  605. const QVariant &rArg3) const;
  606. // JAVA: void l7dlog(Level level,
  607. // const QString &rKey);
  608. // JAVA: void l7dlog(Level level,
  609. // const QString &rKey,
  610. // const QList<Object *> rParameters);
  611. void trace(const QString &rMessage) const;
  612. void trace(const LogError &rLogError) const;
  613. void trace(const char *pMessage) const;
  614. void trace(const char *pMessage,
  615. const QString &rArg1) const;
  616. void trace(const char *pMessage,
  617. int arg1) const;
  618. void trace(const char *pMessage,
  619. const QString &rArg1,
  620. const QString &rArg2) const;
  621. void trace(const char *pMessage,
  622. const QString &rArg1,
  623. int arg2) const;
  624. void trace(const char *pMessage,
  625. int arg1,
  626. const QString &rArg2) const;
  627. void trace(const char *pMessage,
  628. int arg1,
  629. int arg2) const;
  630. void trace(const char *pMessage,
  631. const QString &rArg1,
  632. const QString &rArg2,
  633. const QString &rArg3) const;
  634. void trace(const char *pMessage,
  635. const QString &rArg1,
  636. const QString &rArg2,
  637. int arg3) const;
  638. void trace(const char *pMessage,
  639. const QString &rArg1,
  640. int arg2,
  641. const QString &rArg3) const;
  642. void trace(const char *pMessage,
  643. const QString &rArg1,
  644. int arg2,
  645. int arg3) const;
  646. void trace(const char *pMessage,
  647. int arg1,
  648. const QString &rArg2,
  649. const QString &rArg3) const;
  650. void trace(const char *pMessage,
  651. int arg1,
  652. const QString &rArg2,
  653. int arg3) const;
  654. void trace(const char *pMessage,
  655. int arg1,
  656. int arg2,
  657. const QString &rArg3) const;
  658. void trace(const char *pMessage,
  659. int arg1,
  660. int arg2,
  661. int arg3) const;
  662. void trace(const char *pMessage,
  663. const QVariant &rArg1,
  664. const QVariant &rArg2,
  665. const QVariant &rArg3) const;
  666. void warn(const QString &rMessage) const;
  667. void warn(const LogError &rLogError) const;
  668. void warn(const char *pMessage) const;
  669. void warn(const char *pMessage,
  670. const QString &rArg1) const;
  671. void warn(const char *pMessage,
  672. int arg1) const;
  673. void warn(const char *pMessage,
  674. const QString &rArg1,
  675. const QString &rArg2) const;
  676. void warn(const char *pMessage,
  677. const QString &rArg1,
  678. int arg2) const;
  679. void warn(const char *pMessage,
  680. int arg1,
  681. const QString &rArg2) const;
  682. void warn(const char *pMessage,
  683. int arg1,
  684. int arg2) const;
  685. void warn(const char *pMessage,
  686. const QString &rArg1,
  687. const QString &rArg2,
  688. const QString &rArg3) const;
  689. void warn(const char *pMessage,
  690. const QString &rArg1,
  691. const QString &rArg2,
  692. int arg3) const;
  693. void warn(const char *pMessage,
  694. const QString &rArg1,
  695. int arg2,
  696. const QString &rArg3) const;
  697. void warn(const char *pMessage,
  698. const QString &rArg1,
  699. int arg2,
  700. int arg3) const;
  701. void warn(const char *pMessage,
  702. int arg1,
  703. const QString &rArg2,
  704. const QString &rArg3) const;
  705. void warn(const char *pMessage,
  706. int arg1,
  707. const QString &rArg2,
  708. int arg3) const;
  709. void warn(const char *pMessage,
  710. int arg1,
  711. int arg2,
  712. const QString &rArg3) const;
  713. void warn(const char *pMessage,
  714. int arg1,
  715. int arg2,
  716. int arg3) const;
  717. void warn(const char *pMessage,
  718. const QVariant &rArg1,
  719. const QVariant &rArg2,
  720. const QVariant &rArg3) const;
  721. // LogManager operations
  722. static Logger *logger(const QString &rName);
  723. static Logger *logger(const char *pName);
  724. static Logger *rootLogger();
  725. protected:
  726. #ifndef QT_NO_DEBUG_STREAM
  727. /*!
  728. * Writes all object member variables to the given debug stream \a rDebug
  729. * and returns the stream.
  730. *
  731. * <tt>
  732. * %Logger(name:"Log4Qt" appenders:0 additivity:true Level("NULL")
  733. * parentLogger: "root" )
  734. * </tt>
  735. * \sa QDebug, operator<<(QDebug debug, const Appender &rAppender)
  736. */
  737. virtual QDebug debug(QDebug &rDebug) const;
  738. friend QDebug operator<<(QDebug debug,
  739. const Logger &rLogger);
  740. #endif // QT_NO_DEBUG_STREAM
  741. void forcedLog(Level level,
  742. const QString &rMessage) const;
  743. protected:
  744. mutable QReadWriteLock mObjectGuard;
  745. private:
  746. const QString mName;
  747. LoggerRepository* mpLoggerRepository;
  748. volatile bool mAdditivity;
  749. QList< LogObjectPtr<Appender> > mAppenders;
  750. Level mLevel;
  751. Logger *mpParent;
  752. // Needs to be friend to create Logger objects
  753. friend class Hierarchy;
  754. };
  755. /******************************************************************************
  756. * Operators, Helper
  757. ******************************************************************************/
  758. #ifndef QT_NO_DEBUG_STREAM
  759. /*!
  760. * \relates Logger
  761. *
  762. * Writes all object member variables to the given debug stream \a debug and
  763. * returns the stream.
  764. *
  765. * To handle subclassing the function uses the virtual member function debug().
  766. * This allows each class to generate its own output.
  767. *
  768. * \sa QDebug, debug()
  769. */
  770. QDebug operator<<(QDebug debug,
  771. const Logger &rLogger);
  772. #endif // QT_NO_DEBUG_STREAM
  773. /**************************************************************************
  774. * Inline
  775. **************************************************************************/
  776. inline bool Logger::additivity() const
  777. { // QReadLocker locker(&mObjectGuard); // Read/Write of int is safe
  778. return mAdditivity; }
  779. inline Level Logger::level() const
  780. { // QReadLocker locker(&mObjectGuard); // Level is thread-safe
  781. return mLevel; }
  782. inline LoggerRepository *Logger::loggerRepository() const
  783. { // QReadLocker locker(&mObjectGuard); // Constant for object lifetime
  784. return mpLoggerRepository; }
  785. inline QString Logger::name() const
  786. { // QReadLocker locker(&mObjectGuard); // Constant for object lifetime
  787. return mName; }
  788. inline Logger *Logger::parentLogger() const
  789. { // QReadLocker locker(&mObjectGuard); // Constant for object lifetime
  790. return mpParent; }
  791. inline void Logger::setAdditivity(bool additivity)
  792. { // QWriteLocker locker(&mObjectGuard); // Read/Write of int is safe
  793. mAdditivity = additivity; }
  794. // Level operations
  795. inline bool Logger::isDebugEnabled() const
  796. { return isEnabledFor(Level::DEBUG_INT); }
  797. inline bool Logger::isErrorEnabled() const
  798. { return isEnabledFor(Level::ERROR_INT); }
  799. inline bool Logger::isFatalEnabled() const
  800. { return isEnabledFor(Level::FATAL_INT); }
  801. inline bool Logger::isInfoEnabled() const
  802. { return isEnabledFor(Level::INFO_INT); }
  803. inline bool Logger::isTraceEnabled() const
  804. { return isEnabledFor(Level::TRACE_INT); }
  805. inline bool Logger::isWarnEnabled() const
  806. { return isEnabledFor(Level::WARN_INT); }
  807. // Log operations: debug
  808. inline void Logger::debug(const LogError &rLogError) const
  809. { if (isEnabledFor(Level::DEBUG_INT))
  810. forcedLog(Level::DEBUG_INT, rLogError.toString()); }
  811. inline void Logger::debug(const QString &rMessage) const
  812. { if (isEnabledFor(Level::DEBUG_INT))
  813. forcedLog(Level::DEBUG_INT, rMessage); }
  814. inline void Logger::debug(const char *pMessage) const
  815. { if (isEnabledFor(Level::DEBUG_INT))
  816. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage)); }
  817. inline void Logger::debug(const char *pMessage,
  818. const QString &rArg1) const
  819. { if (isEnabledFor(Level::DEBUG_INT))
  820. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1)); }
  821. inline void Logger::debug(const char *pMessage,
  822. int arg1) const
  823. { if (isEnabledFor(Level::DEBUG_INT))
  824. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(arg1)); }
  825. inline void Logger::debug(const char *pMessage,
  826. const QString &rArg1,
  827. const QString &rArg2) const
  828. { if (isEnabledFor(Level::DEBUG_INT))
  829. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2)); }
  830. inline void Logger::debug(const char *pMessage,
  831. const QString &rArg1,
  832. int arg2) const
  833. { if (isEnabledFor(Level::DEBUG_INT))
  834. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2)); }
  835. inline void Logger::debug(const char *pMessage,
  836. int arg1,
  837. const QString &rArg2) const
  838. { if (isEnabledFor(Level::DEBUG_INT))
  839. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2)); }
  840. inline void Logger::debug(const char *pMessage,
  841. int arg1,
  842. int arg2) const
  843. { if (isEnabledFor(Level::DEBUG_INT))
  844. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2)); }
  845. inline void Logger::debug(const char *pMessage,
  846. const QString &rArg1,
  847. const QString &rArg2,
  848. const QString &rArg3) const
  849. { if (isEnabledFor(Level::DEBUG_INT))
  850. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2, rArg3)); }
  851. inline void Logger::debug(const char *pMessage,
  852. const QString &rArg1,
  853. const QString &rArg2,
  854. int arg3) const
  855. { if (isEnabledFor(Level::DEBUG_INT))
  856. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2).arg(arg3)); }
  857. inline void Logger::debug(const char *pMessage,
  858. const QString &rArg1,
  859. int arg2,
  860. const QString &rArg3) const
  861. { if (isEnabledFor(Level::DEBUG_INT))
  862. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(rArg3)); }
  863. inline void Logger::debug(const char *pMessage,
  864. const QString &rArg1,
  865. int arg2,
  866. int arg3) const
  867. { if (isEnabledFor(Level::DEBUG_INT))
  868. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(arg3)); }
  869. inline void Logger::debug(const char *pMessage,
  870. int arg1,
  871. const QString &rArg2,
  872. const QString &rArg3) const
  873. { if (isEnabledFor(Level::DEBUG_INT))
  874. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(rArg3)); }
  875. inline void Logger::debug(const char *pMessage,
  876. int arg1,
  877. const QString &rArg2,
  878. int arg3) const
  879. { if (isEnabledFor(Level::DEBUG_INT))
  880. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(arg3)); }
  881. inline void Logger::debug(const char *pMessage,
  882. int arg1,
  883. int arg2,
  884. const QString &rArg3) const
  885. { if (isEnabledFor(Level::DEBUG_INT))
  886. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(rArg3)); }
  887. inline void Logger::debug(const char *pMessage,
  888. int arg1,
  889. int arg2,
  890. int arg3) const
  891. { if (isEnabledFor(Level::DEBUG_INT))
  892. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(arg3)); }
  893. inline void Logger::debug(const char *pMessage,
  894. const QVariant &rArg1,
  895. const QVariant &rArg2,
  896. const QVariant &rArg3) const
  897. { if (isEnabledFor(Level::DEBUG_INT))
  898. forcedLog(Level::DEBUG_INT, QString::fromUtf8(pMessage).arg(rArg1.toString(), rArg2.toString(), rArg3.toString())); }
  899. // Log operations: error
  900. inline void Logger::error(const QString &rMessage) const
  901. { if (isEnabledFor(Level::ERROR_INT))
  902. forcedLog(Level::ERROR_INT, rMessage); }
  903. inline void Logger::error(const LogError &rLogError) const
  904. { if (isEnabledFor(Level::ERROR_INT))
  905. forcedLog(Level::ERROR_INT, rLogError.toString()); }
  906. inline void Logger::error(const char *pMessage) const
  907. { if (isEnabledFor(Level::ERROR_INT))
  908. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage)); }
  909. inline void Logger::error(const char *pMessage,
  910. const QString &rArg1) const
  911. { if (isEnabledFor(Level::ERROR_INT))
  912. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1)); }
  913. inline void Logger::error(const char *pMessage,
  914. int arg1) const
  915. { if (isEnabledFor(Level::ERROR_INT))
  916. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(arg1)); }
  917. inline void Logger::error(const char *pMessage,
  918. const QString &rArg1,
  919. const QString &rArg2) const
  920. { if (isEnabledFor(Level::ERROR_INT))
  921. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2)); }
  922. inline void Logger::error(const char *pMessage,
  923. const QString &rArg1,
  924. int arg2) const
  925. { if (isEnabledFor(Level::ERROR_INT))
  926. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2)); }
  927. inline void Logger::error(const char *pMessage,
  928. int arg1,
  929. const QString &rArg2) const
  930. { if (isEnabledFor(Level::ERROR_INT))
  931. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2)); }
  932. inline void Logger::error(const char *pMessage,
  933. int arg1,
  934. int arg2) const
  935. { if (isEnabledFor(Level::ERROR_INT))
  936. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2)); }
  937. inline void Logger::error(const char *pMessage,
  938. const QString &rArg1,
  939. const QString &rArg2,
  940. const QString &rArg3) const
  941. { if (isEnabledFor(Level::ERROR_INT))
  942. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2, rArg3)); }
  943. inline void Logger::error(const char *pMessage,
  944. const QString &rArg1,
  945. const QString &rArg2,
  946. int arg3) const
  947. { if (isEnabledFor(Level::ERROR_INT))
  948. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2).arg(arg3)); }
  949. inline void Logger::error(const char *pMessage,
  950. const QString &rArg1,
  951. int arg2,
  952. const QString &rArg3) const
  953. { if (isEnabledFor(Level::ERROR_INT))
  954. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(rArg3)); }
  955. inline void Logger::error(const char *pMessage,
  956. const QString &rArg1,
  957. int arg2,
  958. int arg3) const
  959. { if (isEnabledFor(Level::ERROR_INT))
  960. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(arg3)); }
  961. inline void Logger::error(const char *pMessage,
  962. int arg1,
  963. const QString &rArg2,
  964. const QString &rArg3) const
  965. { if (isEnabledFor(Level::ERROR_INT))
  966. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(rArg3)); }
  967. inline void Logger::error(const char *pMessage,
  968. int arg1,
  969. const QString &rArg2,
  970. int arg3) const
  971. { if (isEnabledFor(Level::ERROR_INT))
  972. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(arg3)); }
  973. inline void Logger::error(const char *pMessage,
  974. int arg1,
  975. int arg2,
  976. const QString &rArg3) const
  977. { if (isEnabledFor(Level::ERROR_INT))
  978. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(rArg3)); }
  979. inline void Logger::error(const char *pMessage,
  980. int arg1,
  981. int arg2,
  982. int arg3) const
  983. { if (isEnabledFor(Level::ERROR_INT))
  984. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(arg3)); }
  985. inline void Logger::error(const char *pMessage,
  986. const QVariant &rArg1,
  987. const QVariant &rArg2,
  988. const QVariant &rArg3) const
  989. { if (isEnabledFor(Level::ERROR_INT))
  990. forcedLog(Level::ERROR_INT, QString::fromUtf8(pMessage).arg(rArg1.toString(), rArg2.toString(), rArg3.toString())); }
  991. // Log operations: fatal
  992. inline void Logger::fatal(const QString &rMessage) const
  993. { if (isEnabledFor(Level::FATAL_INT))
  994. forcedLog(Level::FATAL_INT, rMessage); }
  995. inline void Logger::fatal(const LogError &rLogError) const
  996. { if (isEnabledFor(Level::FATAL_INT))
  997. forcedLog(Level::FATAL_INT, rLogError.toString()); }
  998. inline void Logger::fatal(const char *pMessage) const
  999. { if (isEnabledFor(Level::FATAL_INT))
  1000. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage)); }
  1001. inline void Logger::fatal(const char *pMessage,
  1002. const QString &rArg1) const
  1003. { if (isEnabledFor(Level::FATAL_INT))
  1004. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1)); }
  1005. inline void Logger::fatal(const char *pMessage,
  1006. int arg1) const
  1007. { if (isEnabledFor(Level::FATAL_INT))
  1008. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(arg1)); }
  1009. inline void Logger::fatal(const char *pMessage,
  1010. const QString &rArg1, const QString &rArg2) const
  1011. { if (isEnabledFor(Level::FATAL_INT))
  1012. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2)); }
  1013. inline void Logger::fatal(const char *pMessage,
  1014. const QString &rArg1, int arg2) const
  1015. { if (isEnabledFor(Level::FATAL_INT))
  1016. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2)); }
  1017. inline void Logger::fatal(const char *pMessage,
  1018. int arg1,
  1019. const QString &rArg2) const
  1020. { if (isEnabledFor(Level::FATAL_INT))
  1021. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2)); }
  1022. inline void Logger::fatal(const char *pMessage,
  1023. int arg1,
  1024. int arg2) const
  1025. { if (isEnabledFor(Level::FATAL_INT))
  1026. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2)); }
  1027. inline void Logger::fatal(const char *pMessage,
  1028. const QString &rArg1,
  1029. const QString &rArg2,
  1030. const QString &rArg3) const
  1031. { if (isEnabledFor(Level::FATAL_INT))
  1032. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2, rArg3)); }
  1033. inline void Logger::fatal(const char *pMessage,
  1034. const QString &rArg1,
  1035. const QString &rArg2,
  1036. int arg3) const
  1037. { if (isEnabledFor(Level::FATAL_INT))
  1038. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2).arg(arg3)); }
  1039. inline void Logger::fatal(const char *pMessage,
  1040. const QString &rArg1,
  1041. int arg2,
  1042. const QString &rArg3) const
  1043. { if (isEnabledFor(Level::FATAL_INT))
  1044. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(rArg3)); }
  1045. inline void Logger::fatal(const char *pMessage,
  1046. const QString &rArg1,
  1047. int arg2,
  1048. int arg3) const
  1049. { if (isEnabledFor(Level::FATAL_INT))
  1050. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(arg3)); }
  1051. inline void Logger::fatal(const char *pMessage,
  1052. int arg1,
  1053. const QString &rArg2,
  1054. const QString &rArg3) const
  1055. { if (isEnabledFor(Level::FATAL_INT))
  1056. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(rArg3)); }
  1057. inline void Logger::fatal(const char *pMessage,
  1058. int arg1,
  1059. const QString &rArg2,
  1060. int arg3) const
  1061. { if (isEnabledFor(Level::FATAL_INT))
  1062. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(arg3)); }
  1063. inline void Logger::fatal(const char *pMessage,
  1064. int arg1,
  1065. int arg2,
  1066. const QString &rArg3) const
  1067. { if (isEnabledFor(Level::FATAL_INT))
  1068. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(rArg3)); }
  1069. inline void Logger::fatal(const char *pMessage,
  1070. int arg1,
  1071. int arg2,
  1072. int arg3) const
  1073. { if (isEnabledFor(Level::FATAL_INT))
  1074. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(arg3)); }
  1075. inline void Logger::fatal(const char *pMessage,
  1076. const QVariant &rArg1,
  1077. const QVariant &rArg2,
  1078. const QVariant &rArg3) const
  1079. { if (isEnabledFor(Level::FATAL_INT))
  1080. forcedLog(Level::FATAL_INT, QString::fromUtf8(pMessage).arg(rArg1.toString(), rArg2.toString(), rArg3.toString())); }
  1081. // Log operations: info
  1082. inline void Logger::info(const QString &rMessage) const
  1083. { if (isEnabledFor(Level::INFO_INT))
  1084. forcedLog(Level::INFO_INT, rMessage); }
  1085. inline void Logger::info(const LogError &rLogError) const
  1086. { if (isEnabledFor(Level::INFO_INT))
  1087. forcedLog(Level::INFO_INT, rLogError.toString()); }
  1088. inline void Logger::info(const char *pMessage) const
  1089. { if (isEnabledFor(Level::INFO_INT))
  1090. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage)); }
  1091. inline void Logger::info(const char *pMessage,
  1092. const QString &rArg1) const
  1093. { if (isEnabledFor(Level::INFO_INT))
  1094. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1)); }
  1095. inline void Logger::info(const char *pMessage,
  1096. int arg1) const
  1097. { if (isEnabledFor(Level::INFO_INT))
  1098. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(arg1)); }
  1099. inline void Logger::info(const char *pMessage,
  1100. const QString &rArg1,
  1101. const QString &rArg2) const
  1102. { if (isEnabledFor(Level::INFO_INT))
  1103. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2)); }
  1104. inline void Logger::info(const char *pMessage,
  1105. const QString &rArg1,
  1106. int arg2) const
  1107. { if (isEnabledFor(Level::INFO_INT))
  1108. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2)); }
  1109. inline void Logger::info(const char *pMessage,
  1110. int arg1,
  1111. const QString &rArg2) const
  1112. { if (isEnabledFor(Level::INFO_INT))
  1113. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2)); }
  1114. inline void Logger::info(const char *pMessage,
  1115. int arg1,
  1116. int arg2) const
  1117. { if (isEnabledFor(Level::INFO_INT))
  1118. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2)); }
  1119. inline void Logger::info(const char *pMessage,
  1120. const QString &rArg1,
  1121. const QString &rArg2,
  1122. const QString &rArg3) const
  1123. { if (isEnabledFor(Level::INFO_INT))
  1124. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2, rArg3)); }
  1125. inline void Logger::info(const char *pMessage,
  1126. const QString &rArg1,
  1127. const QString &rArg2,
  1128. int arg3) const
  1129. { if (isEnabledFor(Level::INFO_INT))
  1130. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2).arg(arg3)); }
  1131. inline void Logger::info(const char *pMessage,
  1132. const QString &rArg1,
  1133. int arg2,
  1134. const QString &rArg3) const
  1135. { if (isEnabledFor(Level::INFO_INT))
  1136. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(rArg3)); }
  1137. inline void Logger::info(const char *pMessage,
  1138. const QString &rArg1,
  1139. int arg2,
  1140. int arg3) const
  1141. { if (isEnabledFor(Level::INFO_INT))
  1142. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(arg3)); }
  1143. inline void Logger::info(const char *pMessage,
  1144. int arg1,
  1145. const QString &rArg2,
  1146. const QString &rArg3) const
  1147. { if (isEnabledFor(Level::INFO_INT))
  1148. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(rArg3)); }
  1149. inline void Logger::info(const char *pMessage,
  1150. int arg1,
  1151. const QString &rArg2,
  1152. int arg3) const
  1153. { if (isEnabledFor(Level::INFO_INT))
  1154. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(arg3)); }
  1155. inline void Logger::info(const char *pMessage,
  1156. int arg1,
  1157. int arg2,
  1158. const QString &rArg3) const
  1159. { if (isEnabledFor(Level::INFO_INT))
  1160. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(rArg3)); }
  1161. inline void Logger::info(const char *pMessage,
  1162. int arg1,
  1163. int arg2,
  1164. int arg3) const
  1165. { if (isEnabledFor(Level::INFO_INT))
  1166. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(arg3)); }
  1167. inline void Logger::info(const char *pMessage,
  1168. const QVariant &rArg1,
  1169. const QVariant &rArg2,
  1170. const QVariant &rArg3) const
  1171. { if (isEnabledFor(Level::INFO_INT))
  1172. forcedLog(Level::INFO_INT, QString::fromUtf8(pMessage).arg(rArg1.toString(), rArg2.toString(), rArg3.toString())); }
  1173. // Log operations: log
  1174. inline void Logger::log(Level level,
  1175. const QString &rMessage) const
  1176. { if (isEnabledFor(level))
  1177. forcedLog(level, rMessage); }
  1178. inline void Logger::log(Level level,
  1179. const LogError &rLogError) const
  1180. { if (isEnabledFor(level))
  1181. forcedLog(level, rLogError.toString()); }
  1182. inline void Logger::log(Level level,
  1183. const char *pMessage) const
  1184. { if (isEnabledFor(level))
  1185. forcedLog(level, QString::fromUtf8(pMessage)); }
  1186. inline void Logger::log(Level level,
  1187. const char *pMessage,
  1188. const QString &rArg1) const
  1189. { if (isEnabledFor(level))
  1190. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1)); }
  1191. inline void Logger::log(Level level,
  1192. const char *pMessage,
  1193. int arg1) const
  1194. { if (isEnabledFor(level))
  1195. forcedLog(level, QString::fromUtf8(pMessage).arg(arg1)); }
  1196. inline void Logger::log(Level level,
  1197. const char *pMessage,
  1198. const QString &rArg1,
  1199. const QString &rArg2) const
  1200. { if (isEnabledFor(level))
  1201. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1, rArg2)); }
  1202. inline void Logger::log(Level level,
  1203. const char *pMessage,
  1204. const QString &rArg1, int arg2) const
  1205. { if (isEnabledFor(level))
  1206. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2)); }
  1207. inline void Logger::log(Level level,
  1208. const char *pMessage,
  1209. int arg1,
  1210. const QString &rArg2) const
  1211. { if (isEnabledFor(level))
  1212. forcedLog(level, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2)); }
  1213. inline void Logger::log(Level level,
  1214. const char *pMessage,
  1215. int arg1,
  1216. int arg2) const
  1217. { if (isEnabledFor(level))
  1218. forcedLog(level, QString::fromUtf8(pMessage).arg(arg1).arg(arg2)); }
  1219. inline void Logger::log(Level level,
  1220. const char *pMessage,
  1221. const QString &rArg1,
  1222. const QString &rArg2,
  1223. const QString &rArg3) const
  1224. { if (isEnabledFor(level))
  1225. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1, rArg2, rArg3)); }
  1226. inline void Logger::log(Level level,
  1227. const char *pMessage,
  1228. const QString &rArg1,
  1229. const QString &rArg2,
  1230. int arg3) const
  1231. { if (isEnabledFor(level))
  1232. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1, rArg2).arg(arg3)); }
  1233. inline void Logger::log(Level level,
  1234. const char *pMessage,
  1235. const QString &rArg1,
  1236. int arg2,
  1237. const QString &rArg3) const
  1238. { if (isEnabledFor(level))
  1239. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(rArg3)); }
  1240. inline void Logger::log(Level level,
  1241. const char *pMessage,
  1242. const QString &rArg1,
  1243. int arg2,
  1244. int arg3) const
  1245. { if (isEnabledFor(level))
  1246. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(arg3)); }
  1247. inline void Logger::log(Level level,
  1248. const char *pMessage,
  1249. int arg1,
  1250. const QString &rArg2,
  1251. const QString &rArg3) const
  1252. { if (isEnabledFor(level))
  1253. forcedLog(level, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(rArg3)); }
  1254. inline void Logger::log(Level level,
  1255. const char *pMessage,
  1256. int arg1,
  1257. const QString &rArg2,
  1258. int arg3) const
  1259. { if (isEnabledFor(level))
  1260. forcedLog(level, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(arg3)); }
  1261. inline void Logger::log(Level level,
  1262. const char *pMessage,
  1263. int arg1,
  1264. int arg2,
  1265. const QString &rArg3) const
  1266. { if (isEnabledFor(level))
  1267. forcedLog(level, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(rArg3)); }
  1268. inline void Logger::log(Level level,
  1269. const char *pMessage,
  1270. int arg1,
  1271. int arg2,
  1272. int arg3) const
  1273. { if (isEnabledFor(level))
  1274. forcedLog(level, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(arg3)); }
  1275. inline void Logger::log(Level level,
  1276. const char *pMessage,
  1277. const QVariant &rArg1,
  1278. const QVariant &rArg2,
  1279. const QVariant &rArg3) const
  1280. { if (isEnabledFor(level))
  1281. forcedLog(level, QString::fromUtf8(pMessage).arg(rArg1.toString(), rArg2.toString(), rArg3.toString())); }
  1282. // Log operations: trace
  1283. inline void Logger::trace(const QString &rMessage) const
  1284. { if (isEnabledFor(Level::TRACE_INT))
  1285. forcedLog(Level::TRACE_INT, rMessage); }
  1286. inline void Logger::trace(const LogError &rLogError) const
  1287. { if (isEnabledFor(Level::TRACE_INT))
  1288. forcedLog(Level::TRACE_INT, rLogError.toString()); }
  1289. inline void Logger::trace(const char *pMessage) const
  1290. { if (isEnabledFor(Level::TRACE_INT))
  1291. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage)); }
  1292. inline void Logger::trace(const char *pMessage,
  1293. const QString &rArg1) const
  1294. { if (isEnabledFor(Level::TRACE_INT))
  1295. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1)); }
  1296. inline void Logger::trace(const char *pMessage,
  1297. int arg1) const
  1298. { if (isEnabledFor(Level::TRACE_INT))
  1299. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(arg1)); }
  1300. inline void Logger::trace(const char *pMessage,
  1301. const QString &rArg1,
  1302. const QString &rArg2) const
  1303. { if (isEnabledFor(Level::TRACE_INT))
  1304. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2)); }
  1305. inline void Logger::trace(const char *pMessage,
  1306. const QString &rArg1,
  1307. int arg2) const
  1308. { if (isEnabledFor(Level::TRACE_INT))
  1309. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2)); }
  1310. inline void Logger::trace(const char *pMessage,
  1311. int arg1,
  1312. const QString &rArg2) const
  1313. { if (isEnabledFor(Level::TRACE_INT))
  1314. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2)); }
  1315. inline void Logger::trace(const char *pMessage,
  1316. int arg1,
  1317. int arg2) const
  1318. { if (isEnabledFor(Level::TRACE_INT))
  1319. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2)); }
  1320. inline void Logger::trace(const char *pMessage,
  1321. const QString &rArg1,
  1322. const QString &rArg2,
  1323. const QString &rArg3) const
  1324. { if (isEnabledFor(Level::TRACE_INT))
  1325. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2, rArg3)); }
  1326. inline void Logger::trace(const char *pMessage,
  1327. const QString &rArg1,
  1328. const QString &rArg2,
  1329. int arg3) const
  1330. { if (isEnabledFor(Level::TRACE_INT))
  1331. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2).arg(arg3)); }
  1332. inline void Logger::trace(const char *pMessage,
  1333. const QString &rArg1,
  1334. int arg2,
  1335. const QString &rArg3) const
  1336. { if (isEnabledFor(Level::TRACE_INT))
  1337. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(rArg3)); }
  1338. inline void Logger::trace(const char *pMessage,
  1339. const QString &rArg1,
  1340. int arg2,
  1341. int arg3) const
  1342. { if (isEnabledFor(Level::TRACE_INT))
  1343. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(arg3)); }
  1344. inline void Logger::trace(const char *pMessage,
  1345. int arg1,
  1346. const QString &rArg2,
  1347. const QString &rArg3) const
  1348. { if (isEnabledFor(Level::TRACE_INT))
  1349. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(rArg3)); }
  1350. inline void Logger::trace(const char *pMessage,
  1351. int arg1,
  1352. const QString &rArg2,
  1353. int arg3) const
  1354. { if (isEnabledFor(Level::TRACE_INT))
  1355. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(arg3)); }
  1356. inline void Logger::trace(const char *pMessage,
  1357. int arg1,
  1358. int arg2,
  1359. const QString &rArg3) const
  1360. { if (isEnabledFor(Level::TRACE_INT))
  1361. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(rArg3)); }
  1362. inline void Logger::trace(const char *pMessage,
  1363. int arg1,
  1364. int arg2,
  1365. int arg3) const
  1366. { if (isEnabledFor(Level::TRACE_INT))
  1367. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(arg3)); }
  1368. inline void Logger::trace(const char *pMessage,
  1369. const QVariant &rArg1,
  1370. const QVariant &rArg2,
  1371. const QVariant &rArg3) const
  1372. { if (isEnabledFor(Level::TRACE_INT))
  1373. forcedLog(Level::TRACE_INT, QString::fromUtf8(pMessage).arg(rArg1.toString(), rArg2.toString(), rArg3.toString())); }
  1374. // Log operations: warn
  1375. inline void Logger::warn(const QString &rMessage) const
  1376. { if (isEnabledFor(Level::WARN_INT))
  1377. forcedLog(Level::WARN_INT, rMessage); }
  1378. inline void Logger::warn(const LogError &rLogError) const
  1379. { if (isEnabledFor(Level::WARN_INT))
  1380. forcedLog(Level::WARN_INT, rLogError.toString()); }
  1381. inline void Logger::warn(const char *pMessage) const
  1382. { if (isEnabledFor(Level::WARN_INT))
  1383. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage)); }
  1384. inline void Logger::warn(const char *pMessage,
  1385. const QString &rArg1) const
  1386. { if (isEnabledFor(Level::WARN_INT))
  1387. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1)); }
  1388. inline void Logger::warn(const char *pMessage,
  1389. int arg1) const
  1390. { if (isEnabledFor(Level::WARN_INT))
  1391. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(arg1)); }
  1392. inline void Logger::warn(const char *pMessage,
  1393. const QString &rArg1,
  1394. const QString &rArg2) const
  1395. { if (isEnabledFor(Level::WARN_INT))
  1396. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2)); }
  1397. inline void Logger::warn(const char *pMessage,
  1398. const QString &rArg1,
  1399. int arg2) const
  1400. { if (isEnabledFor(Level::WARN_INT))
  1401. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2)); }
  1402. inline void Logger::warn(const char *pMessage,
  1403. int arg1,
  1404. const QString &rArg2) const
  1405. { if (isEnabledFor(Level::WARN_INT))
  1406. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2)); }
  1407. inline void Logger::warn(const char *pMessage,
  1408. int arg1,
  1409. int arg2) const
  1410. { if (isEnabledFor(Level::WARN_INT))
  1411. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2)); }
  1412. inline void Logger::warn(const char *pMessage,
  1413. const QString &rArg1,
  1414. const QString &rArg2,
  1415. const QString &rArg3) const
  1416. { if (isEnabledFor(Level::WARN_INT))
  1417. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2, rArg3)); }
  1418. inline void Logger::warn(const char *pMessage,
  1419. const QString &rArg1,
  1420. const QString &rArg2,
  1421. int arg3) const
  1422. { if (isEnabledFor(Level::WARN_INT))
  1423. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1, rArg2).arg(arg3)); }
  1424. inline void Logger::warn(const char *pMessage,
  1425. const QString &rArg1,
  1426. int arg2,
  1427. const QString &rArg3) const
  1428. { if (isEnabledFor(Level::WARN_INT))
  1429. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(rArg3)); }
  1430. inline void Logger::warn(const char *pMessage,
  1431. const QString &rArg1,
  1432. int arg2,
  1433. int arg3) const
  1434. { if (isEnabledFor(Level::WARN_INT))
  1435. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1).arg(arg2).arg(arg3)); }
  1436. inline void Logger::warn(const char *pMessage,
  1437. int arg1,
  1438. const QString &rArg2,
  1439. const QString &rArg3) const
  1440. { if (isEnabledFor(Level::WARN_INT))
  1441. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(rArg3)); }
  1442. inline void Logger::warn(const char *pMessage,
  1443. int arg1,
  1444. const QString &rArg2,
  1445. int arg3) const
  1446. { if (isEnabledFor(Level::WARN_INT))
  1447. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(arg1).arg(rArg2).arg(arg3)); }
  1448. inline void Logger::warn(const char *pMessage,
  1449. int arg1,
  1450. int arg2,
  1451. const QString &rArg3) const
  1452. { if (isEnabledFor(Level::WARN_INT))
  1453. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(rArg3)); }
  1454. inline void Logger::warn(const char *pMessage,
  1455. int arg1,
  1456. int arg2,
  1457. int arg3) const
  1458. { if (isEnabledFor(Level::WARN_INT))
  1459. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(arg1).arg(arg2).arg(arg3)); }
  1460. inline void Logger::warn(const char *pMessage,
  1461. const QVariant &rArg1,
  1462. const QVariant &rArg2,
  1463. const QVariant &rArg3) const
  1464. { if (isEnabledFor(Level::WARN_INT))
  1465. forcedLog(Level::WARN_INT, QString::fromUtf8(pMessage).arg(rArg1.toString(), rArg2.toString(), rArg3.toString())); }
  1466. } // namespace Log4Qt
  1467. // Q_DECLARE_TYPEinfo(Log4Qt::Logger, Q_COMPLEX_TYPE); // Use default
  1468. #endif // LOG4QT_LOGGER_H