Skip to content

Commit cda0619

Browse files
committed
CCDB Downloader: example of how to use signposts
Signposts, when properly configured, can provide stacktrace for each logging line.
1 parent f5bcf71 commit cda0619

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

CCDB/src/CCDBDownloader.cxx

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <CCDB/CCDBDownloader.h>
1313
#include "CommonUtils/StringUtils.h"
1414
#include "CCDB/CCDBTimeStampUtils.h"
15+
#include "Framework/Signpost.h"
1516

1617
#include <curl/curl.h>
1718
#include <unordered_map>
@@ -29,6 +30,8 @@
2930
#include <fairlogger/Logger.h>
3031
#include <boost/asio/ip/host_name.hpp>
3132

33+
O2_DECLARE_DYNAMIC_STACKTRACE_LOG(ccdb_downloader);
34+
3235
namespace o2::ccdb
3336
{
3437

@@ -37,21 +40,24 @@ void uvErrorCheck(int code)
3740
if (code != 0) {
3841
char buf[1000];
3942
uv_strerror_r(code, buf, 1000);
40-
LOG(error) << "CCDBDownloader: UV error - " << buf;
43+
O2_SIGNPOST_ID_GENERATE(sid, ccdb_downloader);
44+
O2_SIGNPOST_EVENT_EMIT_ERROR(ccdb_downloader, sid, "CCDBDownloader", "UV error - %{public}s", buf);
4145
}
4246
}
4347

4448
void curlEasyErrorCheck(CURLcode code)
4549
{
4650
if (code != CURLE_OK) {
47-
LOG(error) << "CCDBDownloader: CURL error - " << curl_easy_strerror(code);
51+
O2_SIGNPOST_ID_GENERATE(sid, ccdb_downloader);
52+
O2_SIGNPOST_EVENT_EMIT_ERROR(ccdb_downloader, sid, "CCDBDownloader", "CURL error - %{public}s", curl_easy_strerror(code));
4853
}
4954
}
5055

5156
void curlMultiErrorCheck(CURLMcode code)
5257
{
5358
if (code != CURLM_OK) {
54-
LOG(error) << "CCDBDownloader: CURL error - " << curl_multi_strerror(code);
59+
O2_SIGNPOST_ID_GENERATE(sid, ccdb_downloader);
60+
O2_SIGNPOST_EVENT_EMIT_ERROR(ccdb_downloader, sid, "CCDBDownloader", "CURL error - %{public}s", curl_multi_strerror(code));
5561
}
5662
}
5763
namespace
@@ -155,12 +161,14 @@ void CCDBDownloader::closesocketCallback(void* clientp, curl_socket_t item)
155161
}
156162
CD->mSocketTimerMap.erase(item);
157163
if (close(item) == -1) {
158-
LOG(error) << "CCDBDownloader: Socket failed to close";
164+
O2_SIGNPOST_ID_GENERATE(sid, ccdb_downloader);
165+
O2_SIGNPOST_EVENT_EMIT_ERROR(ccdb_downloader, sid, "CCDBDownloader", "CCDBDownloader: Socket failed to close");
159166
}
160167
}
161168
} else {
162169
if (close(item) == -1) {
163-
LOG(error) << "CCDBDownloader: Socket failed to close";
170+
O2_SIGNPOST_ID_GENERATE(sid, ccdb_downloader);
171+
O2_SIGNPOST_EVENT_EMIT_ERROR(ccdb_downloader, sid, "CCDBDownloader", "CCDBDownloader: Socket failed to close");
164172
}
165173
}
166174
}
@@ -170,7 +178,8 @@ curl_socket_t opensocketCallback(void* clientp, curlsocktype purpose, struct cur
170178
auto CD = (CCDBDownloader*)clientp;
171179
auto sock = socket(address->family, address->socktype, address->protocol);
172180
if (sock == -1) {
173-
LOG(error) << "CCDBDownloader: Socket failed to open";
181+
O2_SIGNPOST_ID_GENERATE(sid, ccdb_downloader);
182+
O2_SIGNPOST_EVENT_EMIT_ERROR(ccdb_downloader, sid, "CCDBDownloader", "CCDBDownloader: Socket failed to open");
174183
}
175184

176185
if (CD->mExternalLoop) {
@@ -197,7 +206,8 @@ void CCDBDownloader::closeSocketByTimer(uv_timer_t* handle)
197206
uvErrorCheck(uv_timer_stop(CD->mSocketTimerMap[sock]));
198207
CD->mSocketTimerMap.erase(sock);
199208
if (close(sock) == -1) {
200-
LOG(error) << "CCDBDownloader: Socket failed to close";
209+
O2_SIGNPOST_ID_GENERATE(sid, ccdb_downloader);
210+
O2_SIGNPOST_EVENT_EMIT_ERROR(ccdb_downloader, sid, "CCDBDownloader", "CCDBDownloader: Socket failed to close");
201211
}
202212
delete data;
203213
}

0 commit comments

Comments
 (0)