Chapter 14. Logging

The TMCore assembly makes use of the Apache Log4Net logging library to provide configurable runtime logging services. Log4Net provides a flexible hierarchical logging system that supports a wide variety of logging formats and logging destinations include files, console and the system event log. Details on how to Log4Net's features and how to configure the Log4Net system can be found on the Apache Log4Net site at http://logging.apache.org/log4net/.

The TMCore assemly does not itself initialise the Log4Net library which allows developers creating applications that use TMCore to choose their own method of configurable or hardcoded logging configuration.

Note

The Topic Map Web Service and NPCL Web Service web applications do provide a default, overrideable configuration for the Log4Net system - see the documentation for those applications for more details.

Log4Net supports the concept of a hierarchical set of logs, so for example the log "networkedplanet.tmcore" is a child of the log "networkedplanet". Configuration that applies to the parent log also applies to the child log unless overridden. This is covered in much more detail in the Apache documentation for Log4Net. The TMCore assembly writes to the following logs:

networkedplanet.tmcore.system

This log receives the following types of messages:

  • ERROR messages when a topic map processing exception occurs such as an attempt to add a duplicate source locator.

  • ERROR messages if the system cannot execute a set of SQL statements against the database for some reason.

  • INFO messages when the TMCore ITopicMapSystem is initialised and closed.

  • DEBUG messages when a query is executed through the ITopicMapSystem.ExecuteQuery() method.

  • DEBUG messages detailing the configuration parameters passed when the TopicMapSystem is initialised

    Warning

    If you are using database authentication with a password specified in the connection string, these DEBUG messages will contain the user name and password used for the connection in clear text. You should either disable DEBUG level logging or ensure that logs containing this sensitive data are not accessible to unauthorized users.

networkedplanet.tmcore.merging

This log only receives DEBUG messages when the system detects and performs a merge of two topics.

networkedplanet.tmcore.syntax.xtm

Receives INFO and DEBUG level messages as an XTM source is parsed into the topic map. The INFO level messages can be used for timing imports. The DEBUG level messages are quite verbose and not recommended except for debugging purposes.

networkedplanet.tmcore.util.hierarchy

This log receives the following types of messages:

  • ERROR messages if a required PSI has not been defined in the topic map.

  • WARNING messages if a facet is found which cannot be processed as a hierarchy for some reason.

  • DEBUG messages as a HierarchyManager instance loads or refreshes topic hierarchy data.