Difference between revisions of "Logging"

From GnuCash
Jump to: navigation, search
(With log.conf: format versions)
m (Configuring Logging: API group Logging)
Line 12: Line 12:
  
 
Logging may be configured by using either using the [[#With log.conf | log.conf]] file or by specifying [[#Command Line Options |command line options]] when starting GnuCash from a terminal/shell.  
 
Logging may be configured by using either using the [[#With log.conf | log.conf]] file or by specifying [[#Command Line Options |command line options]] when starting GnuCash from a terminal/shell.  
 
  
 
=== With log.conf ===
 
=== With log.conf ===
 
 
The special file
 
The special file
 
:;since GnuCash 3.0: <tt>[[Configuration Locations#GNC_CONFIG_HOME|GNC_CONFIG_HOME]]/log.conf</tt>
 
:;since GnuCash 3.0: <tt>[[Configuration Locations#GNC_CONFIG_HOME|GNC_CONFIG_HOME]]/log.conf</tt>
Line 41: Line 39:
 
to=stderr
 
to=stderr
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
Note:  
 
Note:  
 
* These settings are probably not suitable for your purpose, but serve as an example of what's possible.
 
* These settings are probably not suitable for your purpose, but serve as an example of what's possible.
* Configuring using log.conf will change logging behavior for all versions of gnucash run by you as a user. This may not be convenient if you use a stable production version for accounting and work on a development version on the same computer
+
* Configuring using log.conf will change logging behavior for all versions of gnucash run by you as a user. This may not be convenient if you use a stable production version for accounting and work on a development version as the same user on the same computer
  
 
=== Command Line Options ===
 
=== Command Line Options ===
Line 70: Line 67:
  
 
  GTK+ options ( $gnucash --help-gtk) allow setting debugging options for GTK+.
 
  GTK+ options ( $gnucash --help-gtk) allow setting debugging options for GTK+.
 +
See also [{{BuildURL}}/docs/MAINT/group__Logging.html API group Logging].

Revision as of 02:44, 18 February 2021

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.

Configuring Logging

Logging may be configured by using either using the log.conf file or by specifying command line options when starting GnuCash from a terminal/shell.

With log.conf

The special file

since GnuCash 3.0
GNC_CONFIG_HOME/log.conf
Up to GnuCash 2.6.x
DOT_GNUCASH_DIR/log.conf

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 entries in log.conf to generally raise the log level of the app, but also to get debugging detail about file-backend and UI 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:

  • These settings are probably not suitable for your purpose, but serve as an example of what's possible.
  • Configuring using log.conf will change logging behavior for all versions of gnucash run by you as a user. This may not be convenient if you use a stable production version for accounting and work on a development version as the same user on the same computer

Command Line Options

The full list of command options can be obtained by entering in a shell (provided that the GnuCash bin folder is In PATH or the current folder of the shell):

Windows
gnucash --help | more
Other platforms
gnucash --help

The specific options which may be used from the command line to configure general logging in GnuCash are:

Option Description
--logto=<filespecifier> File to log into; defaults to "/tmp/gnucash.trace"; can be "stderr" or "stdout" or a path to any file file. E.g a logging file in the user directory which doesn't require root privileges to access
--log "<log-domain>=<log-level>" Overrides the default log-level settings or settings specified in log.conf. <log-domain> is of the form of a "." separated path. <log-level> is one of debug,info, warn, crit or error. Examples: "--log qof=debug" or "--log gnc.backend.file.sx=info"
--debug Enable debugging mode: provide deep detail in the logs. This is equivalent to: --log "=info" --log "qof=info" --log "gnc=info".
--extra Enable extra/development/debugging features.
--gsettings-prefix=GSETTINGSPREFIX Set the prefix for gsettings schemas for gsettings queries. This can be useful to have a different settings tree while debugging.
GTK+ options ( $gnucash --help-gtk) allow setting debugging options for GTK+.

See also API group Logging.