blob: 211601f8ba216daa429abc36838a3a5800f32a6c [file] [log] [blame]
Alexander Afanasyevfa2f6622016-12-25 12:28:00 -08001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2013-2016, Regents of the University of California.
Alexander Afanasyevc507ac22013-01-21 16:01:58 -08004 *
Alexander Afanasyevfa2f6622016-12-25 12:28:00 -08005 * This file is part of ChronoShare, a decentralized file sharing application over NDN.
Alexander Afanasyevc507ac22013-01-21 16:01:58 -08006 *
Alexander Afanasyevfa2f6622016-12-25 12:28:00 -08007 * ChronoShare is free software: you can redistribute it and/or modify it under the terms
8 * of the GNU General Public License as published by the Free Software Foundation, either
9 * version 3 of the License, or (at your option) any later version.
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080010 *
Alexander Afanasyevfa2f6622016-12-25 12:28:00 -080011 * ChronoShare is distributed in the hope that it will be useful, but WITHOUT ANY
12 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080014 *
Alexander Afanasyevfa2f6622016-12-25 12:28:00 -080015 * You should have received copies of the GNU General Public License along with
16 * ChronoShare, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * See AUTHORS.md for complete list of ChronoShare authors and contributors.
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080019 */
20
21#ifndef LOGGING_H
22#define LOGGING_H
23
Alexander Afanasyeve83c0562016-12-24 10:20:41 -080024#include "core/chronoshare-config.hpp"
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080025
26#ifdef HAVE_LOG4CXX
27
28#include <log4cxx/logger.h>
29
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080030#define MEMBER_LOGGER static log4cxx::LoggerPtr staticModuleLogger;
Alexander Afanasyev47cf2ef2013-01-28 15:13:47 -080031
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080032#define INIT_MEMBER_LOGGER(className, name) \
33 log4cxx::LoggerPtr className::staticModuleLogger = log4cxx::Logger::getLogger(name);
Alexander Afanasyev47cf2ef2013-01-28 15:13:47 -080034
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080035#define INIT_LOGGER(name) \
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080036 static log4cxx::LoggerPtr staticModuleLogger = log4cxx::Logger::getLogger(name);
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080037
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080038#define _LOG_DEBUG(x) LOG4CXX_DEBUG(staticModuleLogger, x);
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080039
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080040#define _LOG_TRACE(x) LOG4CXX_TRACE(staticModuleLogger, x);
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080041
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080042#define _LOG_FUNCTION(x) LOG4CXX_TRACE(staticModuleLogger, __FUNCTION__ << "(" << x << ")");
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080043
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080044#define _LOG_FUNCTION_NOARGS LOG4CXX_TRACE(staticModuleLogger, __FUNCTION__ << "()");
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080045
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080046#define _LOG_ERROR(x) LOG4CXX_ERROR(staticModuleLogger, x);
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080047
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080048#define _LOG_ERROR_COND(cond, x) \
49 if (cond) { \
50 _LOG_ERROR(x) \
51 }
Alexander Afanasyev49a30d02013-01-21 21:38:48 -080052
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080053#define _LOG_DEBUG_COND(cond, x) \
54 if (cond) { \
55 _LOG_DEBUG(x) \
56 }
Alexander Afanasyev49a30d02013-01-21 21:38:48 -080057
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080058void
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080059INIT_LOGGERS();
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080060
Alexander Afanasyev49a30d02013-01-21 21:38:48 -080061#else // else HAVE_LOG4CXX
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080062
63#define INIT_LOGGER(name)
64#define _LOG_FUNCTION(x)
65#define _LOG_FUNCTION_NOARGS
66#define _LOG_TRACE(x)
67#define INIT_LOGGERS(x)
68#define _LOG_ERROR(x)
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080069#define _LOG_ERROR_COND(cond, x)
70#define _LOG_DEBUG_COND(cond, x)
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080071
Alexander Afanasyev47cf2ef2013-01-28 15:13:47 -080072#define MEMBER_LOGGER
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080073#define INIT_MEMBER_LOGGER(className, name)
Alexander Afanasyev47cf2ef2013-01-28 15:13:47 -080074
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080075#ifdef _DEBUG
76
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080077#include <boost/date_time/posix_time/posix_time.hpp>
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080078#include <boost/thread/thread.hpp>
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080079#include <iostream>
80
Alexander Afanasyeveda3b7a2016-12-25 11:26:40 -080081#define _LOG_DEBUG(x) \
82 std::clog << boost::get_system_time() << " " << boost::this_thread::get_id() << " " << x \
83 << std::endl;
Alexander Afanasyevc507ac22013-01-21 16:01:58 -080084
85#else
86#define _LOG_DEBUG(x)
87#endif
88
89#endif // HAVE_LOG4CXX
90
91#endif // LOGGING_H