logthread.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "logthread.h"
  2. LogThread::LogThread(QObject *parent) :
  3. QThread(parent)
  4. {
  5. keep = false;
  6. dataList.clear();
  7. wrongList.clear();
  8. printf("logthread init\n");
  9. QDir dir2("/opt/ytDataProcess/log/");
  10. if(!dir2.exists())
  11. dir2.mkdir("/opt/ytDataProcess/log/");
  12. file = new QFile("/opt/ytDataProcess/log/ytServiceCore-"+QDate::currentDate().toString("yyyyMMdd")+".log");
  13. wfile = new QFile("/opt/ytDataProcess/log/ytServiceCoreErr.log");
  14. day = QDate::currentDate().day();
  15. }
  16. void LogThread::appendData(QString data)
  17. {
  18. dataList.append(data);
  19. }
  20. void LogThread::appendWrongData(QString data)
  21. {
  22. wrongList.append(data);
  23. }
  24. void LogThread::stop()
  25. {
  26. keep = false;
  27. }
  28. void LogThread::run()
  29. {
  30. printf("log thread start\n");
  31. if(file->open(QIODevice::ReadWrite|QIODevice::Append|QIODevice::Text)){
  32. file->write(QString("ytServiceCore start at %1.\r\n").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).toUtf8());
  33. file->close();
  34. }
  35. keep = true;
  36. while(keep){
  37. if(dataList.length()>0){
  38. if(day!=QDate::currentDate().day()){
  39. day = QDate::currentDate().day();
  40. file->setFileName("/opt/ytDataProcess/log/ytServiceCore-"+QDate::currentDate().toString("yyyyMMdd")+".log");
  41. }
  42. if(file->open(QIODevice::ReadWrite|QIODevice::Append|QIODevice::Text)){
  43. while(dataList.length()>0){
  44. file->write(dataList.first().toUtf8());
  45. file->write("\r\n");
  46. file->flush();
  47. dataList.removeFirst();
  48. usleep(1000);
  49. }
  50. file->close();
  51. }
  52. }
  53. if(wrongList.length()>0){
  54. if(wfile->open(QIODevice::ReadWrite|QIODevice::Append|QIODevice::Text)){
  55. while(wrongList.length()>0){
  56. wfile->write(wrongList.first().toUtf8());
  57. wfile->write("\r\n");
  58. wfile->flush();
  59. wrongList.removeFirst();
  60. usleep(1000);
  61. }
  62. wfile->close();
  63. }
  64. }
  65. usleep(50000);
  66. }
  67. }