Difference between revisions of "Logging"

From BaseX Documentation
Jump to navigation Jump to search
(3 intermediate revisions by the same user not shown)
Line 15: Line 15:
  
 
==RESTXQ==
 
==RESTXQ==
 
{{Mark|Introduced with 8.6}}
 
  
 
Non-trivial web applications provide the ability for users to sign in and out. User handling can be realized with session attributes (see e. g. the [[DBA]] code).
 
Non-trivial web applications provide the ability for users to sign in and out. User handling can be realized with session attributes (see e. g. the [[DBA]] code).
Line 26: Line 24:
 
<pre class="brush:xquery">
 
<pre class="brush:xquery">
 
import module namespace Session = 'http://basex.org/modules/session';
 
import module namespace Session = 'http://basex.org/modules/session';
declare %rest:path("/set-session-id") function local:f() {
+
declare %rest:path('/session-id') function local:f() {
   Session:set('id', "joe"),
+
   Session:set('id', 'joe'),
   "I am Joe"
+
   'I am Joe'
 
};
 
};
 
</pre>
 
</pre>
Line 72: Line 70:
 
;Version 8.6
 
;Version 8.6
 
* Added: The log directory can be changed with the {{Option|LOGPATH}} option.
 
* Added: The log directory can be changed with the {{Option|LOGPATH}} option.
* Updated: Evaluate session attributes.
+
* Updated: Include session attributes in log data.

Revision as of 16:22, 26 October 2017

This article is part of the Advanced User's Guide. It describes how client operations are logged by the server. The server logs can e.g. be used to get an overview of all processes executed on your server, trace any errors or compile performance statistics.

Introduction

The server logs are written in plain text. In your Database Directory, you can find a folder named .logs in which all log files are stored with the according date. Note that, depending on your OS and configuration, files and folders beinning with a . may be hidden. The log directory can be changed via the LOGPATH option.

Some more notes on the logging facility:

  • HTTP requests are included in the log files.
  • Logging can be turned on/off via the LOG option.
  • The maximum length of logging messages can be changed via LOGMSGMAXLEN.
  • The Admin Module provides access to the log files from XQuery.

RESTXQ

Non-trivial web applications provide the ability for users to sign in and out. User handling can be realized with session attributes (see e. g. the DBA code).

By default, RESTXQ code is run with admin permissions. However, as it is more interesting to know which user has called a function, the RESTXQ user string (which is admin by default, and which will show up in the log data) will be overwritten by the value of an id session attribute. If the request path includes /dba/, the dba session attribute will be assigned.

If the following function is called more than once, joe will appear as user in the second and subsequent log entries:

import module namespace Session = 'http://basex.org/modules/session';
declare %rest:path('/session-id') function local:f() {
  Session:set('id', 'joe'),
  'I am Joe'
};

Format

Example 1
01:18:12.892   SERVER           admin   OK        Server was started (port: 1984)
01:18:15.436   127.0.0.1:4722   jack    REQUEST   XQUERY for $i in 1 to 5 return random:double()
01:18:15.446   127.0.0.1:4722   jack    OK        Query executed in 2.38 ms.                       2.72 ms
01:18:15.447   127.0.0.1:4722   jack    REQUEST   EXIT
01:18:15.447   127.0.0.1:4722   jack    OK                                                         0.39 ms

A server has been started and a user jack has connected to the server to perform a query and exit properly.

Example 2
01:23:33.251   127.0.0.1:4736   john   OK        QUERY[0] 'hi'   0.44 ms
01:23:33.337   127.0.0.1:4736   john   OK        ITER[0]         1.14 ms
01:23:33.338   127.0.0.1:4736   john   OK        INFO[0]         0.36 ms
01:23:33.339   127.0.0.1:4736   john   OK        CLOSE[0]        0.21 ms
01:23:33.359   127.0.0.1:4736   john   REQUEST   EXIT
01:23:33.359   127.0.0.1:4736   john   OK                        0.14 ms

A user john has performed an iterative query, using one of the client APIs.

Example 3
01:31:51.888   127.0.0.1:4803   admin   REQUEST   [GET] http://localhost:8984/rest/factbook
01:31:51.892   127.0.0.1:4803   admin   200                                                   4.43 ms

An admin user has accessed the factbook database via REST.

Changelog

Version 8.6
  • Added: The log directory can be changed with the LOGPATH option.
  • Updated: Include session attributes in log data.