// ndppd - NDP Proxy Daemon
// Copyright (C) 2011  Daniel Adolfsson <daniel.adolfsson@tuhox.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
#ifndef __NDPPD_LOG_H
#define __NDPPD_LOG_H

#ifdef DEBUG
#define DBG(...) log::printf(log::L_DEBUG,   __VA_ARGS__)
#else
#define DBG(...)
#endif

#define ERR(...) log::printf(log::L_ERROR,   __VA_ARGS__)
#define WRN(...) log::printf(log::L_WARNING, __VA_ARGS__)
#define BUG(...) log::printf(log::L_BUG,     __VA_ARGS__)
#define NFO(...) log::printf(log::L_INFO,    __VA_ARGS__)
#define NCE(...) log::printf(log::L_NOTICE,  __VA_ARGS__)
#define FTL(...) log::printf(log::L_FATAL,   __VA_ARGS__)

__NDPPD_NS_BEGIN

class log
{
private:
   static const char *_level_str[];

public:
   enum
   {
      L_FATAL,
      L_ERROR,
      L_WARNING,
      L_BUG,
      L_NOTICE,
      L_INFO,
      L_DEBUG,
      MAX_L
   };

   static void puts(int level, const char *str);

   static void printf(int level, const char *fmt, ...);
};

__NDPPD_NS_END

#endif // __NDPPD_LOG_H