Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/firecracker
Path: blob/main/docs/logger.md
1955 views

Firecracker logger Configuration

For the logging capability, Firecracker uses a single Logger object. The Logger can be configured either by sending a PUT API Request to the /logger path or by command line. You can configure the Logger only once (by using one of these options) and once configured, you can not update it.

Prerequisites

In order to configure the Logger, first you have to create the resource that will be used for logging:

# Create the required named pipe: mkfifo logs.fifo # The logger also works with usual files: touch logs.file

Using the API socket for configuration

You can configure the Logger by sending the following API command:

curl --unix-socket /tmp/firecracker.socket -i \ -X PUT "http://localhost/logger" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ "log_path": "logs.fifo", "level": "Warning", "show_level": false, "show_log_origin": false }"

Details about the required and optional fields can be found in the swagger definition.

Using command line parameters for configuration

If you want to configure the Logger on startup and without using the API socket, you can do that by passing the parameter --log-path to the Firecracker process:

./firecracker --api-sock /tmp/firecracker.socket --log-path <path_to_the_logging_fifo_or_file>

The other Logger fields have, in this case, the default values: Level -> Warning, show_level -> false, show_log_origin -> false. For configuring these too, you can also pass the following optional parameters: --level <log_level>, --show-level, --show-log-origin:

./firecracker --api-sock /tmp/firecracker.socket --log-path logs.fifo --level Error --show-level --show-log-origin

Reading from the logging destination

The logs.fifo pipe will store the human readable logs, e.g. errors, warnings etc.(depending on the level).

If the path provided is a named pipe, you can use the script below to read from it:

logs=logs.fifo while true do if read line <$logs; then echo $line fi done echo "Reader exiting"

Otherwise, if the path points to a normal file, you can simply do:

cat logs.file