Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

polywrap_logger_plugin-0.1.0a1.tar.gz (2.5 kB view details)

Uploaded Source

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

Hashes for polywrap_logger_plugin-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 fafaaabb0acb1d4267617b9320f2c586ef0e5179f24f22b9429cc19eefa9e9c9
MD5 6bda8d8059e29ee32d7a61a7f08393a7
BLAKE2b-256 3d16713d3791c42c0a4746217f4acb7235392ad82523c26b9009745bbb2dba65

See more details on using hashes here.

File details

Details for the file polywrap_logger_plugin-0.1.0a1-py3-none-any.whl.

File metadata

File hashes

Hashes for polywrap_logger_plugin-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 86b04b1edd6d8136f204440647a69a7abd9f14d74201400c824bc83e7c11a0f7
MD5 94321e62ae8c5cfaa80fec6e28615369
BLAKE2b-256 35bf9e6689193bd4b49c9e81e02873088878f2c25d2e941aaa7b1f6ee958e19c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page