NASA Astrobee Robot Software
0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
logger.h
Go to the documentation of this file.
1
/* Copyright (c) 2017, United States Government, as represented by the
2
* Administrator of the National Aeronautics and Space Administration.
3
*
4
* All rights reserved.
5
*
6
* The Astrobee platform is licensed under the Apache License, Version 2.0
7
* (the "License"); you may not use this file except in compliance with the
8
* License. You may obtain a copy of the License at
9
*
10
* http://www.apache.org/licenses/LICENSE-2.0
11
*
12
* Unless required by applicable law or agreed to in writing, software
13
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
* License for the specific language governing permissions and limitations
16
* under the License.
17
*/
18
19
#ifndef LOCALIZATION_COMMON_LOGGER_H_
20
#define LOCALIZATION_COMMON_LOGGER_H_
21
22
// Needed for ros include
23
#include <
ff_common/eigen_vectors.h
>
24
25
#include <ros/console.h>
26
27
#include <glog/logging.h>
28
29
#include <sstream>
30
#include <string>
31
32
// Select logger here
33
// TODO(rsoussan): Add compile definition for this?
34
#define USE_ROS_LOGGING
35
// #define USE_GLOG_LOGGING
36
37
#ifdef USE_ROS_LOGGING
38
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
39
40
// clang-format off
41
#define LogInfo(msg) \
42
do { \
43
std::stringstream ss; \
44
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
45
ROS_INFO_STREAM(ss.str()); \
46
} while (0)
47
48
#define LogWarning(msg) \
49
do { \
50
std::stringstream ss; \
51
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
52
ROS_WARN_STREAM(ss.str()); \
53
} while (0)
54
55
#define LogError(msg) \
56
do { \
57
std::stringstream ss; \
58
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
59
ROS_ERROR_STREAM(ss.str()); \
60
} while (0)
61
62
#define LogFatal(msg) \
63
do { \
64
std::stringstream ss; \
65
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
66
ROS_FATAL_STREAM(ss.str()); \
67
} while (0)
68
69
#define LogDebug(msg) \
70
do { \
71
std::stringstream ss; \
72
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
73
ROS_DEBUG_STREAM(ss.str()); \
74
} while (0)
75
76
#define LogInfoEveryN(n, msg) \
77
do { \
78
static int count = 0; \
79
++count; \
80
if (count % n == 0) { \
81
std::stringstream ss; \
82
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
83
ROS_INFO_STREAM(ss.str()); \
84
} \
85
} while (0)
86
87
#define LogWarningEveryN(n, msg) \
88
do { \
89
static int count = 0; \
90
++count; \
91
if (count % n == 0) { \
92
std::stringstream ss; \
93
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
94
ROS_WARN_STREAM(ss.str()); \
95
} \
96
} while (0)
97
98
#define LogErrorEveryN(n, msg) \
99
do { \
100
static int count = 0; \
101
++count; \
102
if (count % n == 0) { \
103
std::stringstream ss; \
104
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
105
ROS_ERROR_STREAM(ss.str()); \
106
} \
107
} while (0)
108
109
#define LogDebugEveryN(n, msg) \
110
do { \
111
static int count = 0; \
112
++count; \
113
if (count % n == 0) { \
114
std::stringstream ss; \
115
ss << __FILENAME__ << ":" << __LINE__ << ": " << msg << std::endl; \
116
ROS_DEBUG_STREAM(ss.str()); \
117
} \
118
} while (0)
119
120
#elif defined(USE_GLOG_LOGGING)
121
#define LogInfo(msg) \
122
do { \
123
LOG(INFO) << msg; \
124
} while (0)
125
#define LogWarning(msg) \
126
do { \
127
LOG(WARNING) << msg; \
128
} while (0)
129
130
#define LogError(msg) \
131
do { \
132
LOG(ERROR) << msg; \
133
} while (0)
134
135
#define LogFatal(msg) \
136
do { \
137
LOG(FATAL) << msg; \
138
} while (0)
139
140
#define LogDebug(msg) \
141
do { \
142
VLOG(2) << msg; \
143
} while (0)
144
145
#define LogInfoEveryN(n, msg) \
146
do { \
147
LOG_EVERY_N(INFO, n) << msg; \
148
} while (0)
149
150
#define LogWarningEveryN(n, msg) \
151
do { \
152
LOG_EVERY_N(WARNING, n) << msg; \
153
} while (0)
154
155
#define LogErrorEveryN(n, msg) \
156
do { \
157
LOG_EVERY_N(ERROR, n) << msg; \
158
} while (0)
159
160
#define LogDebugEveryN(n, msg) \
161
do { \
162
DLOG_EVERY_N(INFO, n) << msg; \
163
} while (0)
164
165
#endif
166
// clang-format on
167
#endif // LOCALIZATION_COMMON_LOGGER_H_
eigen_vectors.h