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: ```rust use wasmbusrpc::actor::prelude::RpcResult; use wasmcloudinterface_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 logtoall() -> 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

```go 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

} ```