Updated loggin component of QtWebApp to version 1.6.5

This commit is contained in:
Luis Ángel San Martín
2016-06-16 22:16:01 +02:00
parent e6d229680f
commit 1657111621
9 changed files with 162 additions and 91 deletions

View File

@ -15,7 +15,8 @@
#include <stdio.h>
#include "yacreader_global.h"
void FileLogger::refreshSettings() {
void FileLogger::refreshSettings()
{
mutex.lock();
// Save old file name for later comparision with new settings
QString oldFileName=fileName;
@ -41,7 +42,8 @@ void FileLogger::refreshSettings() {
bufferSize=settings->value("bufferSize",0).toInt();
// Create new file if the filename has been changed
if (oldFileName!=fileName) {
if (oldFileName!=fileName)
{
fprintf(stderr,"Logging to %s\n",qPrintable(fileName));
close();
open();
@ -57,7 +59,8 @@ FileLogger::FileLogger(QSettings* settings, const int refreshInterval, QObject*
Q_ASSERT(refreshInterval>=0);
this->settings=settings;
file=0;
if (refreshInterval>0) {
if (refreshInterval>0)
{
refreshTimer.start(refreshInterval,this);
}
flushTimer.start(1000,this);
@ -65,26 +68,31 @@ FileLogger::FileLogger(QSettings* settings, const int refreshInterval, QObject*
}
FileLogger::~FileLogger() {
FileLogger::~FileLogger()
{
close();
}
void FileLogger::write(const LogMessage* logMessage) {
void FileLogger::write(const LogMessage* logMessage)
{
// Try to write to the file
if (file) {
if (file)
{
// Write the message
file->write(qPrintable(logMessage->toString(msgFormat,timestampFormat)));
// Flush error messages immediately, to ensure that no important message
// gets lost when the program terinates abnormally.
if (logMessage->getType()>=QtCriticalMsg) {
if (logMessage->getType()>=QtCriticalMsg)
{
file->flush();
}
// Check for success
if (file->error()) {
if (file->error())
{
close();
qWarning("Cannot write to log file %s: %s",qPrintable(fileName),qPrintable(file->errorString()));
}
@ -92,19 +100,23 @@ void FileLogger::write(const LogMessage* logMessage) {
}
// Fall-back to the super class method, if writing failed
if (!file) {
if (!file)
{
Logger::write(logMessage);
}
}
void FileLogger::open() {
if (fileName.isEmpty()) {
void FileLogger::open()
{
if (fileName.isEmpty())
{
qWarning("Name of logFile is empty");
}
else {
file=new QFile(fileName);
if (!file->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {
if (!file->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
{
qWarning("Cannot open log file %s: %s",qPrintable(fileName),qPrintable(file->errorString()));
file=0;
}
@ -112,8 +124,10 @@ void FileLogger::open() {
}
void FileLogger::close() {
if (file) {
void FileLogger::close()
{
if (file)
{
file->close();
delete file;
file=0;
@ -123,18 +137,22 @@ void FileLogger::close() {
void FileLogger::rotate() {
// count current number of existing backup files
int count=0;
forever {
forever
{
QFile bakFile(QString("%1.%2").arg(fileName).arg(count+1));
if (bakFile.exists()) {
if (bakFile.exists())
{
++count;
}
else {
else
{
break;
}
}
// Remove all old backup files that exceed the maximum number
while (maxBackups>0 && count>=maxBackups) {
while (maxBackups>0 && count>=maxBackups)
{
QFile::remove(QString("%1.%2").arg(fileName).arg(count));
--count;
}
@ -149,21 +167,26 @@ void FileLogger::rotate() {
}
void FileLogger::timerEvent(QTimerEvent* event) {
if (!event) {
void FileLogger::timerEvent(QTimerEvent* event)
{
if (!event)
{
return;
}
else if (event->timerId()==refreshTimer.timerId()) {
else if (event->timerId()==refreshTimer.timerId())
{
refreshSettings();
}
else if (event->timerId()==flushTimer.timerId() && file) {
else if (event->timerId()==flushTimer.timerId() && file)
{
mutex.lock();
// Flush the I/O buffer
file->flush();
// Rotate the file if it is too large
if (maxSize>0 && file->size()>=maxSize) {
if (maxSize>0 && file->size()>=maxSize)
{
close();
rotate();
open();