mirror of
				https://github.com/pocoproject/poco.git
				synced 2025-11-04 04:09:57 +01:00 
			
		
		
		
	fix: remove executable flag and change back to 100644 (was 100755) Signed-off-by: Roger Meier <r.meier@siemens.com>
		
			
				
	
	
		
			190 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//
 | 
						|
// ConsoleChannel.h
 | 
						|
//
 | 
						|
// $Id: //poco/1.4/Foundation/include/Poco/ConsoleChannel.h#2 $
 | 
						|
//
 | 
						|
// Library: Foundation
 | 
						|
// Package: Logging
 | 
						|
// Module:  ConsoleChannel
 | 
						|
//
 | 
						|
// Definition of the ConsoleChannel class.
 | 
						|
//
 | 
						|
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
 | 
						|
// and Contributors.
 | 
						|
//
 | 
						|
// SPDX-License-Identifier:	BSL-1.0
 | 
						|
//
 | 
						|
 | 
						|
 | 
						|
#ifndef Foundation_ConsoleChannel_INCLUDED
 | 
						|
#define Foundation_ConsoleChannel_INCLUDED
 | 
						|
 | 
						|
 | 
						|
#include "Poco/Foundation.h"
 | 
						|
#include "Poco/Channel.h"
 | 
						|
#include "Poco/Mutex.h"
 | 
						|
#include <ostream>
 | 
						|
 | 
						|
 | 
						|
namespace Poco {
 | 
						|
 | 
						|
 | 
						|
class Foundation_API ConsoleChannel: public Channel
 | 
						|
	/// A channel that writes to an ostream.
 | 
						|
	///
 | 
						|
	/// Only the message's text is written, followed
 | 
						|
	/// by a newline.
 | 
						|
	///
 | 
						|
	/// Chain this channel to a FormattingChannel with an
 | 
						|
	/// appropriate Formatter to control what is contained 
 | 
						|
	/// in the text.
 | 
						|
	///
 | 
						|
	/// Similar to StreamChannel, except that a static
 | 
						|
	/// mutex is used to protect against multiple
 | 
						|
	/// console channels concurrently writing to the
 | 
						|
	/// same stream.
 | 
						|
{
 | 
						|
public:
 | 
						|
	ConsoleChannel();
 | 
						|
		/// Creates the channel and attaches std::clog.
 | 
						|
		
 | 
						|
	ConsoleChannel(std::ostream& str);
 | 
						|
		/// Creates the channel using the given stream.
 | 
						|
 | 
						|
	void log(const Message& msg);
 | 
						|
		/// Logs the given message to the channel's stream.
 | 
						|
		
 | 
						|
protected:
 | 
						|
	~ConsoleChannel();
 | 
						|
 | 
						|
private:
 | 
						|
	std::ostream& _str;
 | 
						|
	static FastMutex _mutex;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class Foundation_API ColorConsoleChannel: public Channel
 | 
						|
	/// A channel that writes to an ostream.
 | 
						|
	///
 | 
						|
	/// Only the message's text is written, followed
 | 
						|
	/// by a newline.
 | 
						|
	///
 | 
						|
	/// Messages can be colored depending on priority.
 | 
						|
	/// The console device must support ANSI escape codes
 | 
						|
	/// in order to display colored messages.
 | 
						|
	///
 | 
						|
	/// To enable message coloring, set the "enableColors"
 | 
						|
	/// property to true (default). Furthermore, colors can be
 | 
						|
	/// configured by setting the following properties
 | 
						|
	/// (default values are given in parenthesis):
 | 
						|
	/// 
 | 
						|
	///   * traceColor (gray)
 | 
						|
	///   * debugColor (gray)
 | 
						|
	///   * informationColor (default)
 | 
						|
	///   * noticeColor (default)
 | 
						|
	///   * warningColor (yellow)
 | 
						|
	///   * errorColor (lightRed)
 | 
						|
	///   * criticalColor (lightRed)
 | 
						|
	///   * fatalColor (lightRed)
 | 
						|
	///
 | 
						|
	/// The following color values are supported:
 | 
						|
	/// 
 | 
						|
	///   * default
 | 
						|
	///   * black
 | 
						|
	///   * red
 | 
						|
	///   * green
 | 
						|
	///   * brown
 | 
						|
	///   * blue
 | 
						|
	///   * magenta
 | 
						|
	///   * cyan
 | 
						|
	///   * gray
 | 
						|
	///   * darkgray
 | 
						|
	///   * lightRed
 | 
						|
	///   * lightGreen
 | 
						|
	///   * yellow
 | 
						|
	///   * lightBlue
 | 
						|
	///   * lightMagenta
 | 
						|
	///   * lightCyan
 | 
						|
	///   * white
 | 
						|
	///
 | 
						|
	/// Chain this channel to a FormattingChannel with an
 | 
						|
	/// appropriate Formatter to control what is contained 
 | 
						|
	/// in the text.
 | 
						|
	///
 | 
						|
	/// Similar to StreamChannel, except that a static
 | 
						|
	/// mutex is used to protect against multiple
 | 
						|
	/// console channels concurrently writing to the
 | 
						|
	/// same stream.
 | 
						|
{
 | 
						|
public:	
 | 
						|
	ColorConsoleChannel();
 | 
						|
		/// Creates the channel and attaches std::clog.
 | 
						|
		
 | 
						|
	ColorConsoleChannel(std::ostream& str);
 | 
						|
		/// Creates the channel using the given stream.
 | 
						|
 | 
						|
	void log(const Message& msg);
 | 
						|
		/// Logs the given message to the channel's stream.
 | 
						|
	
 | 
						|
	void setProperty(const std::string& name, const std::string& value);
 | 
						|
		/// Sets the property with the given name. 
 | 
						|
		/// 
 | 
						|
		/// The following properties are supported:
 | 
						|
		///   * enableColors:      Enable or disable colors.
 | 
						|
		///   * traceColor:        Specify color for trace messages.
 | 
						|
		///   * debugColor:        Specify color for debug messages.
 | 
						|
		///   * informationColor:  Specify color for information messages.
 | 
						|
		///   * noticeColor:       Specify color for notice messages.
 | 
						|
		///   * warningColor:      Specify color for warning messages.
 | 
						|
		///   * errorColor:        Specify color for error messages.
 | 
						|
		///   * criticalColor:     Specify color for critical messages.
 | 
						|
		///   * fatalColor:        Specify color for fatal messages.
 | 
						|
		///
 | 
						|
		/// See the class documentation for a list of supported color values.
 | 
						|
 | 
						|
	std::string getProperty(const std::string& name) const;
 | 
						|
		/// Returns the value of the property with the given name.
 | 
						|
		/// See setProperty() for a description of the supported
 | 
						|
		/// properties.
 | 
						|
 | 
						|
protected:	
 | 
						|
	enum Color
 | 
						|
	{
 | 
						|
		CC_DEFAULT      = 0x0027,
 | 
						|
		CC_BLACK        = 0x001e,
 | 
						|
		CC_RED          = 0x001f,
 | 
						|
		CC_GREEN        = 0x0020,
 | 
						|
		CC_BROWN        = 0x0021,
 | 
						|
		CC_BLUE         = 0x0022,
 | 
						|
		CC_MAGENTA      = 0x0023,
 | 
						|
		CC_CYAN         = 0x0024,
 | 
						|
		CC_GRAY         = 0x0025,
 | 
						|
		CC_DARKGRAY     = 0x011e,
 | 
						|
		CC_LIGHTRED     = 0x011f,
 | 
						|
		CC_LIGHTGREEN   = 0x0120,
 | 
						|
		CC_YELLOW       = 0x0121,
 | 
						|
		CC_LIGHTBLUE    = 0x0122,
 | 
						|
		CC_LIGHTMAGENTA = 0x0123,
 | 
						|
		CC_LIGHTCYAN    = 0x0124,
 | 
						|
		CC_WHITE        = 0x0125
 | 
						|
	};
 | 
						|
 | 
						|
	~ColorConsoleChannel();
 | 
						|
	Color parseColor(const std::string& color) const;
 | 
						|
	std::string formatColor(Color color) const;
 | 
						|
	void initColors();
 | 
						|
 | 
						|
private:
 | 
						|
	std::ostream& _str;
 | 
						|
	bool _enableColors;
 | 
						|
	Color _colors[9];
 | 
						|
	static FastMutex _mutex;
 | 
						|
	static const std::string CSI;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
} // namespace Poco
 | 
						|
 | 
						|
 | 
						|
#endif // Foundation_ConsoleChannel_INCLUDED
 |