wasmcloud-interface-logging

Crates.iowasmcloud-interface-logging
lib.rswasmcloud-interface-logging
version0.11.0
sourcesrc
created_at2021-08-17 07:17:49.59403
updated_at2023-09-19 21:40:10.316167
descriptioninterface for logging capability provider (wasmcloud:builtin:logging)
homepagehttps://github.com/wasmcloud/wasmcloud
repositoryhttps://github.com/wasmcloud/interfaces
max_upload_size
id438325
size15,936
wasmCloud Automation Bot (wasmcloud-automation)

documentation

README

crates.io  TinyGo Version

wasmCloud Builtin Logging Interface

This interface defines the wasmCloud built-in logging interface that comes with each of our supported host runtimes. Actors that use this interface must have the capability contract wasmcloud:builtin:logging in their claims list (wash claims sign --logging).

Capability Provider Implementations

There are no external implementations for this provider as they are built directly into the host runtime.

Example Usage

🦀 Rust

Logging at all available levels:

use wasmbus_rpc::actor::prelude::RpcResult;
use wasmcloud_interface_logging::{debug, error, info, warn};

// Note: The function you're logging in _must_ be async. This is due to the
// way our logging macros work and is a known limitation of actor logging
async fn log_to_all() -> RpcResult<()> {
    debug!("Watch out for moths");
    info!("This is an info level log!");
    warn!("Some viewers may find the following log disturbing");
    error!("I can't let you do that, Dave");

    Ok(())
}

🐭 Golang

import (
	"github.com/wasmcloud/actor-tinygo"
	httpserver "github.com/wasmcloud/interfaces/httpserver/tinygo"
	logging "github.com/wasmcloud/interfaces/logging/tinygo"
)

type Actor struct {
	logger *logging.LoggingSender
}

func main() {
	me := Actor{
		logger: logging.NewProviderLogging(),
	}
 
    // The calls to WriteLog require an actor.Context that is
    // accessed from any invocation 
    actor.RegisterHandlers(httpserver.HttpServerHandler(&me))
}

func (e *Actor) HandleRequest(ctx *actor.Context, req httpserver.HttpRequest) (*httpserver.HttpResponse, error) {    
    _ = e.logger.WriteLog(ctx, logging.LogEntry{Level: "debug", Text: "This is a debug log"})
    _ = e.logger.WriteLog(ctx, logging.LogEntry{Level: "info",  Text: "This is an info log"})
    _ = e.logger.WriteLog(ctx, logging.LogEntry{Level: "warn",  Text: "This is a warn log"})
    _ = e.logger.WriteLog(ctx, logging.LogEntry{Level: "error", Text: "This is an error log"})
 
    return nil, nil
}
Commit count: 313

cargo fmt