Command-Line Options for Logging

    will log messages concerning startup at trace level, AQL queries at trace leveland everything else at info level.

    In a configuration file, it is written like this:

    1. [log]
    2. level = startup=trace
    3. level = queries=trace
    4. level = info

    Note that there must not be any whitespace around the second =.

    The available log levels are:

    • error: only logs errors
    • warning: only logs warnings and errors
    • info: logs information messages, warnings and errors
    • debug: logs debug and information messages, warnings and errors
    • trace: logs trace, debug and information messages, warnings and errorsNote that levels debug and trace will be very verbose.

    Some relevant log topics available in ArangoDB 3 are:

    • agency: information about the agency
    • collector: information about the WAL collector’s state
    • compactor: information about the collection datafile compactor
    • datafiles: datafile-related operations
    • : information about memory-mapping operations (including msync)
    • performance: performance-releated messages
    • queries: executed AQL queries, slow queries
    • replication: replication-related info
    • startup: information about server startup and shutdown
    • threads: information about threads

    The log option —log.output <definition> allows directing the globalor per-topic log output to different outputs. The output definition <definition>can be one of

    • - for stdin
    • + for stderr
    • syslog://<syslog-facility>
    • syslog://<syslog-facility>/<application-name>
    • file://<relative-path>The option can be specified multiple times in order to configure the outputfor different log topics. To set up a per-topic output configuration, use—log.output <topic>=<definition>, e.g.

    queries=file://queries.txt

    logs all queries to the file “queries.txt”.

    The old option —log.requests-file is still available in 3.0. It is now a shortcutfor the more general option .

    Using —log.output also allows directing log output to different files based on topics. For example, to log all AQL queries to a file “queries.log” one can use the options:

    To additionally log HTTP request to a file named “requests.log” add the options:

    1. --log.level requests=info --log.output requests=file:///path/to/requests.log

    Forcing direct output

    The option —log.force-direct can be used to disable logging in an extralogging thread. If set to true, any log messages are immediately printed in thethread that triggered the log message. This is non-optimal for performance butcan aid debugging. If set to false, log messages are handed off to an extralogging thread, which asynchronously writes the log messages.

    Log dates and times in local time zone: —log.use-local-time

    If specified, all dates and times in log messages will use the server’slocal time-zone. If not specified, all dates and times in log messageswill be printed in UTC / Zulu time. The date and time format used in logsis always YYYY-MM-DD HH:MM:SS, regardless of this setting. If UTC timeis used, a Z will be appended to indicate Zulu time.

    Color logging

    —log.color value

    Logging to terminal output is by default colored. Colorful logging can be turned off by setting the value to false.

    Normally, if an human readable fatal, error, warning or info message islogged, no information about the file and line number is provided. Thefile and line number is only logged for debug and trace message. This optioncan be use to always log these pieces of information.

    Prefix

    Log prefix: —log.prefix prefix

    This option is used specify an prefix to logged text.

    Log thread identifier: —log.thread true

    Whenever log output is generated, the process ID is written as part of thelog information. Setting this option appends the thread id of the callingthread to the process id. For example,

    when no thread is logged and

    1. 2010-09-20T13:04:17Z [19371-18446744072487317056] ready for business

    when this command line option is set.

    To also log thread names, it is possible to set the —log.thread-nameoption. By default —log.thread-name is set to false.

    Role

    When set to , this option will make the ArangoDB logger print a single character with the server’s role into each logged message. The roles are:

    • U: undefined/unclear (used at startup)
    • S: single server
    • C: coordinator
    • P: primary