Skip to content

Commit 25a266f

Browse files
committed
added InfoLoggerMacros
1 parent 41b4030 commit 25a266f

File tree

3 files changed

+169
-0
lines changed

3 files changed

+169
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
// Copyright CERN and copyright holders of ALICE O2. This software is
2+
// distributed under the terms of the GNU General Public License v3 (GPL
3+
// Version 3), copied verbatim in the file "COPYING".
4+
//
5+
// See http://alice-o2.web.cern.ch/license for full licensing information.
6+
//
7+
// In applying this license CERN does not waive the privileges and immunities
8+
// granted to it by virtue of its status as an Intergovernmental Organization
9+
// or submit itself to any jurisdiction.
10+
11+
/// \file InfoLoggerMacros.hxx
12+
/// \brief Extensive preprocessor macros definitions for compact expression
13+
/// of log messages.
14+
///
15+
/// \author Sylvain Chapeland, CERN
16+
///
17+
18+
#ifndef INFOLOGGER_INFOLOGGERMACROS_HXX
19+
#define INFOLOGGER_INFOLOGGERMACROS_HXX
20+
21+
#include <InfoLogger/InfoLogger.hxx>
22+
23+
// For readability, using CamelCase convention for the macros' names
24+
// Each macro evaluates to the definition of a static InfoLoggerMessageOption
25+
// that can be used directly in a call to InfoLogger::log() function,
26+
// setting all the relevant options.
27+
// e.g. myLogger.log(Log_Info_Ops,"Hello")
28+
//
29+
// One macro is generated for each combination of Severity and Level,
30+
// with and without error code.
31+
//
32+
// The following macros are defined:
33+
//
34+
// LogInfoOps
35+
// LogInfoSupport
36+
// LogInfoDevel
37+
// LogInfoTrace
38+
// LogErrorOps
39+
// LogErrorSupport
40+
// LogErrorDevel
41+
// LogErrorTrace
42+
// LogWarningOps
43+
// LogWarningSupport
44+
// LogWarningDevel
45+
// LogWarningTrace
46+
// LogFatalOps
47+
// LogFatalSupport
48+
// LogFatalDevel
49+
// LogFatalTrace
50+
// LogDebugOps
51+
// LogDebugSupport
52+
// LogDebugDevel
53+
// LogDebugTrace
54+
//
55+
// LogInfoOps_(errno)
56+
// LogInfoSupport_(errno)
57+
// LogInfoDevel_(errno)
58+
// LogInfoTrace_(errno)
59+
// LogErrorOps_(errno)
60+
// LogErrorSupport_(errno)
61+
// LogErrorDevel_(errno)
62+
// LogErrorTrace_(errno)
63+
// LogWarningOps_(errno)
64+
// LogWarningSupport_(errno)
65+
// LogWarningDevel_(errno)
66+
// LogWarningTrace_(errno)
67+
// LogFatalOps_(errno)
68+
// LogFatalSupport_(errno)
69+
// LogFatalDevel_(errno)
70+
// LogFatalTrace_(errno)
71+
// LogDebugOps_(errno)
72+
// LogDebugSupport_(errno)
73+
// LogDebugDevel_(errno)
74+
// LogDebugTrace_(errno)
75+
76+
77+
#define LogInfoOps AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Ops, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
78+
#define LogInfoOps_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Ops, errno, __FILE__, __LINE__ }
79+
#define LogInfoSupport AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Support, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
80+
#define LogInfoSupport_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Support, errno, __FILE__, __LINE__ }
81+
#define LogInfoDevel AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Devel, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
82+
#define LogInfoDevel_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Devel, errno, __FILE__, __LINE__ }
83+
#define LogInfoTrace AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Trace, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
84+
#define LogInfoTrace_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Info, AliceO2::InfoLogger::InfoLogger::Level::Trace, errno, __FILE__, __LINE__ }
85+
86+
87+
#define LogErrorOps AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Ops, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
88+
#define LogErrorOps_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Ops, errno, __FILE__, __LINE__ }
89+
#define LogErrorSupport AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Support, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
90+
#define LogErrorSupport_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Support, errno, __FILE__, __LINE__ }
91+
#define LogErrorDevel AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Devel, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
92+
#define LogErrorDevel_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Devel, errno, __FILE__, __LINE__ }
93+
#define LogErrorTrace AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Trace, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
94+
#define LogErrorTrace_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Error, AliceO2::InfoLogger::InfoLogger::Level::Trace, errno, __FILE__, __LINE__ }
95+
96+
97+
#define LogWarningOps AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Ops, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
98+
#define LogWarningOps_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Ops, errno, __FILE__, __LINE__ }
99+
#define LogWarningSupport AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Support, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
100+
#define LogWarningSupport_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Support, errno, __FILE__, __LINE__ }
101+
#define LogWarningDevel AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Devel, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
102+
#define LogWarningDevel_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Devel, errno, __FILE__, __LINE__ }
103+
#define LogWarningTrace AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Trace, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
104+
#define LogWarningTrace_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Warning, AliceO2::InfoLogger::InfoLogger::Level::Trace, errno, __FILE__, __LINE__ }
105+
106+
107+
#define LogFatalOps AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Ops, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
108+
#define LogFatalOps_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Ops, errno, __FILE__, __LINE__ }
109+
#define LogFatalSupport AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Support, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
110+
#define LogFatalSupport_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Support, errno, __FILE__, __LINE__ }
111+
#define LogFatalDevel AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Devel, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
112+
#define LogFatalDevel_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Devel, errno, __FILE__, __LINE__ }
113+
#define LogFatalTrace AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Trace, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
114+
#define LogFatalTrace_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Fatal, AliceO2::InfoLogger::InfoLogger::Level::Trace, errno, __FILE__, __LINE__ }
115+
116+
117+
#define LogDebugOps AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Ops, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
118+
#define LogDebugOps_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Ops, errno, __FILE__, __LINE__ }
119+
#define LogDebugSupport AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Support, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
120+
#define LogDebugSupport_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Support, errno, __FILE__, __LINE__ }
121+
#define LogDebugDevel AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Devel, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
122+
#define LogDebugDevel_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Devel, errno, __FILE__, __LINE__ }
123+
#define LogDebugTrace AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Trace, AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }
124+
#define LogDebugTrace_(errno) AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption { AliceO2::InfoLogger::InfoLogger::Severity::Debug, AliceO2::InfoLogger::InfoLogger::Level::Trace, errno, __FILE__, __LINE__ }
125+
126+
127+
#endif //INFOLOGGER_INFOLOGGERMACROS_HXX
128+
129+

