DLog.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. //tmp 存放生成的曲线图片
  9. QDir dir("D:/tmp");
  10. if(dir.exists()){
  11. //clear tmp
  12. dir.setFilter(QDir::Files);
  13. int filecount = dir.count();
  14. for(int i=0; i< filecount; i++){
  15. dir.remove(dir[i]);
  16. }
  17. qDebug() << "D:/tmp is exists";
  18. }else{
  19. dir.mkdir("D:/tmp");
  20. qDebug() << "D:/tmp is not exists, mk it";
  21. }
  22. QFile file(DEBUG_FILE_NAME);
  23. if( file.exists() && file.size() >= DEBUG_FILE_MAX_SIZE ){
  24. {
  25. QFile file_bak(DEBUG_FILE_BACKUP);
  26. if(file_bak.exists()){
  27. file_bak.remove();
  28. }
  29. }
  30. file.rename(DEBUG_FILE_BACKUP);
  31. }
  32. //qInstallMessageHandler(myMsgOutput);
  33. }
  34. void myMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString& msg)
  35. {
  36. static QMutex mutex;
  37. mutex.lock();
  38. QString time=QDateTime::currentDateTime().toString(QString("[ yyyy-MM-dd HH:mm:ss:zzz ]"));
  39. QString mmsg;
  40. switch(type)
  41. {
  42. case QtDebugMsg:
  43. 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));
  44. break;
  45. case QtInfoMsg:
  46. 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));
  47. break;
  48. case QtWarningMsg:
  49. 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));
  50. break;
  51. case QtCriticalMsg:
  52. 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));
  53. break;
  54. case QtFatalMsg:
  55. 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));
  56. abort();
  57. }
  58. QFile file(DEBUG_FILE_NAME);
  59. file.open(QIODevice::ReadWrite | QIODevice::Append);
  60. QTextStream stream(&file);
  61. stream << mmsg << "\r\n";
  62. file.flush();
  63. file.close();
  64. mutex.unlock();
  65. }