Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
Kea
Commits
c9d69c54
Commit
c9d69c54
authored
May 27, 2011
by
Jelte Jansen
Browse files
[trac555] added conversionfunctions from str to the different enums
parent
fd99c692
Changes
12
Hide whitespace changes
Inline
Side-by-side
src/lib/log/Makefile.am
View file @
c9d69c54
...
...
@@ -16,7 +16,7 @@ liblog_la_SOURCES += logger_level.h
liblog_la_SOURCES
+=
logger_level_impl.cc logger_level_impl.h
liblog_la_SOURCES
+=
logger_manager.cc logger_manager.h
liblog_la_SOURCES
+=
logger_manager_impl.cc logger_manager_impl.h
liblog_la_SOURCES
+=
logger_specification.h
liblog_la_SOURCES
+=
logger_specification.cc
logger_specification.h
liblog_la_SOURCES
+=
logger_support.cc logger_support.h
liblog_la_SOURCES
+=
macros.h
liblog_la_SOURCES
+=
messagedef.cc messagedef.h
...
...
@@ -25,7 +25,7 @@ liblog_la_SOURCES += message_exception.h
liblog_la_SOURCES
+=
message_initializer.cc message_initializer.h
liblog_la_SOURCES
+=
message_reader.cc message_reader.h
liblog_la_SOURCES
+=
message_types.h
liblog_la_SOURCES
+=
output_option.h
liblog_la_SOURCES
+=
output_option.cc
output_option.h
liblog_la_SOURCES
+=
root_logger_name.cc root_logger_name.h
EXTRA_DIST
=
README
...
...
src/lib/log/logger_specification.cc
0 → 100644
View file @
c9d69c54
// Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE
#include
<log/logger_specification.h>
#include
<log/macros.h>
#include
<log/messagedef.h>
#include
<boost/algorithm/string.hpp>
namespace
isc
{
namespace
log
{
isc
::
log
::
Severity
getSeverity
(
const
std
::
string
&
sev_str
)
{
if
(
boost
::
iequals
(
sev_str
,
"DEBUG"
))
{
return
isc
::
log
::
DEBUG
;
}
else
if
(
boost
::
iequals
(
sev_str
,
"INFO"
))
{
return
isc
::
log
::
INFO
;
}
else
if
(
boost
::
iequals
(
sev_str
,
"WARN"
))
{
return
isc
::
log
::
WARN
;
}
else
if
(
boost
::
iequals
(
sev_str
,
"ERROR"
))
{
return
isc
::
log
::
ERROR
;
}
else
if
(
boost
::
iequals
(
sev_str
,
"FATAL"
))
{
return
isc
::
log
::
FATAL
;
}
else
{
Logger
logger
(
"log"
);
LOG_ERROR
(
logger
,
MSG_BADSEVERITY
).
arg
(
sev_str
);
return
isc
::
log
::
INFO
;
}
}
}
// namespace log
}
// namespace isc
src/lib/log/logger_specification.h
View file @
c9d69c54
...
...
@@ -150,6 +150,18 @@ private:
std
::
vector
<
OutputOption
>
options_
;
///< Logger options
};
/// \brief Returns the isc::log::Severity value represented by the
/// given string
///
/// If the string is not recognized, returns isc::log::DEBUG.
/// This must be one of the strings "DEBUG", "INFO", "WARN", "ERROR",
/// "FATAL". (Must be upper case and must not contain leading or
/// trailing spaces.)
///
/// \param sev_str The string representing severity value
/// \return The severity
isc
::
log
::
Severity
getSeverity
(
const
std
::
string
&
sev_str
);
}
// namespace log
}
// namespace isc
...
...
src/lib/log/logger_support.cc
View file @
c9d69c54
...
...
@@ -65,24 +65,10 @@ void initLogger() {
// B10_LOGGER_SEVERITY, and can be one of "DEBUG", "INFO", "WARN", "ERROR"
// of "FATAL". Note that the string must be in upper case with no leading
// of trailing blanks.
isc
::
log
::
Severity
severity
=
isc
::
log
::
DEBUG
;
isc
::
log
::
Severity
severity
=
isc
::
log
::
INFO
;
const
char
*
sev_char
=
getenv
(
"B10_LOGGER_SEVERITY"
);
if
(
sev_char
)
{
string
sev_string
(
sev_char
);
if
(
sev_string
==
"DEBUG"
)
{
severity
=
isc
::
log
::
DEBUG
;
}
else
if
(
sev_string
==
"INFO"
)
{
severity
=
isc
::
log
::
INFO
;
}
else
if
(
sev_string
==
"WARN"
)
{
severity
=
isc
::
log
::
WARN
;
}
else
if
(
sev_string
==
"ERROR"
)
{
severity
=
isc
::
log
::
ERROR
;
}
else
if
(
sev_string
==
"FATAL"
)
{
severity
=
isc
::
log
::
FATAL
;
}
else
{
std
::
cerr
<<
"**ERROR** unrecognised logger severity of '"
<<
sev_string
<<
"' - default severity will be used
\n
"
;
}
severity
=
isc
::
log
::
getSeverity
(
sev_char
);
}
// If the severity is debug, get the debug level (environment variable
...
...
src/lib/log/messagedef.cc
View file @
c9d69c54
// File created from messagedef.mes on
Mon
May
9 13:52:54
2011
// File created from messagedef.mes on
Fri
May
27 12:15:25
2011
#include
<cstddef>
#include
<log/message_types.h>
...
...
@@ -7,6 +7,9 @@
namespace
isc
{
namespace
log
{
extern
const
isc
::
log
::
MessageID
MSG_BADDESTINATION
=
"MSG_BADDESTINATION"
;
extern
const
isc
::
log
::
MessageID
MSG_BADSEVERITY
=
"MSG_BADSEVERITY"
;
extern
const
isc
::
log
::
MessageID
MSG_BADSTREAM
=
"MSG_BADSTREAM"
;
extern
const
isc
::
log
::
MessageID
MSG_DUPLNS
=
"MSG_DUPLNS"
;
extern
const
isc
::
log
::
MessageID
MSG_DUPMSGID
=
"MSG_DUPMSGID"
;
extern
const
isc
::
log
::
MessageID
MSG_IDNOTFND
=
"MSG_IDNOTFND"
;
...
...
@@ -31,6 +34,9 @@ extern const isc::log::MessageID MSG_WRITERR = "MSG_WRITERR";
namespace
{
const
char
*
values
[]
=
{
"MSG_BADDESTINATION"
,
"Unrecognized log destination: %1"
,
"MSG_BADSEVERITY"
,
"Unrecognized log severity: %1"
,
"MSG_BADSTREAM"
,
"Bad log console output stream: %1"
,
"MSG_DUPLNS"
,
"line %1: duplicate $NAMESPACE directive found"
,
"MSG_DUPMSGID"
,
"duplicate message ID (%1) in compiled code"
,
"MSG_IDNOTFND"
,
"could not replace message text for '%1': no such message"
,
...
...
src/lib/log/messagedef.h
View file @
c9d69c54
// File created from messagedef.mes on
Mon
May
9 13:52:54
2011
// File created from messagedef.mes on
Fri
May
27 12:15:25
2011
#ifndef __MESSAGEDEF_H
#define __MESSAGEDEF_H
...
...
@@ -8,6 +8,9 @@
namespace
isc
{
namespace
log
{
extern
const
isc
::
log
::
MessageID
MSG_BADDESTINATION
;
extern
const
isc
::
log
::
MessageID
MSG_BADSEVERITY
;
extern
const
isc
::
log
::
MessageID
MSG_BADSTREAM
;
extern
const
isc
::
log
::
MessageID
MSG_DUPLNS
;
extern
const
isc
::
log
::
MessageID
MSG_DUPMSGID
;
extern
const
isc
::
log
::
MessageID
MSG_IDNOTFND
;
...
...
src/lib/log/messagedef.mes
View file @
c9d69c54
...
...
@@ -117,3 +117,15 @@ the named output file.
% UNRECDIR line %1: unrecognised directive '%2'
A line starting with a dollar symbol was found, but the first word on the line
(shown in the message) was not a recognised message compiler directive.
% BADSEVERITY Unrecognized log severity: %1
A logger severity value was given that was not recognized. The severity
should be one of "DEBUG", "INFO", "WARN", "ERROR", or "FATAL".
% BADDESTINATION Unrecognized log destination: %1
A logger destination value was given that was not recognized. The
destination should be one of "console", "file", or "syslog".
% BADSTREAM Bad log console output stream: %1
A log console output stream was given that was not recognized. The
output stream should be one of "stdout", or "stderr"
src/lib/log/output_option.cc
0 → 100644
View file @
c9d69c54
// Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
#include
<string>
#include
<log/output_option.h>
#include
<log/macros.h>
#include
<log/messagedef.h>
#include
<boost/algorithm/string.hpp>
namespace
isc
{
namespace
log
{
OutputOption
::
Destination
getDestination
(
const
std
::
string
&
dest_str
)
{
if
(
boost
::
iequals
(
dest_str
,
"console"
))
{
return
OutputOption
::
DEST_CONSOLE
;
}
else
if
(
boost
::
iequals
(
dest_str
,
"file"
))
{
return
OutputOption
::
DEST_FILE
;
}
else
if
(
boost
::
iequals
(
dest_str
,
"syslog"
))
{
return
OutputOption
::
DEST_SYSLOG
;
}
else
{
Logger
logger
(
"log"
);
LOG_ERROR
(
logger
,
MSG_BADDESTINATION
).
arg
(
dest_str
);
return
OutputOption
::
DEST_CONSOLE
;
}
}
OutputOption
::
Stream
getStream
(
const
std
::
string
&
stream_str
)
{
if
(
boost
::
iequals
(
stream_str
,
"stderr"
))
{
return
OutputOption
::
STR_STDERR
;
}
else
if
(
boost
::
iequals
(
stream_str
,
"stdout"
))
{
return
OutputOption
::
STR_STDOUT
;
}
else
{
Logger
logger
(
"log"
);
LOG_ERROR
(
logger
,
MSG_BADSTREAM
).
arg
(
stream_str
);
return
OutputOption
::
STR_STDOUT
;
}
}
}
// namespace log
}
// namespace isc
src/lib/log/output_option.h
View file @
c9d69c54
...
...
@@ -75,6 +75,10 @@ struct OutputOption {
int
maxver
;
///< Maximum versions (none if <= 0)
};
OutputOption
::
Destination
getDestination
(
const
std
::
string
&
dest_str
);
OutputOption
::
Stream
getStream
(
const
std
::
string
&
stream_str
);
}
// namespace log
}
// namespace isc
...
...
src/lib/log/tests/logger_specification_unittest.cc
View file @
c9d69c54
...
...
@@ -104,3 +104,26 @@ TEST_F(LoggerSpecificationTest, AddOption) {
++
i
;
EXPECT_TRUE
(
i
==
spec
.
end
());
}
TEST
(
LoggerSpecification
,
getSeverity
)
{
EXPECT_EQ
(
DEBUG
,
getSeverity
(
"DEBUG"
));
EXPECT_EQ
(
DEBUG
,
getSeverity
(
"debug"
));
EXPECT_EQ
(
DEBUG
,
getSeverity
(
"DeBuG"
));
EXPECT_EQ
(
INFO
,
getSeverity
(
"INFO"
));
EXPECT_EQ
(
INFO
,
getSeverity
(
"info"
));
EXPECT_EQ
(
INFO
,
getSeverity
(
"iNfO"
));
EXPECT_EQ
(
WARN
,
getSeverity
(
"WARN"
));
EXPECT_EQ
(
WARN
,
getSeverity
(
"warn"
));
EXPECT_EQ
(
WARN
,
getSeverity
(
"wARn"
));
EXPECT_EQ
(
ERROR
,
getSeverity
(
"ERROR"
));
EXPECT_EQ
(
ERROR
,
getSeverity
(
"error"
));
EXPECT_EQ
(
ERROR
,
getSeverity
(
"ERRoR"
));
EXPECT_EQ
(
FATAL
,
getSeverity
(
"FATAL"
));
EXPECT_EQ
(
FATAL
,
getSeverity
(
"fatal"
));
EXPECT_EQ
(
FATAL
,
getSeverity
(
"FAtaL"
));
// bad values should default to stdout
EXPECT_EQ
(
INFO
,
getSeverity
(
"some bad value"
));
EXPECT_EQ
(
INFO
,
getSeverity
(
""
));
}
src/lib/log/tests/output_option_unittest.cc
View file @
c9d69c54
...
...
@@ -45,3 +45,32 @@ TEST_F(OutputOptionTest, Initialization) {
EXPECT_EQ
(
0
,
option
.
maxsize
);
EXPECT_EQ
(
0
,
option
.
maxver
);
}
TEST
(
OutputOption
,
getDestination
)
{
EXPECT_EQ
(
OutputOption
::
DEST_CONSOLE
,
getDestination
(
"console"
));
EXPECT_EQ
(
OutputOption
::
DEST_CONSOLE
,
getDestination
(
"CONSOLE"
));
EXPECT_EQ
(
OutputOption
::
DEST_CONSOLE
,
getDestination
(
"CoNSoLE"
));
EXPECT_EQ
(
OutputOption
::
DEST_FILE
,
getDestination
(
"file"
));
EXPECT_EQ
(
OutputOption
::
DEST_FILE
,
getDestination
(
"FILE"
));
EXPECT_EQ
(
OutputOption
::
DEST_FILE
,
getDestination
(
"fIlE"
));
EXPECT_EQ
(
OutputOption
::
DEST_SYSLOG
,
getDestination
(
"syslog"
));
EXPECT_EQ
(
OutputOption
::
DEST_SYSLOG
,
getDestination
(
"SYSLOG"
));
EXPECT_EQ
(
OutputOption
::
DEST_SYSLOG
,
getDestination
(
"SYSlog"
));
// bad values should default to DEST_CONSOLE
EXPECT_EQ
(
OutputOption
::
DEST_CONSOLE
,
getDestination
(
"SOME_BAD_VALUE"
));
}
TEST
(
OutputOption
,
getStream
)
{
EXPECT_EQ
(
OutputOption
::
STR_STDOUT
,
getStream
(
"stdout"
));
EXPECT_EQ
(
OutputOption
::
STR_STDOUT
,
getStream
(
"STDOUT"
));
EXPECT_EQ
(
OutputOption
::
STR_STDOUT
,
getStream
(
"STdouT"
));
EXPECT_EQ
(
OutputOption
::
STR_STDERR
,
getStream
(
"stderr"
));
EXPECT_EQ
(
OutputOption
::
STR_STDERR
,
getStream
(
"STDERR"
));
EXPECT_EQ
(
OutputOption
::
STR_STDERR
,
getStream
(
"StDeRR"
));
// bad values should default to stdout
EXPECT_EQ
(
OutputOption
::
STR_STDOUT
,
getStream
(
"some bad value"
));
EXPECT_EQ
(
OutputOption
::
STR_STDOUT
,
getStream
(
""
));
}
src/lib/log/tests/run_unittests.cc
View file @
c9d69c54
...
...
@@ -14,8 +14,12 @@
#include
<gtest/gtest.h>
#include
<log/logger_support.h>
int
main
(
int
argc
,
char
*
argv
[])
{
::
testing
::
InitGoogleTest
(
&
argc
,
argv
);
isc
::
log
::
initLogger
();
return
(
RUN_ALL_TESTS
());
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment