diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-11-03 11:08:18 +0100 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-11-04 23:32:52 +0100 |
commit | 4d2ce949b3b41f8bf0af446fa20205ddd229e579 (patch) | |
tree | 01fa19471d9831b296bea5d7049f765e38b30bbb /rbutil/rbutilqt/systrace.cpp | |
parent | 335ec75d60bba82f23fc47b20f9390e0cba9c9c5 (diff) | |
download | rockbox-4d2ce949b3b41f8bf0af446fa20205ddd229e579.tar.gz rockbox-4d2ce949b3b41f8bf0af446fa20205ddd229e579.zip |
Use cutelogger for Rockbox Utility internal trace.
Change tracing from qDebug() to use cutelogger, which is available under the
LGPL2.1. This allows to automatically add filename and line number to the log,
and also provides multiple log levels.
Change-Id: I5dbdaf902ba54ea99f07ae10a07467c52fdac910
Diffstat (limited to 'rbutil/rbutilqt/systrace.cpp')
-rw-r--r-- | rbutil/rbutilqt/systrace.cpp | 108 |
1 files changed, 45 insertions, 63 deletions
diff --git a/rbutil/rbutilqt/systrace.cpp b/rbutil/rbutilqt/systrace.cpp index dc8534af03..5e42e1b2d8 100644 --- a/rbutil/rbutilqt/systrace.cpp +++ b/rbutil/rbutilqt/systrace.cpp | |||
@@ -22,10 +22,8 @@ | |||
22 | #include "ui_systracefrm.h" | 22 | #include "ui_systracefrm.h" |
23 | 23 | ||
24 | #include "rbsettings.h" | 24 | #include "rbsettings.h" |
25 | #include "Logger.h" | ||
25 | 26 | ||
26 | QString SysTrace::debugbuffer; | ||
27 | QString SysTrace::lastmessage; | ||
28 | unsigned int SysTrace::repeat = 0; | ||
29 | 27 | ||
30 | SysTrace::SysTrace(QWidget *parent) : QDialog(parent) | 28 | SysTrace::SysTrace(QWidget *parent) : QDialog(parent) |
31 | { | 29 | { |
@@ -43,7 +41,28 @@ SysTrace::SysTrace(QWidget *parent) : QDialog(parent) | |||
43 | void SysTrace::refresh(void) | 41 | void SysTrace::refresh(void) |
44 | { | 42 | { |
45 | int pos = ui.textTrace->verticalScrollBar()->value(); | 43 | int pos = ui.textTrace->verticalScrollBar()->value(); |
46 | flush(); | 44 | |
45 | QString debugbuffer; | ||
46 | QFile tracefile(QDir::tempPath() + "/rbutil-trace.log"); | ||
47 | tracefile.open(QIODevice::ReadOnly); | ||
48 | QTextStream c(&tracefile); | ||
49 | QString line; | ||
50 | QString color; | ||
51 | while(!c.atEnd()) { | ||
52 | line = c.readLine(); | ||
53 | if(line.contains("WARNING")) | ||
54 | color = "orange"; | ||
55 | else if(line.contains("ERROR")) | ||
56 | color = "red"; | ||
57 | #if 0 | ||
58 | else if(line.contains("INFO")) | ||
59 | color = "green"; | ||
60 | #endif | ||
61 | else | ||
62 | color = "black"; | ||
63 | debugbuffer += QString("<div style='color:%1;'>%2</div>").arg(color, line); | ||
64 | } | ||
65 | tracefile.close(); | ||
47 | ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>"); | 66 | ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>"); |
48 | ui.textTrace->verticalScrollBar()->setValue(pos); | 67 | ui.textTrace->verticalScrollBar()->setValue(pos); |
49 | QString oldlog = RbSettings::value(RbSettings::CachePath).toString() | 68 | QString oldlog = RbSettings::value(RbSettings::CachePath).toString() |
@@ -52,23 +71,26 @@ void SysTrace::refresh(void) | |||
52 | } | 71 | } |
53 | 72 | ||
54 | 73 | ||
74 | QString SysTrace::getTrace(void) | ||
75 | { | ||
76 | QString debugbuffer; | ||
77 | QFile tracefile(QDir::tempPath() + "/rbutil-trace.log"); | ||
78 | tracefile.open(QIODevice::ReadOnly); | ||
79 | QTextStream c(&tracefile); | ||
80 | debugbuffer = c.readAll(); | ||
81 | tracefile.close(); | ||
82 | |||
83 | return debugbuffer; | ||
84 | } | ||
85 | |||
86 | |||
55 | void SysTrace::save(QString filename) | 87 | void SysTrace::save(QString filename) |
56 | { | 88 | { |
57 | if(filename.isEmpty()) | 89 | if(filename.isEmpty()) |
58 | filename = RbSettings::value(RbSettings::CachePath).toString() | ||
59 | + "/rbutil-trace.log"; | ||
60 | // make sure any repeat detection is flushed | ||
61 | flush(); | ||
62 | // append save date to the trace. Append it directly instead of using | ||
63 | // qDebug() as the handler might have been unregistered. | ||
64 | debugbuffer.append("[SysTrace] saving trace at "); | ||
65 | debugbuffer.append(QDateTime::currentDateTime().toString(Qt::ISODate)); | ||
66 | debugbuffer.append("\n"); | ||
67 | QFile fh(filename); | ||
68 | if(!fh.open(QIODevice::WriteOnly)) | ||
69 | return; | 90 | return; |
70 | fh.write(debugbuffer.toUtf8(), debugbuffer.size()); | 91 | LOG_INFO() << "saving trace at" << QDateTime::currentDateTime().toString(Qt::ISODate); |
71 | fh.close(); | 92 | QFile::copy(QDir::tempPath() + "/rbutil-trace.log", filename); |
93 | |||
72 | } | 94 | } |
73 | 95 | ||
74 | void SysTrace::saveCurrentTrace(void) | 96 | void SysTrace::saveCurrentTrace(void) |
@@ -87,59 +109,19 @@ void SysTrace::savePreviousTrace(void) | |||
87 | if(fp.isEmpty()) | 109 | if(fp.isEmpty()) |
88 | return; | 110 | return; |
89 | 111 | ||
90 | QString oldlog = RbSettings::value(RbSettings::CachePath).toString() | 112 | QString oldlog = QDir::tempPath() + "/rbutil-trace.log.1"; |
91 | + "/rbutil-trace.log"; | ||
92 | QFile::copy(oldlog, fp); | 113 | QFile::copy(oldlog, fp); |
93 | return; | 114 | return; |
94 | } | 115 | } |
95 | 116 | ||
96 | #if QT_VERSION < 0x050000 | ||
97 | void SysTrace::debug(QtMsgType type, const char* msg) | ||
98 | { | ||
99 | (void)type; | ||
100 | if(lastmessage != msg) { | ||
101 | lastmessage = msg; | ||
102 | flush(); | ||
103 | debugbuffer.append(QString::fromLocal8Bit(msg) + "\n"); | ||
104 | #if !defined(NODEBUG) | ||
105 | fprintf(stderr, "%s\n", msg); | ||
106 | #endif | ||
107 | repeat = 1; | ||
108 | } | ||
109 | else { | ||
110 | repeat++; | ||
111 | } | ||
112 | } | ||
113 | #else | ||
114 | void SysTrace::debug(QtMsgType type, const QMessageLogContext &context, const QString &msg) | ||
115 | { | ||
116 | (void)type; | ||
117 | (void)context; | ||
118 | QByteArray localMsg = msg.toLocal8Bit(); | ||
119 | if(lastmessage != msg) { | ||
120 | lastmessage = msg; | ||
121 | flush(); | ||
122 | debugbuffer.append(msg + "\n"); | ||
123 | #if !defined(NODEBUG) | ||
124 | fprintf(stderr, "%s\n", localMsg.constData()); | ||
125 | #endif | ||
126 | repeat = 1; | ||
127 | } | ||
128 | else { | ||
129 | repeat++; | ||
130 | } | ||
131 | } | ||
132 | #endif | ||
133 | 117 | ||
134 | void SysTrace::flush(void) | 118 | void SysTrace::rotateTrace(void) |
135 | { | 119 | { |
136 | if(repeat > 1) { | 120 | QString f = QDir::tempPath() + "/rbutil-trace.log.1"; |
137 | debugbuffer.append( | 121 | if(QFileInfo(f).exists()) { |
138 | QString(" (Last message repeated %1 times.)\n").arg(repeat)); | 122 | QFile::remove(f); |
139 | #if !defined(NODEBUG) | ||
140 | fprintf(stderr, " (Last message repeated %i times.)\n", repeat); | ||
141 | #endif | ||
142 | } | 123 | } |
124 | QFile::rename(QDir::tempPath() + "/rbutil-trace.log", f); | ||
143 | } | 125 | } |
144 | 126 | ||
145 | 127 | ||