Logging
Index
Log types
Fort has two different types of log messages: Operation logs and Validation logs.
They will be described below.
Operation Log
Operation logs are of likely interest to the operator running Fort; Issues reported here require human intervention. These include
Type | INFO example | WARNING example | ERROR example |
---|---|---|---|
Configuration logs | “And now I’m going to echo my configuration, in case you want to review it.” | “This configuration argument is deprecated.” | “Bad file syntax.” |
RTR Server logs | “Accepted connection from client.” | “Huh? Peer is not speaking the RTR protocol.” | “Cannot bind to address.” |
Out of memory errors | - | - | “Out of memory.” |
Read/write errors on local files | - | “The SLURM directory seems to lack SLURM files.” | “I don’t have permissions to access the repository cache.” |
Start and end of a validation cycle | “Validation cycle ended. I got R ROAs, K router keys, my new serial is S, and it took T seconds.” | - | - |
Programming errors | - | - | “Array size is 1, but array is NULL.” |
Validation Log
These are messages generated during the RPKI validation cycle, and refer specifically to quirks found in the RPKI objects. (ie. Certificates, CRLs, ROAs, etc.)
These are likely more meaningful to repository administrators, for the sake of reviewing their objects.
They are disabled by default.
Type | WARNING example | ERROR example |
---|---|---|
Validation eventualities | “Maximum retries reached; skipping object.” | “Certificate is expired.” |
Incidences | “Manifest is stale.” | “Manifest is stale.” |
(Most informational validation messages have DEBUG priority. Incidence severity is configurable.)
Configuration
Both type of logs share a set of configuration arguments, each one of them applying to the corresponding log type.
The operation log arguments are those that have the prefix log.
, while the validation log arguments begin with validation-log.
. The next suffixes can be added to configure each log type:
For instance, to enable the “validation log”, the argument --validation-log.enabled
should be used (prefix: validation-log.
, suffix: enabled
).
The following sub-sections describe how each argument works.
Enabled
Sets whether the corresponding log type is printed or suppressed. When false
, the rest of the corresponding log type’s arguments are ignored.
Output
Either syslog
or console
. The former sends the output to the environment’s syslog server (using the configured *.facility
), while the latter employs the standard streams. (DEBUG and INFO are sent to standard output, WARNING and ERROR to standard error.)
During the brief period in which configuration has not been completely parsed yet (and therefore, the validator is not yet aware of the desired log output), the standard streams and syslog are used simultaneously.
Level
Only messages of equal or higher priority than *.level
will be logged. For example, --log.level=warning
will discard DEBUG and INFO operation messages, and log WARNING and ERROR.
The available values are
error
: A failure that can stop an internal task (e.g. a certificate has expired so the childs are discarded) or is definitely an operational problem (e.g. no more memory can be allocated). Also detected programming errors.warning
: Something suspicious, but not a stopper for a task.info
: Inoffensive messages that might be of interest to the administrator.debug
: Information deemed useful to the developer.
Variants:
Color output
Causes the output to contain ASCII color codes. Meant for human consumption. Only applies when output is console
.
Each color depends on the message’s priority:
error
: RED (Critical errors are CYAN)warning
: ORANGEinfo
: LIGHT GRAYdebug
: CYAN
Examples:
$ fort --log.color-output --validation-log.color-output (...)
DBG: Manifest '62gPOPXWxxu0sQa4vQZYUBLaMbY.mft' {
INF: Configuration {
WRN: H2jRmyC2M.mft: The signature algorithm has parameters.
ERR: H2jRmyC2M.mft: Certificate validation failed: certificate has expired
CRT: Programming error: Array size is 1 but array is NULL.
The arguments of each log type are:
File name format
Decides which version of file names should be printed during most debug/error messages. It can have the values:
global-url
: Prints the global name of the file; the URL that can be used to download it (always starts withrsync://
orhttps://
).local-path
: Prints a path that points to the local cached version of the file (always starts with--local-repository
’s value).file-name
: Strips prefixes, leaving only the base name of the file (including extension).
Suppose a certificate was downloaded from rsync://rpki.example.com/foo/bar/baz.cer
into the local cache repository/
:
global-url
: Will print the certificate’s name asrsync://rpki.example.com/foo/bar/baz.cer
.local-path
: Will print the certificate’s name asrepository/rpki.example.com/foo/bar/baz.cer
.file-name
: Will print the certificate’s name asbaz.cer
.
This flag affects any of the log output configured at *.output
(syslog
and console
).
The arguments of each log type are:
Facility
Sets the syslog facility; only meaningful when *.output
is syslog
.
The available facilites are
auth | daemon | uucp | local2 | local5 | |
authpriv | ftp | news | local0 | local3 | local6 |
cron | lpr | user | local1 | local4 | local7 |
Tag
Text tag that will be added to each message of the corresponding log type. The tag will be added after the message level, inside square brackets.
It’s a simple means to differentiate each message according to its type, useful if both log types are enabled, and are printing to the same *.output
.
Example: