Pydantic Validation¶
Pydantic Logfire has a Pydantic Validation plugin to instrumentPydantic Validation models.The plugin provides logs and metrics about model validation.
To enable the plugin, do one of the following:
- Set the
LOGFIRE_PYDANTIC_PLUGIN_RECORD
environment variable toall
. - Set
pydantic_plugin_record
inpyproject.toml
, e.g:
[tool.logfire]pydantic_plugin_record="all"
- Call
logfire.instrument_pydantic
with the desired configuration, e.g:
importlogfirelogfire.instrument_pydantic()# Defaults to record='all'
Note that if you only use the last option then only model classes defined and importedafter callinglogfire.instrument_pydantic
will be instrumented.
Note
Remember to calllogfire.configure()
at some point, whether before or aftercallinglogfire.instrument_pydantic
and defining model classes.Model validations will only start being logged after callinglogfire.configure()
.
Third party modules¶
By default, third party modules are not instrumented by the plugin to avoid noise. You can enable instrumentation for thoseusing theinclude
configuration.
logfire.instrument_pydantic(include={'openai'})
You can also disable instrumentation for your own modules using theexclude
configuration.
logfire.instrument_pydantic(exclude={'app.api.v1'})
Model configuration¶
If you want more granular control over the plugin, you can use theplugin_settings
class parameter in your Pydantic models.
fromlogfire.integrations.pydanticimportPluginSettingsfrompydanticimportBaseModelclassFoo(BaseModel,plugin_settings=PluginSettings(logfire={'record':'failure'})):...
Record¶
Therecord
argument is used to configure what to record.It can be one of the following values:
all
: Send traces and metrics for all events. This is default value forlogfire.instrument_pydantic
.failure
: Send metrics for all validations and traces only for validation failures.metrics
: Send only metrics.off
: Disable instrumentation.
Tags¶
Tags are used to add additional information to the traces, and metrics. They can be included byadding thetags
key inplugin_settings
.
frompydanticimportBaseModelclassFoo(BaseModel,plugin_settings={'logfire':{'record':'all','tags':('tag1','tag2')}}):