| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * loggerwithfile.h | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Created on: Nov 11, 2017 | 
					
						
							|  |  |  |  *      Author: f4exb | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef LOGGING_LOGGERWITHFILE_H_
 | 
					
						
							|  |  |  | #define LOGGING_LOGGERWITHFILE_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QtGlobal>
 | 
					
						
							|  |  |  | #include "logger.h"
 | 
					
						
							|  |  |  | #include "filelogger.h"
 | 
					
						
							| 
									
										
										
										
											2025-07-31 16:35:44 +01:00
										 |  |  | #include "bufferlogger.h"
 | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-20 13:49:21 +01:00
										 |  |  | #include "export.h"
 | 
					
						
							| 
									
										
										
										
											2018-03-03 20:23:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  | namespace qtwebapp { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |   Logs messages to console and optionally to a file simultaneously. | 
					
						
							|  |  |  |   @see FileLogger for a description of the two underlying file logger. | 
					
						
							|  |  |  |   @see Logger for a description of the console loger. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-03 20:23:38 +01:00
										 |  |  | class LOGGING_API LoggerWithFile : public Logger { | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  |     Q_OBJECT | 
					
						
							|  |  |  |     Q_DISABLE_COPY(LoggerWithFile) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     LoggerWithFile(QObject *parent = 0); | 
					
						
							| 
									
										
										
										
											2017-11-12 02:23:55 +01:00
										 |  |  |     virtual ~LoggerWithFile(); | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-12 02:23:55 +01:00
										 |  |  |     void createOrSetFileLogger(const FileLoggerSettings& settings, const int refreshInterval=10000); | 
					
						
							|  |  |  |     void destroyFileLogger(); | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |       Decorate and log the message, if type>=minLevel. | 
					
						
							|  |  |  |       This method is thread safe. | 
					
						
							|  |  |  |       @param type Message type (level) | 
					
						
							|  |  |  |       @param message Message text | 
					
						
							|  |  |  |       @param file Name of the source file where the message was generated (usually filled with the macro __FILE__) | 
					
						
							|  |  |  |       @param function Name of the function where the message was generated (usually filled with the macro __LINE__) | 
					
						
							|  |  |  |       @param line Line Number of the source file, where the message was generated (usually filles with the macro __func__ or __FUNCTION__) | 
					
						
							|  |  |  |       @see LogMessage for a description of the message decoration. | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     virtual void log(const QtMsgType type, const QString& message, const QString &file="", const QString &function="", const int line=0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |       Clear the thread-local data of the current thread. | 
					
						
							|  |  |  |       This method is thread safe. | 
					
						
							|  |  |  |       @param buffer Whether to clear the backtrace buffer | 
					
						
							|  |  |  |       @param variables Whether to clear the log variables | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     virtual void clear(const bool buffer=true, const bool variables=true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool getUseFileLogger() const { return useFileFlogger; } | 
					
						
							|  |  |  |     void setUseFileLogger(bool use) { useFileFlogger = use; } | 
					
						
							| 
									
										
										
										
											2017-11-12 02:23:55 +01:00
										 |  |  |     bool hasFileLogger() const { return fileLogger != 0; } | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * Get a file logger settings copy | 
					
						
							|  |  |  |      * @return The current file logger settings | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     FileLoggerSettings getFileLoggerSettings() const { return fileLogger->getFileLoggerSettings(); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * Set new file logger settings data | 
					
						
							|  |  |  |      * @param File logger settings to replace current data | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     void setFileLoggerSettings(const FileLoggerSettings& settings) { fileLogger->setFileLoggerSettings(settings); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-12 02:23:55 +01:00
										 |  |  |     void setConsoleMinMessageLevel(const QtMsgType& msgLevel); | 
					
						
							|  |  |  |     void setFileMinMessageLevel(const QtMsgType& msgLevel); | 
					
						
							| 
									
										
										
										
											2017-11-12 00:01:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-18 20:07:53 +01:00
										 |  |  |     void getConsoleMinMessageLevelStr(QString& levelStr); | 
					
						
							|  |  |  |     void getFileMinMessageLevelStr(QString& levelStr); | 
					
						
							|  |  |  |     void getLogFileName(QString& fileName); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-07 02:52:35 +01:00
										 |  |  |     /** This will log to file only */ | 
					
						
							|  |  |  |     void logToFile(const QtMsgType type, const QString& message, const QString &file="", const QString &function="", const int line=0); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-31 16:35:44 +01:00
										 |  |  |     /** Gets last messages saved in buffer. */ | 
					
						
							|  |  |  |     QString getBufferLog() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  | private: | 
					
						
							|  |  |  |     /** First console logger */ | 
					
						
							|  |  |  |     Logger* consoleLogger; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** Second file logger */ | 
					
						
							|  |  |  |     FileLogger* fileLogger; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-31 16:35:44 +01:00
										 |  |  |     BufferLogger* bufferLogger; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-11 23:44:05 +01:00
										 |  |  |     /** Use file logger indicator */ | 
					
						
							|  |  |  |     bool useFileFlogger; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // end of namespace
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* LOGGING_LOGGERWITHFILE_H_ */
 |