Skip to content

Core Web3API: Logging #185

@dOrgJelli

Description

@dOrgJelli

Create a "Core Web3API" for Web3API developers to use for logging information, warnings, and errors. Clients must provide a default plugin that implements this core API. App developers can always override it using a uri redirect.

Here're some "half baked" implementation details...

URI: w3://w3/logger

Schema:

# taken from https://www.tutorialspoint.com/log4j/log4j_logging_levels.htm
enum LogLevel {
  ALL,
  DEBUG,
  INFO,
  WARN,
  ERROR,
  FATAL
}

type Query {
  log(
    level: LogLevel!
    message: String!
  ): Boolean!
}

Auto-Generated Helper WASM Code (Assemblyscript):

enum LogLevel {
  ALL,
  DEBUG,
  INFO,
  ...
}

class Console {
  static log(message: string): boolean {
    return logger_query_log(LogLevel.INFO, message);
  }

  static error(message: string): boolean {
    return logger_query_log(LogLevel.ERROR, message);
  }
  
  ...
}

function logger_query_log(level: LogLevel, message: string): boolean {
  const argsBuf = serializelogArgs(level, message);
  const result = w3_query(
    "w3://w3/logger",
    "query",
    "log",
    argsBuf
  );
  return deserializelogResult(result);
}

Web3API Developer Experience (Assemblyscript):

import { Console } from "./w3";

function someFunc() {
  Console.log("some useful info about my API");
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions