logthread.cpp 2.2 KB

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