From c08e858b2f46abc1a87697c41f2682a97164a6af Mon Sep 17 00:00:00 2001 From: winprn Date: Tue, 29 Oct 2024 12:28:22 +0700 Subject: [PATCH] feat: use new log in network package --- packages/network/package.json | 115 +++++++++++++++++---------------- packages/network/src/node.ts | 56 ++++++++-------- packages/network/tsconfig.json | 5 ++ 3 files changed, 94 insertions(+), 82 deletions(-) diff --git a/packages/network/package.json b/packages/network/package.json index f013867c..4cf631c9 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -1,59 +1,62 @@ { - "name": "@topology-foundation/network", - "version": "0.2.0", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/topology-foundation/ts-topology.git" - }, - "type": "module", - "types": "./dist/src/index.d.ts", - "files": [ - "src", - "dist", - "!dist/test", - "!**/*.tsbuildinfo" - ], - "exports": { - ".": { - "types": "./dist/src/index.d.ts", - "import": "./dist/src/index.js" + "name": "@topology-foundation/network", + "version": "0.2.0", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/topology-foundation/ts-topology.git" + }, + "type": "module", + "types": "./dist/src/index.d.ts", + "files": [ + "src", + "dist", + "!dist/test", + "!**/*.tsbuildinfo" + ], + "exports": { + ".": { + "types": "./dist/src/index.d.ts", + "import": "./dist/src/index.js" + } + }, + "scripts": { + "build": "tsc -b", + "clean": "rm -rf dist/ node_modules/", + "prepack": "tsc -b", + "test": "vitest" + }, + "devDependencies": { + "@libp2p/interface": "^2.1.3", + "react-native-webrtc": "^124.0.3" + }, + "dependencies": { + "@bufbuild/protobuf": "^2.0.0", + "@chainsafe/libp2p-gossipsub": "^14.1.0", + "@chainsafe/libp2p-noise": "^16.0.0", + "@chainsafe/libp2p-yamux": "^7.0.1", + "@libp2p/autonat": "^2.0.6", + "@libp2p/bootstrap": "^11.0.6", + "@libp2p/circuit-relay-v2": "^2.1.2", + "@libp2p/crypto": "^5.0.5", + "@libp2p/dcutr": "^2.0.6", + "@libp2p/devtools-metrics": "^1.1.5", + "@libp2p/identify": "^3.0.6", + "@libp2p/mdns": "^11.0.8", + "@libp2p/peer-id": "^5.0.4", + "@libp2p/pubsub-peer-discovery": "^11.0.0", + "@libp2p/webrtc": "^5.0.9", + "@libp2p/websockets": "^9.0.7", + "@libp2p/webtransport": "^5.0.9", + "@multiformats/multiaddr": "^12.3.1", + "@topology-foundation/logger": "0.2.0", + "it-length-prefixed": "^9.1.0", + "it-map": "^3.1.1", + "it-pipe": "^3.0.1", + "libp2p": "^2.1.6", + "loglevel": "^1.9.2", + "loglevel-plugin-prefix": "^0.8.4", + "ts-proto": "^2.2.4", + "uint8arrays": "^5.1.0" } - }, - "scripts": { - "build": "tsc -b", - "clean": "rm -rf dist/ node_modules/", - "prepack": "tsc -b", - "test": "vitest" - }, - "devDependencies": { - "@libp2p/interface": "^2.1.3", - "react-native-webrtc": "^124.0.3" - }, - "dependencies": { - "@bufbuild/protobuf": "^2.0.0", - "@chainsafe/libp2p-gossipsub": "^14.1.0", - "@chainsafe/libp2p-noise": "^16.0.0", - "@chainsafe/libp2p-yamux": "^7.0.1", - "@libp2p/autonat": "^2.0.6", - "@libp2p/bootstrap": "^11.0.6", - "@libp2p/circuit-relay-v2": "^2.1.2", - "@libp2p/crypto": "^5.0.5", - "@libp2p/dcutr": "^2.0.6", - "@libp2p/devtools-metrics": "^1.1.5", - "@libp2p/identify": "^3.0.6", - "@libp2p/mdns": "^11.0.8", - "@libp2p/peer-id": "^5.0.4", - "@libp2p/pubsub-peer-discovery": "^11.0.0", - "@libp2p/webrtc": "^5.0.9", - "@libp2p/websockets": "^9.0.7", - "@libp2p/webtransport": "^5.0.9", - "@multiformats/multiaddr": "^12.3.1", - "it-length-prefixed": "^9.1.0", - "it-map": "^3.1.1", - "it-pipe": "^3.0.1", - "libp2p": "^2.1.6", - "ts-proto": "^2.2.4", - "uint8arrays": "^5.1.0" - } } diff --git a/packages/network/src/node.ts b/packages/network/src/node.ts index bef3afb5..e88b0a23 100644 --- a/packages/network/src/node.ts +++ b/packages/network/src/node.ts @@ -31,9 +31,14 @@ import { type Libp2p, createLibp2p } from "libp2p"; import { fromString as uint8ArrayFromString } from "uint8arrays/from-string"; import { Message } from "./proto/messages_pb.js"; import { uint8ArrayToStream } from "./stream.js"; +import type { LoggerOptions } from "@topology-foundation/logger"; +import loglevel from "loglevel"; +import prefix from "loglevel-plugin-prefix"; export * from "./stream.js"; +let log: loglevel.Logger; + // snake_casing to match the JSON config export interface TopologyNetworkNodeConfig { addresses?: string[]; @@ -41,6 +46,7 @@ export interface TopologyNetworkNodeConfig { bootstrap_peers?: string[]; browser_metrics?: boolean; private_key_seed?: string; + log_config?: LoggerOptions; } export class TopologyNetworkNode { @@ -52,6 +58,14 @@ export class TopologyNetworkNode { constructor(config?: TopologyNetworkNodeConfig) { this._config = config; + log = loglevel.getLogger("topology::network"); + log.setLevel( + (this._config?.log_config?.level as loglevel.LogLevelDesc) || "info", + ); + prefix.reg(loglevel); + prefix.apply(log, { + template: "%n", + }); } async start() { @@ -130,62 +144,52 @@ export class TopologyNetworkNode { this._pubsub = this._node.services.pubsub as PubSub; this.peerId = this._node.peerId.toString(); - console.log( - "topology::network::start: Successfuly started topology network w/ peer_id", + log.info( + "::start: Successfuly started topology network w/ peer_id", this.peerId, ); this._node.addEventListener("peer:connect", (e) => - console.log("::start::peer::connect", e.detail), + log.info("::start::peer::connect", e.detail), ); this._node.addEventListener("peer:discovery", (e) => { // current bug in v11.0.0 requires manual dial (https://github.com/libp2p/js-libp2p-pubsub-peer-discovery/issues/149) for (const ma of e.detail.multiaddrs) { this._node?.dial(ma); } - console.log("::start::peer::discovery", e.detail); + log.info("::start::peer::discovery", e.detail); }); this._node.addEventListener("peer:identify", (e) => - console.log("::start::peer::identify", e.detail), + log.info("::start::peer::identify", e.detail), ); } subscribe(topic: string) { if (!this._node) { - console.error( - "topology::network::subscribe: Node not initialized, please run .start()", - ); + log.error("::subscribe: Node not initialized, please run .start()"); return; } try { this._pubsub?.subscribe(topic); this._pubsub?.getPeers(); - console.log( - "topology::network::subscribe: Successfuly subscribed the topic", - topic, - ); + log.info("::subscribe: Successfuly subscribed the topic", topic); } catch (e) { - console.error("topology::network::subscribe:", e); + log.error("::subscribe:", e); } } unsubscribe(topic: string) { if (!this._node) { - console.error( - "topology::network::unsubscribe: Node not initialized, please run .start()", - ); + log.error("::unsubscribe: Node not initialized, please run .start()"); return; } try { this._pubsub?.unsubscribe(topic); - console.log( - "topology::network::unsubscribe: Successfuly unsubscribed the topic", - topic, - ); + log.info("::unsubscribe: Successfuly unsubscribed the topic", topic); } catch (e) { - console.error("topology::network::unsubscribe:", e); + log.error("::unsubscribe:", e); } } @@ -206,12 +210,12 @@ export class TopologyNetworkNode { const messageBuffer = Message.encode(message).finish(); await this._pubsub?.publish(topic, messageBuffer); - console.log( - "topology::network::broadcastMessage: Successfuly broadcasted message to topic", + log.info( + "::broadcastMessage: Successfuly broadcasted message to topic", topic, ); } catch (e) { - console.error("topology::network::broadcastMessage:", e); + log.error("::broadcastMessage:", e); } } @@ -222,7 +226,7 @@ export class TopologyNetworkNode { const messageBuffer = Message.encode(message).finish(); uint8ArrayToStream(stream, messageBuffer); } catch (e) { - console.error("topology::network::sendMessage:", e); + log.error("::sendMessage:", e); } } @@ -241,7 +245,7 @@ export class TopologyNetworkNode { const messageBuffer = Message.encode(message).finish(); uint8ArrayToStream(stream, messageBuffer); } catch (e) { - console.error("topology::network::sendMessageRandomTopicPeer:", e); + log.error("::sendMessageRandomTopicPeer:", e); } } diff --git a/packages/network/tsconfig.json b/packages/network/tsconfig.json index 9cc8b37c..48e3023f 100644 --- a/packages/network/tsconfig.json +++ b/packages/network/tsconfig.json @@ -3,5 +3,10 @@ "compilerOptions": { "outDir": "dist" }, + "references": [ + { + "path": "../logger" + } + ], "include": ["src/**/*.ts"] }