184 lines
9.9 KiB
C
184 lines
9.9 KiB
C
/*
|
|
logging.h - Configure basic nobug logging
|
|
|
|
Copyright (C) Lumiera.org
|
|
2008, 2009 Christian Thaeter <ct@pipapo.org>
|
|
Hermann Vosseler <Ichthyostega@web.de>
|
|
|
|
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 2 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, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
*/
|
|
|
|
#ifndef LUMIERA_LOGGING_H
|
|
#define LUMIERA_LOGGING_H
|
|
|
|
/** @file logging.h
|
|
** This header is for including and configuring NoBug.
|
|
** The idea is that configuration and some commonly used flag
|
|
** declarations are to be kept in one central location. Subsystems
|
|
** are free to define and use additional flags for local use. Typically,
|
|
** this header will be included via some of the basic headers like error.hpp,
|
|
** which in turn gets included e.g. by proc/common.hpp
|
|
**
|
|
** This header can thus be assumed to be effectively global. It should contain
|
|
** only declarations of global relevance, as any change causes the whole project
|
|
** to be rebuilt. All flags defined here are initialised automatically.
|
|
**
|
|
** We use the 'NOBUG_DECLARATIONS_ONLY' magic to generate declarations and
|
|
** definitions only out of this header.
|
|
**
|
|
** @par Logging configuration
|
|
** By default, logging is configured such as to emit a small number of informative
|
|
** messages on the starting terminal and to report fatal errors. But besides the
|
|
** usual fine-grained tracing messages, we define a small number of distinct
|
|
** thematic <b>Logging Channels</b> providing a consistent high-level view of
|
|
** what is going on with regards to a specific aspect of the application
|
|
** - \c progress documents a high-level overall view of what the application \em does
|
|
** - \c render focuses on the working of the render engine (without logging each frame)
|
|
** - \c config shows anything of relevance regarding the configured state of App and session
|
|
** - \c memory allows to diagnose a high-level view of memory management
|
|
**
|
|
** Any log level can be overridden by an environment variable, for example
|
|
** \code NOBUG_LOG='progress:INFO' ./lumiera \endcode
|
|
**
|
|
** @todo logging to files? NOBUG_LOG='progress:INFO@file(name=filename)' api to set this statically up by the program will follow --cehteh
|
|
** @todo review this documentation ################################################################################################################################
|
|
*/
|
|
|
|
|
|
#include <nobug.h>
|
|
|
|
#ifndef LUMIERA_LOGGING_CXX
|
|
#undef NOBUG_DECLARE_ONLY
|
|
#define NOBUG_DECLARE_ONLY 1
|
|
#endif
|
|
|
|
/** the root switch for all logging */
|
|
NOBUG_CPP_DEFINE_FLAG (all);
|
|
|
|
|
|
/** debug logging */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( debugging, all);
|
|
/** debug logging for the main application starter */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( main_dbg, debugging);
|
|
/** base of debug logging for the backend */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( backend_dbg, debugging);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( file_dbg, backend_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( filehandle_dbg, backend_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( filehandlecache_dbg, backend_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( filedescriptor_dbg, backend_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mmap_dbg, backend_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mmapcache_dbg, backend_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mmapings_dbg, backend_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( threads_dbg, backend_dbg);
|
|
/** base of debug logging for the proc layer */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( proc_dbg, debugging);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( command_dbg, proc_dbg);
|
|
/** base of debug logging for the gui */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( gui_dbg, debugging);
|
|
/** base if debug logging for the support library */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( library_dbg, debugging);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mpool_dbg, library_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( psplay_dbg, library_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( resourcecollector_dbg, library_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mutex_dbg, library_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( cond_dbg, library_dbg);
|
|
/** base of debug logging for the common library */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( common_dbg, debugging);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( config_dbg, common_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( configfile_dbg, config_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( configitem_dbg, config_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( configtyped_dbg, config_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( configlookup_dbg, config_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( interface_dbg, common_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( interfaceregistry_dbg, interface_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( pluginloader_dbg, common_dbg);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( plugins_dbg, debugging);
|
|
|
|
|
|
/** base of runtime logging always available */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( logging, all);
|
|
/** general application progress base */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( progress, logging);
|
|
/** progress log for the main starter */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( main, progress);
|
|
/** progress log for the backend */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( backend, progress);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( file, backend); //opening/closing files etc
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mmap, backend); //mmap errors
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( thread, backend); //starting/stopping threads
|
|
/** progress log for the proc layer */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( proc, progress);
|
|
/** progress log for proc-layer command dispatch */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( command, proc);
|
|
/** progress log for the gui */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( gui, progress);
|
|
/** progress log for the support lib */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( library, progress);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( resourcecollector, library);
|
|
/** progress log for the common lib */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( common, progress);
|
|
/** progress log, config subsystem */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( configsys, common); //TODO: here seems to be an ambiguity weather "config" should denote the global config channel or the config-loder internals
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( configfiles, configsys); //reading, writing, lookup configfiles
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( configtyped, configsys); //values queried, errors
|
|
/** progress log, interfaces */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( interface, common);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( interfaceregistry, common); //interfaces which get registered/removed
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( guifacade, common);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( subsystem, common);
|
|
/** progress log, plugin loader*/
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( pluginloader, common); //plugins loaded/unloaded/errors
|
|
/** progress log, external plugins*/
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( plugins, progress);
|
|
/** base channel flag to track overall working of the render engine */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( render, logging);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( config, logging); //TODO: here seems to be an ambiguity weather "config" should denote the global config channel or the config-loder internals
|
|
|
|
/** base flag for software testing */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( test, logging);
|
|
/** base flag for syncronization logging */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( sync, logging); // do we need subsections here? backend_mutex_sync proc_mutex_sync etc?
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mutex_sync, sync); //locking/unlocking mutexes
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( cond_sync, sync); //waiting and signalling condition vars
|
|
/** base flag for memory related logging */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( memory, logging);
|
|
/** memory busines of the proc layer */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( proc_mem, memory);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( mobject_mem, proc_mem);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( builder_mem, proc_mem);
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( asset_mem, proc_mem);
|
|
|
|
|
|
/** event which drive the application are separately logged to reconstruct what happend/yielded to a problem */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( events, all);
|
|
/** caveat joel, you need to implement this */
|
|
NOBUG_CPP_DEFINE_FLAG_PARENT ( gui_event, all);
|
|
|
|
|
|
|
|
#ifndef LUMIERA_LOGGING_CXX
|
|
#undef NOBUG_DECLARE_ONLY
|
|
#define NOBUG_DECLARE_ONLY 0
|
|
#endif
|
|
|
|
#endif
|
|
/*
|
|
// Local Variables:
|
|
// mode: C
|
|
// c-file-style: "gnu"
|
|
// indent-tabs-mode: nil
|
|
// End:
|
|
*/
|