Skip to content
Juvix imports

module arch.node.engines.logging;

import prelude open;
import arch.node.types.engine open;
import arch.node.engines.logging_messages open public;
import arch.node.engines.logging_environment open public;
import arch.node.engines.logging_behaviour open public;
import arch.node.engines.logging_config open public;
import arch.node.types.anoma as Anoma open;

open logging_config_example;
open logging_environment_example;

Logging Engine

Purpose

The Logging Engine provides capabilities for recording, monitoring, analyzing, and managing events and activities locally on the physical machine that the Anoma node is running. It supports diagnostic efforts, security monitoring, performance optimization, and historical analysis to ensure stability, security, and efficiency.

Components

Type

LoggingEngine : Type :=
Engine
LoggingCfg
LoggingLocalState
LoggingMailboxState
LoggingTimerHandle
LoggingActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;

Example of a logging engine

exampleLoggingEngine : LoggingEngine :=
mkEngine@{
cfg := loggingCfg;
env := loggingEnv;
behaviour := loggingBehaviour;
};

where loggingCfg is defined as follows:

loggingCfg : EngineCfg LoggingCfg :=
mkEngineCfg@{
node := Curve25519PubKey "0xabcd1234";
name := "logging";
cfg := mkLoggingCfg;
};

loggingEnv is defined as follows:

loggingEnv : LoggingEnv :=
mkEngineEnv@{
localState :=
mkLoggingLocalState@{
logbook := [];
};
mailboxCluster := Map.empty;
acquaintances := Set.empty;
timers := [];
};

and loggingBehaviour is defined as follows:

loggingBehaviour : LoggingBehaviour :=
mkEngineBehaviour@{
guards := First [appendLogGuard];
};