blob: 935804b0e420d676e511c654e3543de61efc3673 [file] [log] [blame]
#ifndef QPID_LOG_SINKOPTIONS_H
#define QPID_LOG_SINKOPTIONS_H
/*
*
* 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/Options.h"
#include <string>
namespace qpid {
namespace log {
class Logger;
/**
* Logging sink options.
*
* Most logging sink options will be platform-specific, even if some are
* duplicated. The range of platforms to which this code may be ported
* can't be assumed to all have C++ iostreams or files. Thus, this class
* is primarily for implementing in a platform-specific way.
*/
struct QPID_COMMON_CLASS_EXTERN SinkOptions : public qpid::Options {
// Create a platform's SinkOptions. Pass argv0 as the program name,
// useful for syslog-type logging.
static SinkOptions *create(const std::string& argv0=std::string());
SinkOptions(const std::string& name="Logging sink options")
: qpid::Options(name)
{}
virtual ~SinkOptions() {}
virtual SinkOptions& operator=(const SinkOptions&) = 0;
// This allows the caller to indicate that there's no normal outputs
// available. For example, when running as a daemon. In these cases, the
// platform's "syslog"-type output should replace the default stderr
// unless some other sink has been selected.
virtual void detached(void) = 0;
// The Logger acting on these options calls setup() to request any
// Sinks be set up and fed back to the logger.
virtual void setup(Logger *logger) = 0;
};
}} // namespace qpid::log
#endif /*!QPID_LOG_OPTIONS_H*/