DLog.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "DLog.h"
  2. #include <QtDebug>
  3. #define DEBUG_FILE_NAME "debug.txt"
  4. #define DEBUG_FILE_BACKUP "debug_bak.txt"
  5. #define DEBUG_FILE_MAX_SIZE (1*1024*1024) //1MB
  6. void DLog_Init()
  7. {
  8. QDir dir("D:/tmp");
  9. if(dir.exists()){
  10. //clear tmp
  11. dir.setFilter(QDir::Files);
  12. int filecount = dir.count();
  13. for(int i=0; i< filecount; i++){
  14. dir.remove(dir[i]);
  15. }
  16. qDebug() << "D:/tmp is exists";
  17. }else{
  18. dir.mkdir("D:/tmp");
  19. qDebug() << "D:/tmp is not exists, mk it";
  20. }
  21. QFile file(DEBUG_FILE_NAME);
  22. if( file.exists() && file.size() >= DEBUG_FILE_MAX_SIZE ){
  23. {
  24. QFile file_bak(DEBUG_FILE_BACKUP);
  25. if(file_bak.exists()){
  26. file_bak.remove();
  27. }
  28. }
  29. file.rename(DEBUG_FILE_BACKUP);
  30. }
  31. //qInstallMessageHandler(myMsgOutput);
  32. }
  33. void myMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString& msg)
  34. {
  35. static QMutex mutex;
  36. mutex.lock();
  37. QString time=QDateTime::currentDateTime().toString(QString("[ yyyy-MM-dd HH:mm:ss:zzz ]"));
  38. QString mmsg;
  39. switch(type)
  40. {
  41. case QtDebugMsg:
  42. mmsg=QString("%1: Debug:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
  43. break;
  44. case QtInfoMsg:
  45. mmsg=QString("%1: Info:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
  46. break;
  47. case QtWarningMsg:
  48. mmsg=QString("%1: Warning:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
  49. break;
  50. case QtCriticalMsg:
  51. mmsg=QString("%1: Critical:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
  52. break;
  53. case QtFatalMsg:
  54. mmsg=QString("%1: Fatal:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
  55. abort();
  56. }
  57. QFile file(DEBUG_FILE_NAME);
  58. file.open(QIODevice::ReadWrite | QIODevice::Append);
  59. QTextStream stream(&file);
  60. stream << mmsg << "\r\n";
  61. file.flush();
  62. file.close();
  63. mutex.unlock();
  64. }