No project description provided
Project description
Logger Python Plugin
The Logger plugin implements the logger-interface
from the ens/wraps.eth:logger@1.0.0
package (see ./src/schema.graphql). By default, it logs all events using the Python logging
module. You can customize this behavior by setting the Logger
property on the plugin's configuration object (examples below).
Usage
1. Configure Client
When creating your Polywrap Python client, add the logger plugin:
from polywrap_client_config_builder import PolywrapClientConfigBuilder
from polywrap_logger_plugin import logger_plugin
from polywrap_client import PolywrapClient
config = PolywrapClientConfigBuilder().set_package(
uri=Uri.from_str("plugin/logger"),
package=logger_plugin()
).set_interface(
interface=Uri.from_str("ens/wraps.eth:logger@1.0.0"),
implementations=[Uri.from_str("plugin/logger")]
).set_redirect(
Uri.from_str("ens/wraps.eth:logger@1.0.0"),
Uri.from_str("plugin/logger")
).build()
client = PolywrapClient(config)
2. Invoke The Logger
Invocations to the logger plugin can be made via the interface URI (which will get redirected), or the plugin's URI directly:
await client.invoke({
'uri': 'ens/wraps.eth:logger@1.0.0' | 'plugin/logger',
'method': 'log',
'args': {
'level': 'INFO',
'message': 'foo bar baz'
}
})
3. Customize The Logger
When adding the logger to your client, you can add your own custom log function:
config = PolywrapClientConfigBuilder().set_package(
uri=Uri.from_str("plugin/logger"),
package=logger_plugin(LoggerConfig(logger=YourLogger(), level=LogLevel.INFO))
).set_interface(
interface=Uri.from_str("ens/wraps.eth:logger@1.0.0"),
implementations=[Uri.from_str("plugin/logger")]
).set_redirect(
Uri.from_str("ens/wraps.eth:logger@1.0.0"),
Uri.from_str("plugin/logger")
).build()
4. Add Multiple Loggers
Multiple logger implementations can be added to the client:
config = PolywrapClientConfigBuilder().set_package(
uri=Uri.from_str("plugin/logger"),
package=logger_plugin(LoggerConfig(logger=YourLogger(), level=LogLevel.INFO))
).set_interface(
interface=Uri.from_str("ens/wraps.eth:logger@1.0.0"),
implementations=[Uri.from_str("plugin/logger"), Uri.from_str("plugin/custom-logger")]
).set_package(
uri=Uri.from_str("plugin/custom-logger"),
package=custom_logger_plugin()
).build()
5. Invoke All Logger Implementations
When you'd like to log something to more than one logger, you can invoke all implementations of the logger interface:
implementations = client.get_implementations('ens/wraps.eth:logger@1.0.0')
for impl in implementations:
await client.invoke({
'uri': impl,
'method': 'log',
'args': {
'level': 'INFO',
'message': 'message'
}
})
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file polywrap_logger_plugin-0.1.0a1.tar.gz
.
File metadata
- Download URL: polywrap_logger_plugin-0.1.0a1.tar.gz
- Upload date:
- Size: 2.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.11 Linux/5.15.0-1036-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fafaaabb0acb1d4267617b9320f2c586ef0e5179f24f22b9429cc19eefa9e9c9 |
|
MD5 | 6bda8d8059e29ee32d7a61a7f08393a7 |
|
BLAKE2b-256 | 3d16713d3791c42c0a4746217f4acb7235392ad82523c26b9009745bbb2dba65 |
File details
Details for the file polywrap_logger_plugin-0.1.0a1-py3-none-any.whl
.
File metadata
- Download URL: polywrap_logger_plugin-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 2.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.11 Linux/5.15.0-1036-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86b04b1edd6d8136f204440647a69a7abd9f14d74201400c824bc83e7c11a0f7 |
|
MD5 | 94321e62ae8c5cfaa80fec6e28615369 |
|
BLAKE2b-256 | 35bf9e6689193bd4b49c9e81e02873088878f2c25d2e941aaa7b1f6ee958e19c |