logging.h (Source)

/*
 * Licence: LGPL 
 * Autor: Gilhad
*/

#ifndef LOGGING_H
#define LOGGING_H

#define LOG_NONE 0
#define LOG_INFO 20
#define LOG_ERROR 40
class logger{
	public:
		
		// konstruktory
		logger();
		logger(const char *name);
		logger(const char *name, int level);
		logger(int level);
		
		// destruktor
		virtual ~logger();
		
		const char *name;
		int set_level; // hladina, od ktere se loguje
		
		virtual void log(int level, const char *msg);
		virtual void log(int level, const char *msg, const char *param);
		virtual void log(int level, const char *msg, int param);
		virtual void log(int level, const char *msg, int param, int type);
		
		// oblíbené zkratky pro info a error
		void info( const char *msg)				{ log(LOG_INFO,msg); };			// info("OK")				=> "OK"
		void info( const char *msg, const char *param)		{ log(LOG_INFO,msg,param); };		// info("Not a number ", data)		=> "Not a number TEST"
		void info( const char *msg, int param)			{ log(LOG_INFO,msg,param); };		// info("Not positive ", number)	=> "Not positive -12"
		void info( const char *msg, int param, int type)	{ log(LOG_INFO,msg,param,type); };	// info("Bad bitmask ", number, BIN)	=> "Bad bitmask 10101010"
		
		void error( const char *msg)				{ log(LOG_ERROR,msg); };
		void error( const char *msg, const char *param)		{ log(LOG_ERROR,msg,param); };
		void error( const char *msg, int param)			{ log(LOG_ERROR,msg,param); };
		void error( const char *msg, int param, int type)	{ log(LOG_ERROR,msg,param,type); };
		
		
	protected:	// teprve zde se používá Serial
		
		virtual void write(const char *msg)=0;
		virtual void write(int msg)=0;
		virtual void write(int msg, int type)=0;	// write(123,HEX)
		virtual void writeln()=0;
};
#endif