src/infoLoggerGenerateMacros.tcl

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/tclsh
2+
3+
# generate macros for compact writing of infologger expressions
4+
5+
6+
# namespace
7+
set ns "AliceO2::InfoLogger::"
8+
9+
# severity
10+
set lSeverity {Info Error Warning Fatal Debug}
11+
12+
# level
13+
set lLevel {Ops Support Devel Trace}
14+
15+
16+
foreach s $lSeverity {
17+
foreach l $lLevel {
18+
puts "// Log${s}${l}"
19+
}
20+
}
21+
puts "//"
22+
foreach s $lSeverity {
23+
foreach l $lLevel {
24+
puts "// Log${s}${l}_(errno)"
25+
}
26+
}
27+
28+
29+
foreach s $lSeverity {
30+
puts "\n"
31+
foreach l $lLevel {
32+
# one without error code
33+
puts "#define Log${s}${l} ${ns}InfoLogger::InfoLoggerMessageOption { ${ns}InfoLogger::Severity::${s}, ${ns}InfoLogger::Level::${l}, ${ns}InfoLogger::undefinedMessageOption.errorCode, __FILE__, __LINE__ }"
34+
# one with error code
35+
puts "#define Log${s}${l}_(errno) ${ns}InfoLogger::InfoLoggerMessageOption { ${ns}InfoLogger::Severity::${s}, ${ns}InfoLogger::Level::${l}, errno, __FILE__, __LINE__ }"
36+
}
37+
}

test/testInfoLogger.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <InfoLogger/InfoLogger.hxx>
1717
#include <boost/format.hpp>
1818
#include <InfoLoggerErrorCodes.h>
19+
#include <InfoLogger/InfoLoggerMacros.hxx>
1920

2021
using namespace AliceO2::InfoLogger;
2122

@@ -55,5 +56,7 @@ int main()
5556
theLog << LOGINFO(10) << "infoLogger message test with source code info, level 10" << InfoLogger::endm;
5657
theLog << LOGERROR(10, 999) << "infoLogger error message test with source code info, level 10 errcode 999" << InfoLogger::endm;
5758

59+
theLog.log(LogInfoDevel, "Test message with InfoLoggerMessageOption macro");
60+
5861
return 0;
5962
}

0 commit comments

Comments
 (0)