Skip to content

Commit 533eb51

Browse files
committed
Added the possibility to build without logs (since boost::log is currently broken with recent boost versions and cmake
1 parent c2b893a commit 533eb51

20 files changed

+205
-172
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,10 @@ if (NOT EMBEDDED_RESTC_CPP)
154154
target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_THREAD_LIBS_INIT})
155155
endif()
156156

157+
if (RESTC_CPP_LOG_WITH_BOOST_LOG)
158+
set(BOOST_LOG_DEP log)
159+
endif()
160+
157161
#set(Boost_USE_MULTITHREADED ON)
158162
find_package(Boost REQUIRED COMPONENTS
159163
system
@@ -163,7 +167,7 @@ if (NOT EMBEDDED_RESTC_CPP)
163167
context
164168
coroutine
165169
chrono
166-
log
170+
${BOOST_LOG_DEP}
167171
)
168172
target_include_directories(${PROJECT_NAME} PUBLIC ${Boost_INCLUDE_DIRS})
169173
target_link_libraries(${PROJECT_NAME} PUBLIC ${Boost_LIBRARIES})

include/restc-cpp/IoTimer.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class IoTimer : public std::enable_shared_from_this<IoTimer>
7171
void Cancel() {
7272
if (is_active_) {
7373
is_active_ = false;
74-
RESTC_CPP_LOG_TRACE << "Canceled timer " << timer_name_;
74+
RESTC_CPP_LOG_TRACE_("Canceled timer " << timer_name_);
7575
}
7676
}
7777

@@ -109,8 +109,8 @@ class IoTimer : public std::enable_shared_from_this<IoTimer>
109109

110110
std::weak_ptr<Connection> weak_connection = connection;
111111

112-
RESTC_CPP_LOG_TRACE << "Created timer " << timerName
113-
<< " for " << *connection;
112+
RESTC_CPP_LOG_TRACE_("Created timer " << timerName
113+
<< " for " << *connection);
114114

