Difference between revisions of "Logging"

From GnuCash
Jump to: navigation, search
(Add breakout for defined log domains in GnuCashand log levels)
(Update path information to log.conf)
Line 11: Line 11:
  
  
The special file <tt>~/.gnucash/log.conf</tt> is checked for at gnucash start up; if present, its contents will configure the logging subsystem.  The primary purpose of the configuration file it to setup a specific set of log-levels, though it's also useful for changing the default logging location from <tt>/tmp/gnucash.trace</tt> to stdout, stderr or another file.
+
The special file <tt>[[Configuration Locations#GNC_CONFIG_HOME|GNC_CONFIG_HOME]]/log.conf</tt> (for GnuCash 3.x and up) or <tt>[[Configuration Locations#DOT_GNUCASH_DIR|DOT_GNUCASH_DIR]]/log.conf</tt> (for GnuCash 2.6.x and older) is checked for at gnucash start up; if present, its contents will configure the logging subsystem.  The primary purpose of the configuration file it to setup a specific set of log-levels, though it's also useful for changing the default logging location from <tt>/tmp/gnucash.trace</tt> to stdout, stderr or another file.
  
 
The specific set of log paths that exist are going to be a function of the code at any given point, but some basic patterns will stabilize.  As of Feb 13 2007, [[User:Jsled]] is using the following to generally raise the log level of the app, but also to get debugging detail about file-backend and U I code changes related to scheduled transactions:
 
The specific set of log paths that exist are going to be a function of the code at any given point, but some basic patterns will stabilize.  As of Feb 13 2007, [[User:Jsled]] is using the following to generally raise the log level of the app, but also to get debugging detail about file-backend and U I code changes related to scheduled transactions:

Revision as of 07:21, 4 September 2018

For users: See Tracefile and Stack Trace on how to look up the logging information after some problem occurred.

For developers: See the Logging API documentation, as well. So each module defines its own log_domain. Best way to figure out what to use is to look at the top of the .c file and look for the LOG_MODULE. E.g. print-session.c defines G_LOG_DOMAIN "gnc.printing".

The rest of this page is targeted towards developers.

Logging in GnuCash

GnuCash leverages glib logging, with some historical and convenience macros. Since 2007 GnuCash has used an ad-hoc layer on top of glib's "gmessage.h" logging inspired by log4j. In short, messages are logged in a given log-domains and at a specific log-level. The log-domain is a "."-separated path, and a table of log levels is configured. Between the two, a tree of log-level is established. Log messages are checked against the tree before being emitted.


The special file GNC_CONFIG_HOME/log.conf (for GnuCash 3.x and up) or DOT_GNUCASH_DIR/log.conf (for GnuCash 2.6.x and older) is checked for at gnucash start up; if present, its contents will configure the logging subsystem. The primary purpose of the configuration file it to setup a specific set of log-levels, though it's also useful for changing the default logging location from /tmp/gnucash.trace to stdout, stderr or another file.

The specific set of log paths that exist are going to be a function of the code at any given point, but some basic patterns will stabilize. As of Feb 13 2007, User:Jsled is using the following to generally raise the log level of the app, but also to get debugging detail about file-backend and U I code changes related to scheduled transactions:

   [levels]
   gnc=message
   
   gnc.bin=info
   gnc.gui=info
   gnc.backend.file=info
   
   gnc.engine.sx=debug
   gnc.app-util.sx=debug
   gnc.backend.file.sx=debug
   gnc.gui.sx=debug
   gnc.gui.frequency=debug
   
   GLib=error
   
   [output]
   to=stderr


Note that these settings are probably not suitable for your purpose, but serve as an example of what's possible.