{endcode}
{subsection: Current API of the individual logging methods}
-TODO
+----------------------------------
+User Log:
+----------------------------------
+
+Writer- and Reader-class : WriteUserLog and ReadUserLog
+
+- WriteUserLog
+
+ May be global, may write out as XML
+
+ - Instantiation:
+ WriteUserLog(const char *owner, const char *domain, const char *file,
+ int clu, int proc, int subp, bool xml = XML_USERLOG_DEFAULT,
+ const char *gjid = NULL);
+
+ WriteUserLog(const char *owner, const char *file,
+ int clu, int proc, int subp, bool xml = XML_USERLOG_DEFAULT);
+
+ Also empty constructor possible, but that means that initialization has to be done separately.
+
+ - Usage:
+ bool writeEvent (ULogEvent *event, ClassAd *jobad = NULL,
+ bool *written = NULL );
+
+ Problem: This function returns success, even if no initialization was made (and therefore nothing was written)
+
+ - Locking:
+ - in write process:
+ FileLockBase: lock on file is obtained
+ lock is released upon completion
+
+
+ private function for writing/locking: doWriteEvent(...)
+
+
+ - Rotation:
+ int doRotation( const char *path, FILE *&fp,
+ MyString &rotated, int max_rotations );
+
+ log files are named <name>.x, where <name>.1 is the most recently created file (apart from simply <name>, which is the current log file)
+ A rename has to take place for all existing archived log files for every rotation.
{subsection: Current semantics}
TODO