Logging ======= Standard logging ---------------- ``xmldirector.plonecore`` comes has its own logger that will write its output to the standard configured Plone logger which is usally bound to ``var/log/instance.log`` if not configured otherwise. The ``LOG`` object is just a tiny wrapper for the standard Python logging facility (see https://docs.python.org/2/library/logging.html). Usage:: from xmldirector.plonecore.logger import LOG def my_code(...): LOG.debug('debug message') LOG.info('info message') LOG.warn('warn message') LOG.error('error message') Persistent logging ------------------ ``xmldirector.plonecore`` also support persistent logging where the log data is stored on an arbitrary persistent Plone object. This functionality can be used for logging object specific data (e.g. XML conversion results). Usage:: from xmldirector.plonecore.logger import IPersistentLogger def convert_it(...): # ``context`` represents the current context object adapter = IPersistentLogger(context) adapter.log(u'this is a logging message') adapter.log(u'this is an error message', level='error') adapter.log(u'this is an error message', level='error', details='....') ``details`` can be either a string or a Python datastructure like a dict, a list or a tuple. The logger will convert non-string data using the ``pprint`` module of Python into a nicely readable string. The logs can be view through-the-web through the URL http://host/path/to/object/@@connector-log. The logs can be clear using the URL http://host/path/to/object/@@connector-log-clear. Both URLs require the permission of modify the related object.