| 130 | } |
| 131 | |
| 132 | void Logger::writeLogFile(Logger::LogType type) |
| 133 | { |
| 134 | QString datePrefix = QDateTime::currentDateTime().toString("yyyy-MM-dd"); |
| 135 | QString logFileName = QString("%1/%2_%3.log").arg(logFolder, datePrefix, typeIdentity[(int)type]); |
| 136 | if(!logFiles[(int)type] || logFiles[(int)type]->fileName()!=logFileName) |
| 137 | { |
| 138 | logFiles[(int)type] = QSharedPointer<QFile>::create(logFileName); |
| 139 | if(!logFiles[(int)type]->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) |
| 140 | { |
| 141 | logFiles[(int)type] = nullptr; |
| 142 | return; |
| 143 | } |
| 144 | } |
| 145 | if(logFiles[(int)type]->size() > maxLogFileSize) |
| 146 | { |
| 147 | logFiles[(int)type]->remove(); |
| 148 | logFiles[(int)type] = QSharedPointer<QFile>::create(logFileName); |
| 149 | if(!logFiles[(int)type]->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) |
| 150 | { |
| 151 | logFiles[(int)type] = nullptr; |
| 152 | return; |
| 153 | } |
| 154 | log(LogType::APP, QString("Reset Big Log File: %1").arg(logFileName)); |
| 155 | } |
| 156 | auto &curLogBuffer = logBuffer[(int)type]; |
| 157 | for(int i = flushPos[(int)type]; i < curLogBuffer.size(); ++i) |
| 158 | { |
| 159 | logFiles[(int)type]->write(curLogBuffer[i].toUtf8().constData()); |
| 160 | logFiles[(int)type]->write("\n"); |
| 161 | } |
| 162 | logFiles[(int)type]->flush(); |
| 163 | while(curLogBuffer.size() > bufferSize) |
| 164 | { |
| 165 | curLogBuffer.pop_front(); |
| 166 | } |
| 167 | flushPos[(int)type] = curLogBuffer.size(); |
| 168 | } |
| 169 | |