GnuCash Log Domains

From GnuCash
Jump to: navigation, search

GnuCash log-domains

The following domains associated with specific modules in the GnuCash code are defined for Gnucash (as at 2023-04-18) by macros in gnc_engine.h.

#define GNC_MOD_ROOT      "gnc"
#define GNC_MOD_ENGINE    "gnc.engine"
#define GNC_MOD_ACCOUNT   "gnc.account"
#define GNC_MOD_SX        "gnc.engine.sx"
#define GNC_MOD_QUERY     "gnc.query"
#define GNC_MOD_SCRUB     "gnc.scrub"
#define GNC_MOD_LOT       "gnc.lots"
#define GNC_MOD_COMMODITY "gnc.commodity"
#define GNC_MOD_BACKEND   "gnc.backend"
#define GNC_MOD_PRICE     "gnc.pricedb"
#define GNC_MOD_BUSINESS  "gnc.business"
#define GNC_MOD_IO        "gnc.io"
#define GNC_MOD_BOOK      "gnc.book-period"
#define GNC_MOD_GUI       "gnc.gui"
#define GNC_MOD_GUI_SX    "gnc.gui.sx"
#define GNC_MOD_GUILE     "gnc.guile"
#define GNC_MOD_LEDGER    "gnc.ledger"
#define GNC_MOD_REGISTER  "gnc.register"
#define GNC_MOD_HTML      "gnc.html"
#define GNC_MOD_PREFS     "gnc.pref"
#define GNC_MOD_IMPORT    "gnc.import"
#define GNC_MOD_ASSISTANT "gnc.assistant"
#define GNC_MOD_BUDGET    "gnc.budget"

The log-domain applied a given section of code is defined by including a line of the form:

static QofLogModule log_module = GNC_MOD_IMPORT;
or
#define G_LOG_DOMAIN GNC_MOD_IMPORT;
or
#define G_LOG_DOMAIN "gnc.import";
.
  • The first or second form is preferred as the specific string can then be easily changed at all points in the code by just altering the definition of the macros in gnc_engine.h but you will sometimesfind the third form used to define further subdomains for more detailed debugging ofr example.
  • Substitute the appropriate macro from the above list. This line should be placed in the in the C file after header files have been included.
  • This line should not be placed in any public header files as these may be include by C code in other code areas which are not in the specified domain.

The log-domains define specific modules or areas of the code where a log-level can be set to control the level of logging information logged by that area of code. When setting a log-level for given log-domain, either in ./gnucash/log.conf or supplied as command line arguments, the string enclosed in quotes above is used to refer to the log-domain.

E.g. The command line switch
$gnucash --log gnc.import=debug
when GnuCash is started enables debug level information to be output by code which is defined in the log-domain gnc.import, where gnc refers to gnucash generally and import refers to code modules associated with importing data.

Return to Logging.