115115
return std::make_unique<Wrapper>(Create(
116116
timerName,
@@ -123,10 +123,9 @@ class IoTimer : public std::enable_shared_from_this<IoTimer>
123123
[weak_connection, timerName]() {
124124
if (auto connection = weak_connection.lock()) {
125125
if (connection->GetSocket().GetSocket().is_open()) {
126-
RESTC_CPP_LOG_TRACE
127-
<< "Timer " << timerName << ": "
126+
RESTC_CPP_LOG_TRACE_("Timer " << timerName << ": "
128127
<< *connection
129-
<< " timed out.";
128+
<< " timed out.");
130129
connection->GetSocket().Close(Socket::Reason::TIME_OUT);
131130
}
132131
}

include/restc-cpp/SerializeJson.h

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,8 @@ void assign_value(varT& var, const valT& val) {
295295

296296
template <typename varT, typename valT>
297297
void assign_value(varT var, valT val) {
298-
RESTC_CPP_LOG_ERROR << "assign_value: Invalid data conversion from "
299-
<< RESTC_CPP_TYPENAME(varT) << " to " << RESTC_CPP_TYPENAME(valT);
298+
RESTC_CPP_LOG_ERROR_("assign_value: Invalid data conversion from "
299+
<< RESTC_CPP_TYPENAME(varT) << " to " << RESTC_CPP_TYPENAME(valT));
300300
assert(false);
301301
throw ParseException("assign_value: Invalid data conversion from ");
302302
}
@@ -515,23 +515,23 @@ class RapidJsonSkipObject : public RapidJsonDeserializerBase {
515515

516516
bool StartObject() override {
517517
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
518-
RESTC_CPP_LOG_TRACE << " Skipping json: StartObject()";
518+
RESTC_CPP_LOG_TRACE_(" Skipping json: StartObject()");
519519
#endif
520520
++recursion_;
521521
return true;
522522
}
523523

524524
bool Key(const char* str, std::size_t length, bool copy) override {
525525
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
526-
RESTC_CPP_LOG_TRACE << " Skipping json key: "
527-
<< boost::string_ref(str, length);
526+
RESTC_CPP_LOG_TRACE_(" Skipping json key: "
527+
<< boost::string_ref(str, length));
528528
#endif
529529
return true;
530530
}
531531

532532
bool EndObject(std::size_t memberCount) override {
533533
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
534-
RESTC_CPP_LOG_TRACE << " Skipping json: EndObject()";
534+
RESTC_CPP_LOG_TRACE_(" Skipping json: EndObject()");
535535
#endif
536536
if (--recursion_ <= 0) {
537537
if (HaveParent()) {
@@ -543,15 +543,15 @@ class RapidJsonSkipObject : public RapidJsonDeserializerBase {
543543

544544
bool StartArray() override {
545545
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
546-
RESTC_CPP_LOG_TRACE << " Skipping json: StartArray()";
546+
RESTC_CPP_LOG_TRACE_(" Skipping json: StartArray()");
547547
#endif
548548
++recursion_;
549549
return true;
550550
}
551551

552552
bool EndArray(std::size_t elementCount) override {
553553
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
554-
RESTC_CPP_LOG_TRACE << " Skipping json: EndArray()";
554+
RESTC_CPP_LOG_TRACE_(" Skipping json: EndArray()");
555555
#endif
556556
if (--recursion_ <= 0) {
557557
if (HaveParent()) {
@@ -778,10 +778,10 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
778778

779779
if (!recursed_to_) {
780780
assert(!found);
781-
RESTC_CPP_LOG_DEBUG << "RecurseToMember(): Failed to find property-name '"
781+
RESTC_CPP_LOG_DEBUG_("RecurseToMember(): Failed to find property-name '"
782782
<< current_name_
783783
<< "' in C++ class '" << RESTC_CPP_TYPENAME(dataT)
784-
<< "' when serializing from JSON.";
784+
<< "' when serializing from JSON.");
785785

786786
if (!properties_.ignore_unknown_properties) {
787787
throw UnknownPropertyException(current_name_);
@@ -856,10 +856,10 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
856856

857857
if (!found) {
858858
assert(!found);
859-
RESTC_CPP_LOG_DEBUG << "SetValueOnMember(): Failed to find property-name '"
859+
RESTC_CPP_LOG_DEBUG_("SetValueOnMember(): Failed to find property-name '"
860860
<< current_name_
861861
<< "' in C++ class '" << RESTC_CPP_TYPENAME(dataT)
862-
<< "' when serializing from JSON.";
862+
<< "' when serializing from JSON.");
863863

864864
if (!properties_.ignore_unknown_properties) {
865865
throw UnknownPropertyException(current_name_);
@@ -897,8 +897,8 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
897897
&& !is_map<dataT>::value
898898
>::type* = 0) {
899899

900-
RESTC_CPP_LOG_ERROR << RESTC_CPP_TYPENAME(dataT)
901-
<< " BAD SetValueOnMember: ";
900+
RESTC_CPP_LOG_ERROR_(RESTC_CPP_TYPENAME(dataT)
901+
<< " BAD SetValueOnMember: ");
902902

903903
assert(false);
904904
return true;
@@ -944,20 +944,20 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
944944
template<typename argT>
945945
bool SetValue(argT val) {
946946
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
947-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(data_t)
947+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(data_t)
948948
<< " SetValue: " << current_name_
949-
<< " State: " << to_string(state_);
949+
<< " State: " << to_string(state_));
950950
#endif
951951
if (state_ == State::IN_OBJECT) {
952952
return SetValueOnMember<data_t>(val);
953953
} else if (state_ == State::IN_ARRAY) {
954954
SetValueInArray<data_t>(val);
955955
return true;
956956
}
957-
RESTC_CPP_LOG_ERROR << RESTC_CPP_TYPENAME(data_t)
957+
RESTC_CPP_LOG_ERROR_(RESTC_CPP_TYPENAME(data_t)
958958
<< " SetValue: " << current_name_
959959
<< " State: " << to_string(state_)
960-
<< " Value type" << RESTC_CPP_TYPENAME(argT);
960+
<< " Value type" << RESTC_CPP_TYPENAME(argT));
961961

962962
assert(false && "Invalid state for setting a value");
963963
return true;
@@ -1005,9 +1005,9 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
10051005
bool DoStartObject() {
10061006
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
10071007
const bool i_am_a_map = is_map<data_t>::value;
1008-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(data_t)
1008+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(data_t)
10091009
<< " DoStartObject: " << current_name_
1010-
<< " i_am_a_map: " << i_am_a_map;
1010+
<< " i_am_a_map: " << i_am_a_map);
10111011
#endif
10121012
switch (state_) {
10131013

@@ -1027,7 +1027,7 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
10271027
recursed_to_->StartObject();
10281028
break;
10291029
case State::DONE:
1030-
RESTC_CPP_LOG_TRACE << "Re-using instance of RapidJsonDeserializer";
1030+
RESTC_CPP_LOG_TRACE_("Re-using instance of RapidJsonDeserializer");
10311031
state_ = State::IN_OBJECT;
10321032
if (bytes_) {
10331033
*bytes_ = properties_.GetMaxMemoryConsumption();
@@ -1050,16 +1050,16 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
10501050
current_name_ = properties_.name_mapping->to_native_name(name);
10511051
}
10521052
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1053-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(data_t)
1054-
<< " DoKey: " << current_name_;
1053+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(data_t)
1054+
<< " DoKey: " << current_name_);
10551055
#endif
10561056
return true;
10571057
}
10581058

10591059
bool DoEndObject(std::size_t memberCount) {
10601060
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1061-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(data_t)
1062-
<< " DoEndObject: " << current_name_;
1061+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(data_t)
1062+
<< " DoEndObject: " << current_name_);
10631063
#endif
10641064
current_name_.clear();
10651065

@@ -1085,8 +1085,8 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
10851085

10861086
bool DoStartArray() {
10871087
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1088-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(data_t)
1089-
<< " DoStartArray: " << current_name_;
1088+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(data_t)
1089+
<< " DoStartArray: " << current_name_);
10901090
#endif
10911091
switch (state_) {
10921092
case State::INIT:
@@ -1109,8 +1109,8 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
11091109

11101110
bool DoEndArray(std::size_t elementCount) {
11111111
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1112-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(data_t)
1113-
<< " DoEndArray: " << current_name_;
1112+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(data_t)
1113+
<< " DoEndArray: " << current_name_);
11141114
#endif
11151115
current_name_.clear();
11161116

@@ -1136,8 +1136,8 @@ class RapidJsonDeserializer : public RapidJsonDeserializerBase {
11361136

11371137
void OnChildIsDone() override {
11381138
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1139-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(data_t)
1140-
<< " OnChildIsDone";
1139+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(data_t)
1140+
<< " OnChildIsDone");
11411141
#endif
11421142
assert(state_ == State::RECURSED);
11431143
assert(!saved_state_.empty());
@@ -1310,8 +1310,8 @@ void do_serialize(const dataT& object, serializerT& serializer,
13101310
is_container<dataT>::value
13111311
>::type* = 0) {
13121312
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1313-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1314-
<< " StartArray: ";
1313+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1314+
<< " StartArray: ");
13151315
#endif
13161316
serializer.StartArray();
13171317

@@ -1323,8 +1323,8 @@ void do_serialize(const dataT& object, serializerT& serializer,
13231323
do_serialize<native_field_type_t>(v, serializer, properties);
13241324
}
13251325
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1326-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1327-
<< " EndArray: ";
1326+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1327+
<< " EndArray: ");
13281328
#endif
13291329
serializer.EndArray();
13301330
};
@@ -1339,8 +1339,8 @@ void do_serialize(const dataT& object, serializerT& serializer,
13391339
static const serialize_properties_t map_name_properties{false};
13401340

13411341
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1342-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1343-
<< " StartMap: ";
1342+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1343+
<< " StartMap: ");
13441344
#endif
13451345
serializer.StartObject();
13461346

@@ -1353,8 +1353,8 @@ void do_serialize(const dataT& object, serializerT& serializer,
13531353
do_serialize<native_field_type_t>(v.second, serializer, properties);
13541354
}
13551355
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1356-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1357-
<< " EndMap: ";
1356+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1357+
<< " EndMap: ");
13581358
#endif
13591359
serializer.EndObject();
13601360
};
@@ -1368,19 +1368,19 @@ void do_serialize(const dataT& object, serializerT& serializer,
13681368

13691369
serializer.StartObject();
13701370
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1371-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1372-
<< " StartObject: ";
1371+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1372+
<< " StartObject: ");
13731373
#endif
13741374
auto fn = [&](const char *name, auto& val) {
13751375
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1376-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1377-
<< " Key: " << name;
1376+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1377+
<< " Key: " << name);
13781378
#endif
13791379
if (properties.ignore_empty_fileds) {
13801380
if (is_empty_field(val)) {
13811381
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1382-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1383-
<< " ignoring empty field.";
1382+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1383+
<< " ignoring empty field.");
13841384
#endif
13851385
return;
13861386
}
@@ -1389,8 +1389,8 @@ void do_serialize(const dataT& object, serializerT& serializer,
13891389
if (properties.excluded_names
13901390
&& properties.is_excluded(name)) {
13911391
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1392-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1393-
<< " ignoring excluded field.";
1392+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1393+
<< " ignoring excluded field.");
13941394
#endif
13951395
return;
13961396
}
@@ -1411,8 +1411,8 @@ void do_serialize(const dataT& object, serializerT& serializer,
14111411
on_name_and_value<dataT, decltype(fn)> handler(fn);
14121412
handler.for_each_member(object);
14131413
#ifdef RESTC_CPP_LOG_JSON_SERIALIZATION
1414-
RESTC_CPP_LOG_TRACE << RESTC_CPP_TYPENAME(dataT)
1415-
<< " EndObject: ";
1414+
RESTC_CPP_LOG_TRACE_(RESTC_CPP_TYPENAME(dataT)
1415+
<< " EndObject: ");
14161416
#endif
14171417
serializer.EndObject();
14181418
};

include/restc-cpp/logging.h

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,47 @@
1919

2020
#include <boost/log/trivial.hpp>
2121

22-
#define RESTC_CPP_LOG_ERROR BOOST_LOG_TRIVIAL(error)
23-
#define RESTC_CPP_LOG_WARN BOOST_LOG_TRIVIAL(warning)
24-
#define RESTC_CPP_LOG_INFO BOOST_LOG_TRIVIAL(info)
25-
#define RESTC_CPP_LOG_DEBUG BOOST_LOG_TRIVIAL(debug)
26-
#define RESTC_CPP_LOG_TRACE BOOST_LOG_TRIVIAL(trace)
22+
#define RESTC_CPP_LOG_ERROR_(msg) BOOST_LOG_TRIVIAL(error) << msg
23+
#define RESTC_CPP_LOG_WARN_(msg) BOOST_LOG_TRIVIAL(warning) << msg
24+
#define RESTC_CPP_LOG_INFO_(msg) BOOST_LOG_TRIVIAL(info) << msg
25+
#define RESTC_CPP_LOG_DEBUG_(msg) BOOST_LOG_TRIVIAL(debug) << msg
26+
#define RESTC_CPP_LOG_TRACE_(msg) BOOST_LOG_TRIVIAL(trace) << msg
2727

2828

2929
#else
30-
// The user of the API framework must provide log macros
31-
#error "No log framework is selected"
30+
// The user of the API framework may provide log macros, or we disable logs
31+
32+
# ifdef RESTC_CPP_LOG_ERROR
33+
# define RESTC_CPP_LOG_ERROR_(msg) RESTC_CPP_LOG_ERROR << msg
34+
# else
35+
# define RESTC_CPP_LOG_ERROR_(msg)
36+
# endif
37+
38+
# ifdef RESTC_CPP_LOG_WARN
39+
# define RESTC_CPP_LOG_WARN_(msg) RESTC_CPP_LOG_WARN << msg
40+
# else
41+
# define RESTC_CPP_LOG_WARN_(msg)
42+
# endif
43+
44+
45+
# ifdef RESTC_CPP_LOG_DEBUG
46+
# define RESTC_CPP_LOG_DEBUG_(msg) RESTC_CPP_LOG_DEBUG << msg
47+
# else
48+
# define RESTC_CPP_LOG_DEBUG_(msg)
49+
# endif
50+
51+
52+
# ifdef RESTC_CPP_LOG_INFO
53+
# define RESTC_CPP_LOG_INFO_(msg) RESTC_CPP_LOG_INFO << msg
54+
# else
55+
# define RESTC_CPP_LOG_INFO_(msg)
56+
# endif
57+
58+
59+
# ifdef RESTC_CPP_LOG_TRACE
60+
# define RESTC_CPP_LOG_TRACE_(msg) RESTC_CPP_LOG_TRACE << msg
61+
# else
62+
# define RESTC_CPP_LOG_TRACE_(msg)
63+
# endif
64+
3265
#endif

0 commit comments

Comments
 (0)