| /* |
| * |
| * Copyright (c) 2006 The Apache Software Foundation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| #include "qpid/log/Options.h" |
| #include "qpid/log/SinkOptions.h" |
| #include "qpid/log/Statement.h" |
| #include "qpid/Options.h" |
| #include <map> |
| #include <string> |
| #include <algorithm> |
| |
| namespace qpid { |
| namespace log { |
| |
| using namespace std; |
| |
| Options::Options(const std::string& argv0_, const std::string& name_) : |
| qpid::Options(name_), |
| argv0(argv0_), |
| name(name_), |
| time(true), |
| level(true), |
| thread(false), |
| source(false), |
| function(false), |
| hiresTs(false), |
| trace(false), |
| sinkOptions (SinkOptions::create(argv0_)) |
| { |
| selectors.push_back("notice+"); |
| |
| ostringstream levels; |
| levels << LevelTraits::name(Level(0)); |
| for (int i = 1; i < LevelTraits::COUNT; ++i) |
| levels << " " << LevelTraits::name(Level(i)); |
| |
| addOptions() |
| ("trace,t", optValue(trace), "Enables all logging" ) |
| ("log-enable", optValue(selectors, "RULE"), |
| ("Enables logging for selected levels and components. " |
| "RULE is in the form 'LEVEL[+][:PATTERN]' " |
| "Levels are one of: \n\t "+levels.str()+"\n" |
| "For example:\n" |
| "\t'--log-enable warning+' " |
| "logs all warning, error and critical messages.\n" |
| "\t'--log-enable debug:framing' " |
| "logs debug messages from the framing namespace. " |
| "This option can be used multiple times").c_str()) |
| ("log-time", optValue(time, "yes|no"), "Include time in log messages") |
| ("log-level", optValue(level,"yes|no"), "Include severity level in log messages") |
| ("log-source", optValue(source,"yes|no"), "Include source file:line in log messages") |
| ("log-thread", optValue(thread,"yes|no"), "Include thread ID in log messages") |
| ("log-function", optValue(function,"yes|no"), "Include function signature in log messages") |
| ("log-hires-timestamp", optValue(hiresTs,"yes|no"), "Use hi-resolution timestamps in log messages") |
| ("log-prefix", optValue(prefix,"STRING"), "Prefix to append to all log messages") |
| ; |
| add(*sinkOptions); |
| } |
| |
| Options::Options(const Options &o) : |
| qpid::Options(o.name), |
| argv0(o.argv0), |
| name(o.name), |
| selectors(o.selectors), |
| time(o.time), |
| level(o.level), |
| thread(o.thread), |
| source(o.source), |
| function(o.function), |
| hiresTs(o.hiresTs), |
| trace(o.trace), |
| prefix(o.prefix), |
| sinkOptions (SinkOptions::create(o.argv0)) |
| { |
| *sinkOptions = *o.sinkOptions; |
| } |
| |
| Options& Options::operator=(const Options& x) { |
| if (this != &x) { |
| argv0 = x.argv0; |
| name = x.name; |
| selectors = x.selectors; |
| time = x.time; |
| level= x.level; |
| thread = x.thread; |
| source = x.source; |
| function = x.function; |
| hiresTs = x.hiresTs; |
| trace = x.trace; |
| prefix = x.prefix; |
| *sinkOptions = *x.sinkOptions; |
| } |
| return *this; |
| } |
| |
| }} // namespace qpid::log |