NVIDIA FLARE Logging Configuration

NVFLARE uses python logging, specifically fileConfig( configure https://docs.python.org/3/library/logging.config.html)

We provide default logging configuration files for NVFLARE sub-systems. You can overwrite these logging configurations by modifying the configuration files.

Logging configuration files location

Startup kits log configurations

The log configuration files are located in the startup kits under the local directory.

If you search for the log.config.* files in the startup kits workspace, you will find the following files:

find . -name "log.config.*"

./site-1/local/log.config.default
./site-2/local/log.config.default
./server1/local/log.config.default

The server log.config.default is the default logging configuration used by the FL Server and clients. To overwrite the default, you can change log.config.default to log.config and modify the configuration.

POC log configurations

Similarly, if you search the POC workspace, you will find the following:

find /tmp/nvflare/poc  -name "log.config*"

/tmp/nvflare/poc/server/local/log.config
/tmp/nvflare/poc/site-1/local/log.config
/tmp/nvflare/poc/site-2/local/log.config

You can directly modify log.config to make changes.

Simulator log configuration

Simulator logging configuration uses the default log configuration. If you want to overwrite the default configuration, you can add log.config to <simulator_workspace>/startup/log.config.

For example, for hello-numpy-sag examples, the CLI command is:

nvflare simulator -w /tmp/nvflare/hello-numpy-sag -n 2 -t 2 hello-world/hello-numpy-sag/jobs/hello-numpy-sag

If the workspace is /tmp/nvflare/hello-numpy-sag/, then you can add log.config in /tmp/nvflare/hello-numpy-sag/startup/log.config to overwrite the default one.

Configuration logging

The default logging file-config based logging configuration is the following:

[loggers]
keys=root

[handlers]
keys=consoleHandler

[formatters]
keys=fullFormatter

[logger_root]
level=INFO
handlers=consoleHandler

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=fullFormatter
args=(sys.stdout,)

[formatter_fullFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

Suppose we would like to change the logging for ScatterAndGather from to INFO to ERROR, we can do the following:

[loggers]
keys=root, ScatterAndGather

[handlers]
keys=consoleHandler

[formatters]
keys=fullFormatter

[logger_root]
level=INFO
handlers=consoleHandler

[logger_ScatterAndGather]
level=ERROR
handlers=consoleHandler
qualname=ScatterAndGather
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=fullFormatter
args=(sys.stdout,)

[formatter_fullFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s