/* * Copyright 2023 Fluence Labs Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import debug from 'debug'; import { Buffer } from 'buffer'; // Format avm data as a string debug.formatters.a = (avmData: Uint8Array) => { return new TextDecoder().decode(Buffer.from(avmData)); }; type Logger = (formatter: any, ...args: any[]) => void; export interface CommonLogger { error: Logger; trace: Logger; debug: Logger; } export interface MarineLogger { warn: Logger; error: Logger; debug: Logger; trace: Logger; info: Logger; } export function logger(name: string): CommonLogger { return { error: debug(`fluence:${name}:error`), trace: debug(`fluence:${name}:trace`), debug: debug(`fluence:${name}:debug`), }; } export function marineLogger(serviceId: string): MarineLogger { const name = `fluence:marine:${serviceId}`; return { warn: debug(`${name}:warn`), error: debug(`${name}:error`), debug: debug(`${name}:debug`), trace: debug(`${name}:trace`), info: debug(`${name}:info`), }; } export function disable() { debug.disable(); } export function enable(namespaces: string) { debug.enable(namespaces); } export function enabled(namespaces: string) { return debug.enabled(namespaces); }