4.8 KiB
title |
---|
Controlling Logging |
:material-image-off: Controlling Logging
Controlling How InvokeAI Logs Status Messages
InvokeAI logs status messages using a configurable logging system. You can log to the terminal window, to a designated file on the local machine, to the syslog facility on a Linux or Mac, or to a properly configured web server. You can configure several logs at the same time, and control the level of message logged and the logging format (to a limited extent).
Three command-line options control logging:
--log_handlers <handler1> <handler2> ...
This option activates one or more log handlers. Options are "console", "file", "syslog" and "http". To specify more than one, separate them by spaces:
invokeai-web --log_handlers console syslog=/dev/log file=C:\Users\fred\invokeai.log
The format of these options is described below.
--log_format {plain|color|legacy|syslog}
This controls the format of log messages written to the console. Only the "console" log handler is currently affected by this setting.
- "plain" provides formatted messages like this:
[2023-05-24 23:18:2[2023-05-24 23:18:50,352]::[InvokeAI]::DEBUG --> this is a debug message
[2023-05-24 23:18:50,352]::[InvokeAI]::INFO --> this is an informational messages
[2023-05-24 23:18:50,352]::[InvokeAI]::WARNING --> this is a warning
[2023-05-24 23:18:50,352]::[InvokeAI]::ERROR --> this is an error
[2023-05-24 23:18:50,352]::[InvokeAI]::CRITICAL --> this is a critical error
-
"color" produces similar output, but the text will be color coded to indicate the severity of the message.
-
"legacy" produces output similar to InvokeAI versions 2.3 and earlier:
### this is a critical error
*** this is an error
** this is a warning
>> this is an informational messages
| this is a debug message
- "syslog" produces messages suitable for syslog entries:
InvokeAI [2691178] <CRITICAL> this is a critical error
InvokeAI [2691178] <ERROR> this is an error
InvokeAI [2691178] <WARNING> this is a warning
InvokeAI [2691178] <INFO> this is an informational messages
InvokeAI [2691178] <DEBUG> this is a debug message
(note that the date, time and hostname will be added by the syslog system)
--log_level {debug|info|warning|error|critical}
Providing this command-line option will cause only messages at the specified level or above to be emitted.
Console logging
When "console" is provided to --log_handlers
, messages will be
written to the command line window in which InvokeAI was launched. By
default, the color formatter will be used unless overridden by
--log_format
.
File logging
When "file" is provided to --log_handlers
, entries will be written
to the file indicated in the path argument. By default, the "plain"
format will be used:
invokeai-web --log_handlers file=/var/log/invokeai.log
Syslog logging
When "syslog" is requested, entries will be sent to the syslog system. There are a variety of ways to control where the log message is sent:
- Send to the local machine using the
/dev/log
socket:
invokeai-web --log_handlers syslog=/dev/log
- Send to the local machine using a UDP message:
invokeai-web --log_handlers syslog=localhost
- Send to the local machine using a UDP message on a nonstandard port:
invokeai-web --log_handlers syslog=localhost:512
- Send to a remote machine named "loghost" on the local LAN using facility LOG_USER and UDP packets:
invokeai-web --log_handlers syslog=loghost,facility=LOG_USER,socktype=SOCK_DGRAM
This can be abbreviated syslog=loghost
, as LOG_USER and SOCK_DGRAM
are defaults.
- Send to a remote machine named "loghost" using the facility LOCAL0 and using a TCP socket:
invokeai-web --log_handlers syslog=loghost,facility=LOG_LOCAL0,socktype=SOCK_STREAM
If no arguments are specified (just a bare "syslog"), then the logging
system will look for a UNIX socket named /dev/log
, and if not found
try to send a UDP message to localhost
. The Macintosh OS used to
support logging to a socket named /var/run/syslog
, but this feature
has since been disabled.
Web logging
If you have access to a web server that is configured to log messages when a particular URL is requested, you can log using the "http" method:
invokeai-web --log_handlers http=http://my.server/path/to/logger,method=POST
The optional [,method=] part can be used to specify whether the URL accepts GET (default) or POST messages.
Currently password authentication and SSL are not supported.
Using the configuration file
You can set and forget logging options by adding a "Logging" section
to invokeai.yaml
:
InvokeAI:
[... other settings...]
Logging:
log_handlers:
- console
- syslog=/dev/log
log_level: info
log_format: color