diff --git a/src/app.module.ts b/src/app.module.ts index 984c5fa800..3cc381ba2f 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,13 +1,20 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; -import { SharedModule } from './shared/shared.module'; import { GetConfig } from './config/config'; import { IntegrationModule } from './integration/integration.module'; +import { LoggerModule } from './logger/logger.module'; +import { SharedModule } from './shared/shared.module'; import { SubdomainsModule } from './subdomains/subdomains.module'; @Module({ - imports: [TypeOrmModule.forRoot(GetConfig().database), SharedModule, IntegrationModule, SubdomainsModule], + imports: [ + TypeOrmModule.forRoot(GetConfig().database), + SharedModule, + IntegrationModule, + SubdomainsModule, + LoggerModule, + ], controllers: [AppController], providers: [], exports: [], diff --git a/src/integration/alchemy/controllers/alchemy.controller.ts b/src/integration/alchemy/controllers/alchemy.controller.ts index f57ebf14dd..b17db259e8 100644 --- a/src/integration/alchemy/controllers/alchemy.controller.ts +++ b/src/integration/alchemy/controllers/alchemy.controller.ts @@ -13,10 +13,11 @@ import { import { AuthGuard } from '@nestjs/passport'; import { ApiBearerAuth, ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger'; import { Request } from 'express'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RoleGuard } from 'src/shared/auth/role.guard'; import { UserActiveGuard } from 'src/shared/auth/user-active.guard'; import { UserRole } from 'src/shared/auth/user-role.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { AlchemySyncTransactionsDto } from '../dto/alchemy-sync-transactions.dto'; import { AlchemyWebhookDto } from '../dto/alchemy-webhook.dto'; import { AlchemyWebhookService } from '../services/alchemy-webhook.service'; @@ -25,12 +26,15 @@ import { AlchemyService } from '../services/alchemy.service'; @ApiTags('Alchemy') @Controller('alchemy') export class AlchemyController { - private readonly logger = new DfxLogger(AlchemyController); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly alchemyWebhookService: AlchemyWebhookService, private readonly alchemyService: AlchemyService, - ) {} + ) { + this.logger = loggerFactory.create(AlchemyController); + } @Post('addressWebhook') @ApiExcludeEndpoint() diff --git a/src/integration/alchemy/services/alchemy-webhook.service.ts b/src/integration/alchemy/services/alchemy-webhook.service.ts index 95043ca5c5..f3c0582a6e 100644 --- a/src/integration/alchemy/services/alchemy-webhook.service.ts +++ b/src/integration/alchemy/services/alchemy-webhook.service.ts @@ -10,7 +10,8 @@ import { } from 'alchemy-sdk'; import { Observable, Subject, filter } from 'rxjs'; import { Config, GetConfig } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Util } from 'src/shared/utils/util'; import { AlchemyNetworkMapper } from '../alchemy-network-mapper'; import { CreateWebhookDto } from '../dto/alchemy-create-webhook.dto'; @@ -18,15 +19,15 @@ import { AlchemyWebhookDto } from '../dto/alchemy-webhook.dto'; @Injectable() export class AlchemyWebhookService implements OnModuleInit { - private readonly logger = new DfxLogger(AlchemyWebhookService); - + private readonly logger: DfxLogger; private readonly alchemy: Alchemy; private readonly webhookCache: Map; private readonly addressWebhookSubject: Subject; - constructor() { + constructor(readonly loggerFactory: LoggerFactory) { const config = GetConfig(); + this.logger = loggerFactory.create(AlchemyWebhookService); const settings = { apiKey: config.alchemy.apiKey, diff --git a/src/integration/bank/services/olkypay.service.ts b/src/integration/bank/services/olkypay.service.ts index f4370476d0..845edddcce 100644 --- a/src/integration/bank/services/olkypay.service.ts +++ b/src/integration/bank/services/olkypay.service.ts @@ -2,7 +2,8 @@ import { Injectable } from '@nestjs/common'; import { Method } from 'axios'; import { stringify } from 'qs'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { BankTx, BankTxIndicator, BankTxType } from 'src/subdomains/supporting/bank-tx/bank-tx/entities/bank-tx.entity'; @@ -43,14 +44,15 @@ enum TransactionType { @Injectable() export class OlkypayService { - private readonly logger = new DfxLogger(OlkypayService); - + private readonly logger: DfxLogger; private readonly baseUrl = 'https://ws.olkypay.com/reporting'; private readonly loginUrl = 'https://stp.olkypay.com/auth/realms/b2b/protocol/openid-connect/token'; private accessToken = 'access-token-will-be-updated'; - constructor(private readonly http: HttpService) {} + constructor(private readonly http: HttpService, readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(OlkypayService); + } async getOlkyTransactions(lastModificationTime: string, accountIban: string): Promise[]> { if (!Config.bank.olkypay.credentials.clientId) return []; diff --git a/src/integration/bank/services/revolut.service.ts b/src/integration/bank/services/revolut.service.ts index 694f0b741e..99e44497b2 100644 --- a/src/integration/bank/services/revolut.service.ts +++ b/src/integration/bank/services/revolut.service.ts @@ -2,7 +2,8 @@ import { Injectable } from '@nestjs/common'; import { Method } from 'axios'; import { stringify } from 'qs'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { BankTx, BankTxIndicator } from 'src/subdomains/supporting/bank-tx/bank-tx/entities/bank-tx.entity'; @@ -96,14 +97,15 @@ enum TransactionType { @Injectable() export class RevolutService { - private readonly logger = new DfxLogger(RevolutService); - + private readonly logger: DfxLogger; private readonly baseUrl = 'https://b2b.revolut.com/api/1.0'; private readonly loginUrl = 'https://b2b.revolut.com/api/1.0/auth/token'; private accessToken = 'access-token-will-be-updated'; - constructor(private readonly http: HttpService) {} + constructor(private readonly http: HttpService, readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(RevolutService); + } async getRevolutTransactions(lastModificationTime: string, accountIban: string): Promise[]> { if (!Config.bank.revolut.clientAssertion || !Config.bank.revolut.refreshToken) return []; diff --git a/src/integration/binance-pay/services/binance-pay.service.ts b/src/integration/binance-pay/services/binance-pay.service.ts index 94b9bc95f3..7edfa862f9 100644 --- a/src/integration/binance-pay/services/binance-pay.service.ts +++ b/src/integration/binance-pay/services/binance-pay.service.ts @@ -1,7 +1,7 @@ import { BadRequestException, Injectable, ServiceUnavailableException } from '@nestjs/common'; import * as crypto from 'crypto'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { TransferInfo } from 'src/subdomains/core/payment-link/dto/payment-link.dto'; @@ -35,8 +35,6 @@ import { @Injectable() export class BinancePayService implements C2BPaymentLinkProvider { - private readonly logger = new DfxLogger(BinancePayService); - private readonly baseUrl = 'https://bpay.binanceapi.com'; private readonly apiKey: string; private readonly secretKey: string; @@ -49,7 +47,7 @@ export class BinancePayService implements C2BPaymentLinkProvider = new Map(); + private readonly loggerFactory: LoggerFactory; - constructor(private readonly http: HttpService) { + constructor(private readonly http: HttpService, readonly loggerFactory2: LoggerFactory) { super(); + this.loggerFactory = loggerFactory2; + this.initAllNodes(); } @@ -75,7 +76,7 @@ export class BitcoinService extends BlockchainService { } private createNodeClient(url: string | undefined): BitcoinClient | null { - return url ? new BitcoinClient(this.http, url) : null; + return url ? new BitcoinClient(this.loggerFactory, this.http, url) : null; } // --- HELPER METHODS --- // diff --git a/src/integration/blockchain/bitcoin/node/node-client.ts b/src/integration/blockchain/bitcoin/node/node-client.ts index 531e178bce..397dd988d7 100644 --- a/src/integration/blockchain/bitcoin/node/node-client.ts +++ b/src/integration/blockchain/bitcoin/node/node-client.ts @@ -4,7 +4,7 @@ import { AddressType, InWalletTransaction, UTXO } from '@defichain/jellyfish-api import { JsonRpcClient } from '@defichain/jellyfish-api-jsonrpc'; import { ServiceUnavailableException } from '@nestjs/common'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { HttpService } from 'src/shared/services/http.service'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { Util } from 'src/shared/utils/util'; @@ -20,8 +20,7 @@ export enum NodeCommand { } export abstract class NodeClient extends BlockchainClient { - private readonly logger = new DfxLogger(NodeClient); - + protected abstract readonly logger: DfxLogger; protected chain = Config.network; private readonly client: ApiClient; private readonly queue: QueueHandler; diff --git a/src/integration/blockchain/bsc/bsc.service.ts b/src/integration/blockchain/bsc/bsc.service.ts index a16bd86563..38d406f311 100644 --- a/src/integration/blockchain/bsc/bsc.service.ts +++ b/src/integration/blockchain/bsc/bsc.service.ts @@ -1,13 +1,14 @@ import { Injectable } from '@nestjs/common'; import { GetConfig } from 'src/config/config'; import { AlchemyService } from 'src/integration/alchemy/services/alchemy.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { EvmService } from '../shared/evm/evm.service'; import { BscClient } from './bsc-client'; @Injectable() export class BscService extends EvmService { - constructor(http: HttpService, alchemyService: AlchemyService) { + constructor(http: HttpService, alchemyService: AlchemyService, loggerFactory: LoggerFactory) { const { bscGatewayUrl, bscApiKey, bscWalletPrivateKey, bscChainId, swapContractAddress, quoteContractAddress } = GetConfig().blockchain.bsc; @@ -18,6 +19,7 @@ export class BscService extends EvmService { apiKey: bscApiKey, walletPrivateKey: bscWalletPrivateKey, chainId: bscChainId, + loggerFactory, swapContractAddress, quoteContractAddress, }); diff --git a/src/integration/blockchain/deuro/deuro.service.ts b/src/integration/blockchain/deuro/deuro.service.ts index 376e106920..81a1326e66 100644 --- a/src/integration/blockchain/deuro/deuro.service.ts +++ b/src/integration/blockchain/deuro/deuro.service.ts @@ -2,6 +2,8 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { ModuleRef } from '@nestjs/core'; import { CronExpression } from '@nestjs/schedule'; import { Contract } from 'ethers'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; import { Process } from 'src/shared/services/process.service'; @@ -33,6 +35,8 @@ export class DEuroService extends FrankencoinBasedService implements OnModuleIni private static readonly LOG_SYSTEM = 'EvmInformation'; private static readonly LOG_SUBSYSTEM = 'DEuroSmartContract'; + protected readonly logger: DfxLogger; + private usd: Fiat; private eur: Fiat; private chf: Fiat; @@ -42,11 +46,14 @@ export class DEuroService extends FrankencoinBasedService implements OnModuleIni private frankencoinService: FrankencoinService; constructor( + readonly loggerFactory: LoggerFactory, private readonly moduleRef: ModuleRef, private readonly logService: LogService, private readonly fiatService: FiatService, ) { super(); + + this.logger = this.loggerFactory.create(DEuroService); } async onModuleInit() { diff --git a/src/integration/blockchain/ebel2x/ebel2x.service.ts b/src/integration/blockchain/ebel2x/ebel2x.service.ts index 97b56c7cd3..3d278dcd3d 100644 --- a/src/integration/blockchain/ebel2x/ebel2x.service.ts +++ b/src/integration/blockchain/ebel2x/ebel2x.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { GetConfig } from 'src/config/config'; import { AlchemyService } from 'src/integration/alchemy/services/alchemy.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { EvmService } from '../shared/evm/evm.service'; import { EvmUtil } from '../shared/evm/evm.util'; @@ -8,7 +9,7 @@ import { Ebel2xClient } from './ebel2x-client'; @Injectable() export class Ebel2xService extends EvmService { - constructor(http: HttpService, alchemyService: AlchemyService) { + constructor(http: HttpService, alchemyService: AlchemyService, loggerFactory: LoggerFactory) { const { arbitrumGatewayUrl, arbitrumApiKey, @@ -25,6 +26,7 @@ export class Ebel2xService extends EvmService { apiKey: arbitrumApiKey, walletPrivateKey: arbitrumWalletPrivateKey, chainId: arbitrumChainId, + loggerFactory, swapContractAddress, quoteContractAddress, }); diff --git a/src/integration/blockchain/ethereum/ethereum.service.ts b/src/integration/blockchain/ethereum/ethereum.service.ts index 8324efdd81..99288eed04 100644 --- a/src/integration/blockchain/ethereum/ethereum.service.ts +++ b/src/integration/blockchain/ethereum/ethereum.service.ts @@ -1,13 +1,14 @@ import { Injectable } from '@nestjs/common'; import { GetConfig } from 'src/config/config'; import { AlchemyService } from 'src/integration/alchemy/services/alchemy.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { EvmService } from '../shared/evm/evm.service'; import { EthereumClient } from './ethereum-client'; @Injectable() export class EthereumService extends EvmService { - constructor(http: HttpService, alchemyService: AlchemyService) { + constructor(http: HttpService, alchemyService: AlchemyService, loggerFactory: LoggerFactory) { const { ethGatewayUrl, ethApiKey, ethWalletPrivateKey, ethChainId, swapContractAddress, quoteContractAddress } = GetConfig().blockchain.ethereum; @@ -18,6 +19,7 @@ export class EthereumService extends EvmService { apiKey: ethApiKey, walletPrivateKey: ethWalletPrivateKey, chainId: ethChainId, + loggerFactory, swapContractAddress, quoteContractAddress, }); diff --git a/src/integration/blockchain/frankencoin/frankencoin.service.ts b/src/integration/blockchain/frankencoin/frankencoin.service.ts index 5cdb421bd8..55b598d723 100644 --- a/src/integration/blockchain/frankencoin/frankencoin.service.ts +++ b/src/integration/blockchain/frankencoin/frankencoin.service.ts @@ -3,6 +3,8 @@ import { ModuleRef } from '@nestjs/core'; import { CronExpression } from '@nestjs/schedule'; import { Contract } from 'ethers'; import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; import { Process } from 'src/shared/services/process.service'; @@ -34,17 +36,22 @@ export class FrankencoinService extends FrankencoinBasedService implements OnMod private static readonly LOG_SYSTEM = 'EvmInformation'; private static readonly LOG_SUBSYSTEM = 'FrankencoinSmartContract'; + protected readonly logger: DfxLogger; + private usd: Fiat; private chf: Fiat; private frankencoinClient: FrankencoinClient; constructor( + readonly loggerFactory: LoggerFactory, private readonly moduleRef: ModuleRef, private readonly logService: LogService, private readonly fiatService: FiatService, ) { super(); + + this.logger = this.loggerFactory.create(FrankencoinService); } async onModuleInit() { diff --git a/src/integration/blockchain/gnosis/gnosis-client.ts b/src/integration/blockchain/gnosis/gnosis-client.ts index 836797938a..e3a133eefb 100644 --- a/src/integration/blockchain/gnosis/gnosis-client.ts +++ b/src/integration/blockchain/gnosis/gnosis-client.ts @@ -1,11 +1,8 @@ import { FeeAmount } from '@uniswap/v3-sdk'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmClient, EvmClientParams } from '../shared/evm/evm-client'; export class GnosisClient extends EvmClient { - private readonly logger = new DfxLogger(GnosisClient); - constructor(params: EvmClientParams) { super(params); } diff --git a/src/integration/blockchain/gnosis/gnosis.service.ts b/src/integration/blockchain/gnosis/gnosis.service.ts index f6638f0944..24ef93f914 100644 --- a/src/integration/blockchain/gnosis/gnosis.service.ts +++ b/src/integration/blockchain/gnosis/gnosis.service.ts @@ -1,13 +1,14 @@ import { Injectable } from '@nestjs/common'; import { GetConfig } from 'src/config/config'; import { AlchemyService } from 'src/integration/alchemy/services/alchemy.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { EvmService } from '../shared/evm/evm.service'; import { GnosisClient } from './gnosis-client'; @Injectable() export class GnosisService extends EvmService { - constructor(http: HttpService, alchemyService: AlchemyService) { + constructor(http: HttpService, alchemyService: AlchemyService, loggerFactory: LoggerFactory) { const { gnosisGatewayUrl, gnosisApiKey, @@ -24,6 +25,7 @@ export class GnosisService extends EvmService { apiKey: gnosisApiKey, walletPrivateKey: gnosisWalletPrivateKey, chainId: gnosisChainId, + loggerFactory, swapContractAddress, quoteContractAddress, }); diff --git a/src/integration/blockchain/optimism/optimism-client.ts b/src/integration/blockchain/optimism/optimism-client.ts index b572b356cd..024a679bd0 100644 --- a/src/integration/blockchain/optimism/optimism-client.ts +++ b/src/integration/blockchain/optimism/optimism-client.ts @@ -1,8 +1,8 @@ import { CrossChainMessenger, L2Provider, MessageStatus, asL2Provider, estimateTotalGasCost } from '@eth-optimism/sdk'; import { BigNumber, ethers } from 'ethers'; import { GetConfig } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { EvmClient, EvmClientParams } from '../shared/evm/evm-client'; import { EvmUtil } from '../shared/evm/evm.util'; @@ -16,7 +16,7 @@ interface OptimismTransactionReceipt extends ethers.providers.TransactionReceipt } export class OptimismClient extends EvmClient implements L2BridgeEvmClient { - private readonly logger = new DfxLogger(OptimismClient); + private logger: DfxLogger; private readonly l1Provider: ethers.providers.JsonRpcProvider; private readonly l1Wallet: ethers.Wallet; @@ -26,6 +26,8 @@ export class OptimismClient extends EvmClient implements L2BridgeEvmClient { constructor(params: EvmClientParams) { super(params); + this.logger = params.loggerFactory.create(OptimismClient); + const { ethGatewayUrl, ethApiKey, ethWalletPrivateKey, ethChainId } = GetConfig().blockchain.ethereum; const { optimismChainId } = GetConfig().blockchain.optimism; const ethereumGateway = `${ethGatewayUrl}/${ethApiKey ?? ''}`; diff --git a/src/integration/blockchain/optimism/optimism.service.ts b/src/integration/blockchain/optimism/optimism.service.ts index 6ecdea4e9d..ae515a08d1 100644 --- a/src/integration/blockchain/optimism/optimism.service.ts +++ b/src/integration/blockchain/optimism/optimism.service.ts @@ -1,13 +1,14 @@ import { Injectable } from '@nestjs/common'; import { GetConfig } from 'src/config/config'; import { AlchemyService } from 'src/integration/alchemy/services/alchemy.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { EvmService } from '../shared/evm/evm.service'; import { OptimismClient } from './optimism-client'; @Injectable() export class OptimismService extends EvmService { - constructor(http: HttpService, alchemyService: AlchemyService) { + constructor(http: HttpService, alchemyService: AlchemyService, loggerFactory: LoggerFactory) { const { optimismGatewayUrl, optimismApiKey, @@ -24,6 +25,7 @@ export class OptimismService extends EvmService { apiKey: optimismApiKey, walletPrivateKey: optimismWalletPrivateKey, chainId: optimismChainId, + loggerFactory, swapContractAddress, quoteContractAddress, }); diff --git a/src/integration/blockchain/polygon/polygon-client.ts b/src/integration/blockchain/polygon/polygon-client.ts index 4793d0d1f7..7b0c72c351 100644 --- a/src/integration/blockchain/polygon/polygon-client.ts +++ b/src/integration/blockchain/polygon/polygon-client.ts @@ -2,8 +2,8 @@ import { POSClient, setProofApi, use } from '@maticnetwork/maticjs'; import { Web3ClientPlugin } from '@maticnetwork/maticjs-ethers'; import { Contract, ethers } from 'ethers'; import { Config, GetConfig } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import ERC20_ABI from '../shared/evm/abi/erc20.abi.json'; import { EvmClient, EvmClientParams } from '../shared/evm/evm-client'; @@ -11,7 +11,7 @@ import { EvmUtil } from '../shared/evm/evm.util'; import { L2BridgeEvmClient } from '../shared/evm/interfaces'; export class PolygonClient extends EvmClient implements L2BridgeEvmClient { - private readonly logger = new DfxLogger(PolygonClient); + private logger: DfxLogger; private readonly l1Provider: ethers.providers.JsonRpcProvider; private readonly l1Wallet: ethers.Wallet; @@ -22,6 +22,8 @@ export class PolygonClient extends EvmClient implements L2BridgeEvmClient { constructor(params: EvmClientParams) { super(params); + this.logger = params.loggerFactory.create(PolygonClient); + use(Web3ClientPlugin); setProofApi('https://proof-generator.polygon.technology/'); diff --git a/src/integration/blockchain/polygon/polygon.service.ts b/src/integration/blockchain/polygon/polygon.service.ts index 7a19dc61fa..ee151eea1c 100644 --- a/src/integration/blockchain/polygon/polygon.service.ts +++ b/src/integration/blockchain/polygon/polygon.service.ts @@ -1,13 +1,14 @@ import { Injectable } from '@nestjs/common'; import { GetConfig } from 'src/config/config'; import { AlchemyService } from 'src/integration/alchemy/services/alchemy.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { EvmService } from '../shared/evm/evm.service'; import { PolygonClient } from './polygon-client'; @Injectable() export class PolygonService extends EvmService { - constructor(http: HttpService, alchemyService: AlchemyService) { + constructor(http: HttpService, alchemyService: AlchemyService, loggerFactory: LoggerFactory) { const { polygonGatewayUrl, polygonApiKey, @@ -24,6 +25,7 @@ export class PolygonService extends EvmService { apiKey: polygonApiKey, walletPrivateKey: polygonWalletPrivateKey, chainId: polygonChainId, + loggerFactory, swapContractAddress, quoteContractAddress, }); diff --git a/src/integration/blockchain/shared/evm/evm-client.ts b/src/integration/blockchain/shared/evm/evm-client.ts index e25424f35f..f9bc62e7e3 100644 --- a/src/integration/blockchain/shared/evm/evm-client.ts +++ b/src/integration/blockchain/shared/evm/evm-client.ts @@ -11,6 +11,7 @@ import { AlchemyService, AssetTransfersParams } from 'src/integration/alchemy/se import ERC20_ABI from 'src/integration/blockchain/shared/evm/abi/erc20.abi.json'; import SIGNATURE_TRANSFER_ABI from 'src/integration/blockchain/shared/evm/abi/signature-transfer.abi.json'; import UNISWAP_V3_NFT_MANAGER_ABI from 'src/integration/blockchain/shared/evm/abi/uniswap-v3-nft-manager.abi.json'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { HttpService } from 'src/shared/services/http.service'; import { AsyncCache } from 'src/shared/utils/async-cache'; @@ -29,6 +30,7 @@ export interface EvmClientParams { apiKey: string; walletPrivateKey: string; chainId: ChainId; + loggerFactory: LoggerFactory; swapContractAddress?: string; quoteContractAddress?: string; swapFactoryAddress?: string; diff --git a/src/integration/blockchain/shared/evm/evm-decimals.service.ts b/src/integration/blockchain/shared/evm/evm-decimals.service.ts index bb570e60e1..22fbe991ee 100644 --- a/src/integration/blockchain/shared/evm/evm-decimals.service.ts +++ b/src/integration/blockchain/shared/evm/evm-decimals.service.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { CryptoService } from 'src/integration/blockchain/shared/services/crypto.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { In, IsNull, Not } from 'typeorm'; @@ -11,12 +12,15 @@ import { BlockchainRegistryService } from '../services/blockchain-registry.servi @Injectable() export class EvmDecimalsService { - private readonly logger = new DfxLogger(EvmDecimalsService); + private readonly logger: DfxLogger; constructor( private readonly repoFactory: RepositoryFactory, private readonly blockchainRegistry: BlockchainRegistryService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(EvmDecimalsService); + } // --- JOBS --- // @DfxCron(CronExpression.EVERY_HOUR, { process: Process.ASSET_DECIMALS, timeout: 1800 }) diff --git a/src/integration/blockchain/shared/evm/evm-gas-price.service.ts b/src/integration/blockchain/shared/evm/evm-gas-price.service.ts index dcd21cde6d..e4d861a0e6 100644 --- a/src/integration/blockchain/shared/evm/evm-gas-price.service.ts +++ b/src/integration/blockchain/shared/evm/evm-gas-price.service.ts @@ -1,6 +1,7 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -14,10 +15,9 @@ interface EvmGasPriceCacheData { @Injectable() export class EvmGasPriceService implements OnModuleInit { - private readonly logger = new DfxLogger(EvmGasPriceService); + private readonly logger: DfxLogger; private static readonly MINUTES_5 = 5 * 60; - private static readonly GAS_PRICE_BLOCKCHAINS: Blockchain[] = [ Blockchain.ETHEREUM, Blockchain.ARBITRUM, @@ -29,8 +29,12 @@ export class EvmGasPriceService implements OnModuleInit { private gasPriceCache: Map; - constructor(private readonly blockchainRegistryService: BlockchainRegistryService) { + constructor( + private readonly blockchainRegistryService: BlockchainRegistryService, + readonly loggerFactory: LoggerFactory, + ) { this.gasPriceCache = new Map(); + this.logger = loggerFactory.create(EvmGasPriceService); } async onModuleInit() { diff --git a/src/integration/blockchain/shared/frankencoin/frankencoin-based.service.ts b/src/integration/blockchain/shared/frankencoin/frankencoin-based.service.ts index 74656231a7..c9daa7955e 100644 --- a/src/integration/blockchain/shared/frankencoin/frankencoin-based.service.ts +++ b/src/integration/blockchain/shared/frankencoin/frankencoin-based.service.ts @@ -1,7 +1,7 @@ import { Contract } from 'ethers'; import { groupBy, sumBy } from 'lodash'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Price } from 'src/subdomains/supporting/pricing/domain/entities/price'; import { PriceSource } from 'src/subdomains/supporting/pricing/domain/entities/price-rule.entity'; import { PricingService } from 'src/subdomains/supporting/pricing/services/pricing.service'; @@ -13,7 +13,7 @@ import { BlockchainRegistryService } from '../services/blockchain-registry.servi import { FrankencoinBasedCollateralDto } from './frankencoin-based.dto'; export abstract class FrankencoinBasedService { - protected readonly logger = new DfxLogger(this.constructor.name); + protected abstract readonly logger: DfxLogger; private pricingService: PricingService; private registryService: BlockchainRegistryService; diff --git a/src/integration/blockchain/solana/solana-wallet.ts b/src/integration/blockchain/solana/solana-wallet.ts index 34f03c6c0c..143b29b9aa 100644 --- a/src/integration/blockchain/solana/solana-wallet.ts +++ b/src/integration/blockchain/solana/solana-wallet.ts @@ -1,12 +1,9 @@ import { mnemonicToSeedSync } from '@scure/bip39'; import { Keypair, PublicKey, Transaction } from '@solana/web3.js'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; export const solanaDefaultPath = "m/44'/501'/0'/0'/0'"; export class SolanaWallet { - private readonly logger = new DfxLogger(SolanaWallet); - static create(mnemonic: string): SolanaWallet { const seed = mnemonicToSeedSync(mnemonic, ''); const keypair = Keypair.fromSeed(seed.slice(0, 32)); diff --git a/src/integration/exchange/controllers/exchange.controller.ts b/src/integration/exchange/controllers/exchange.controller.ts index 21abd9add2..44aa18735c 100644 --- a/src/integration/exchange/controllers/exchange.controller.ts +++ b/src/integration/exchange/controllers/exchange.controller.ts @@ -14,10 +14,11 @@ import { AuthGuard } from '@nestjs/passport'; import { CronExpression } from '@nestjs/schedule'; import { ApiBearerAuth, ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger'; import { Balances, ExchangeError, Order, Trade, Transaction, WithdrawalResponse } from 'ccxt'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RoleGuard } from 'src/shared/auth/role.guard'; import { UserActiveGuard } from 'src/shared/auth/user-active.guard'; import { UserRole } from 'src/shared/auth/user-role.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -33,11 +34,12 @@ import { ExchangeService, OrderSide } from '../services/exchange.service'; @ApiTags('exchange') @Controller('exchange') export class ExchangeController { - private readonly logger = new DfxLogger(ExchangeController); - + private readonly logger: DfxLogger; private trades: { [key: number]: TradeResult } = {}; - constructor(private readonly exchangeRegistry: ExchangeRegistryService) {} + constructor(private readonly exchangeRegistry: ExchangeRegistryService, readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(ExchangeController); + } @Get(':exchange/balances') @ApiBearerAuth() diff --git a/src/integration/exchange/services/__tests__/exchange.test.ts b/src/integration/exchange/services/__tests__/exchange.test.ts index 2f2b7d103c..470aca6ee5 100644 --- a/src/integration/exchange/services/__tests__/exchange.test.ts +++ b/src/integration/exchange/services/__tests__/exchange.test.ts @@ -1,7 +1,7 @@ import { Exchange } from 'ccxt'; import { ExchangeConfig } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { ExchangeService } from '../exchange.service'; export class TestExchange extends Exchange { @@ -11,7 +11,7 @@ export class TestExchange extends Exchange { } export class TestExchangeService extends ExchangeService { - protected logger = new DfxLogger(TestExchangeService); + protected readonly logger: DfxLogger; protected networks: { [b in Blockchain]: string } = { Arbitrum: undefined, diff --git a/src/integration/exchange/services/binance.service.ts b/src/integration/exchange/services/binance.service.ts index 3248069a80..83b5822001 100644 --- a/src/integration/exchange/services/binance.service.ts +++ b/src/integration/exchange/services/binance.service.ts @@ -2,12 +2,13 @@ import { Injectable } from '@nestjs/common'; import { binance } from 'ccxt'; import { GetConfig } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { ExchangeService } from './exchange.service'; @Injectable() export class BinanceService extends ExchangeService { - protected readonly logger = new DfxLogger(BinanceService); + protected readonly logger: DfxLogger; protected networks: { [b in Blockchain]: string } = { Arbitrum: 'ARBITRUM', @@ -30,7 +31,9 @@ export class BinanceService extends ExchangeService { Solana: 'SOL', }; - constructor() { + constructor(readonly loggerFactory: LoggerFactory) { super(binance, GetConfig().binance); + + this.logger = this.loggerFactory.create(BinanceService); } } diff --git a/src/integration/exchange/services/bitpanda.service.ts b/src/integration/exchange/services/bitpanda.service.ts index 2679d40983..56b137f8ef 100644 --- a/src/integration/exchange/services/bitpanda.service.ts +++ b/src/integration/exchange/services/bitpanda.service.ts @@ -2,12 +2,13 @@ import { Injectable } from '@nestjs/common'; import { bitpanda } from 'ccxt'; import { GetConfig } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { ExchangeService } from './exchange.service'; @Injectable() export class BitpandaService extends ExchangeService { - protected readonly logger = new DfxLogger(BitpandaService); + protected readonly logger: DfxLogger; protected networks: { [b in Blockchain]: string } = { Arbitrum: undefined, @@ -30,7 +31,9 @@ export class BitpandaService extends ExchangeService { Solana: undefined, }; - constructor() { + constructor(readonly loggerFactory: LoggerFactory) { super(bitpanda, GetConfig().exchange); + + this.logger = this.loggerFactory.create(BitpandaService); } } diff --git a/src/integration/exchange/services/bitstamp.service.ts b/src/integration/exchange/services/bitstamp.service.ts index 627d795f07..8fa60bb5b0 100644 --- a/src/integration/exchange/services/bitstamp.service.ts +++ b/src/integration/exchange/services/bitstamp.service.ts @@ -2,12 +2,13 @@ import { Injectable } from '@nestjs/common'; import { bitstamp } from 'ccxt'; import { GetConfig } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { ExchangeService } from './exchange.service'; @Injectable() export class BitstampService extends ExchangeService { - protected readonly logger = new DfxLogger(BitstampService); + protected readonly logger: DfxLogger; protected networks: { [b in Blockchain]: string } = { Arbitrum: undefined, @@ -30,7 +31,9 @@ export class BitstampService extends ExchangeService { Solana: undefined, }; - constructor() { + constructor(readonly loggerFactory: LoggerFactory) { super(bitstamp, GetConfig().exchange); + + this.logger = this.loggerFactory.create(BitstampService); } } diff --git a/src/integration/exchange/services/exchange-tx.service.ts b/src/integration/exchange/services/exchange-tx.service.ts index 62aba3d16c..83cce2566b 100644 --- a/src/integration/exchange/services/exchange-tx.service.ts +++ b/src/integration/exchange/services/exchange-tx.service.ts @@ -1,10 +1,11 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -19,16 +20,19 @@ import { ExchangeRegistryService } from './exchange-registry.service'; @Injectable() export class ExchangeTxService implements OnModuleInit { - private readonly logger = new DfxLogger(ExchangeTxService); + private readonly logger: DfxLogger; private chf: Fiat; constructor( + readonly loggerFactory: LoggerFactory, private readonly exchangeTxRepo: ExchangeTxRepository, private readonly registryService: ExchangeRegistryService, private readonly assetService: AssetService, private readonly pricingService: PricingService, private readonly fiatService: FiatService, - ) {} + ) { + this.logger = loggerFactory.create(ExchangeTxService); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/integration/exchange/services/exchange.service.ts b/src/integration/exchange/services/exchange.service.ts index fb7a797e0e..7732caef1a 100644 --- a/src/integration/exchange/services/exchange.service.ts +++ b/src/integration/exchange/services/exchange.service.ts @@ -13,7 +13,7 @@ import { } from 'ccxt'; import { ExchangeConfig } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { Util } from 'src/shared/utils/util'; import { PricingProvider } from 'src/subdomains/supporting/pricing/services/integration/pricing-provider'; diff --git a/src/integration/exchange/services/kraken.service.ts b/src/integration/exchange/services/kraken.service.ts index c8eb7b9696..4e361eb202 100644 --- a/src/integration/exchange/services/kraken.service.ts +++ b/src/integration/exchange/services/kraken.service.ts @@ -2,13 +2,13 @@ import { Injectable } from '@nestjs/common'; import { kraken } from 'ccxt'; import { GetConfig } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { ExchangeService } from './exchange.service'; @Injectable() export class KrakenService extends ExchangeService { - protected readonly logger = new DfxLogger(KrakenService); - + protected readonly logger: DfxLogger; protected networks: { [b in Blockchain]: string } = { Arbitrum: 'arbitrum', BinanceSmartChain: 'bsc', @@ -30,7 +30,9 @@ export class KrakenService extends ExchangeService { Solana: undefined, }; - constructor() { + constructor(readonly loggerFactory: LoggerFactory) { super(kraken, GetConfig().kraken); + + this.logger = loggerFactory.create(KrakenService); } } diff --git a/src/integration/exchange/services/kucoin.service.ts b/src/integration/exchange/services/kucoin.service.ts index 962e4ae78c..be266be175 100644 --- a/src/integration/exchange/services/kucoin.service.ts +++ b/src/integration/exchange/services/kucoin.service.ts @@ -2,13 +2,13 @@ import { Injectable } from '@nestjs/common'; import { kucoin } from 'ccxt'; import { GetConfig } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { ExchangeService } from './exchange.service'; @Injectable() export class KucoinService extends ExchangeService { - protected readonly logger = new DfxLogger(KucoinService); - + protected readonly logger: DfxLogger; protected networks: { [b in Blockchain]: string } = { Arbitrum: undefined, BinanceSmartChain: undefined, @@ -30,7 +30,9 @@ export class KucoinService extends ExchangeService { Solana: undefined, }; - constructor() { + constructor(protected readonly loggerFactory: LoggerFactory) { super(kucoin, GetConfig().exchange); + + this.logger = loggerFactory.create(KucoinService); } } diff --git a/src/integration/sift/services/sift.service.ts b/src/integration/sift/services/sift.service.ts index 699467e4fb..b74e15e308 100644 --- a/src/integration/sift/services/sift.service.ts +++ b/src/integration/sift/services/sift.service.ts @@ -2,8 +2,9 @@ import { Injectable } from '@nestjs/common'; import * as IbanTools from 'ibantools'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { BuyCrypto } from 'src/subdomains/core/buy-crypto/process/entities/buy-crypto.entity'; @@ -38,12 +39,13 @@ import { @Injectable() export class SiftService { + private readonly logger: DfxLogger; private readonly url = 'https://api.sift.com/v205/events'; private readonly decisionUrl = 'https://api.sift.com/v3/accounts/'; - private readonly logger = new DfxLogger(SiftService); - - constructor(private readonly http: HttpService) {} + constructor(readonly loggerFactory: LoggerFactory, private readonly http: HttpService) { + this.logger = loggerFactory.create(SiftService); + } // --- ACCOUNT --- // async createAccount(user: User): Promise { diff --git a/src/integration/tatum/controllers/tatum.controller.ts b/src/integration/tatum/controllers/tatum.controller.ts index 3e7b985e69..4baf5ab282 100644 --- a/src/integration/tatum/controllers/tatum.controller.ts +++ b/src/integration/tatum/controllers/tatum.controller.ts @@ -10,16 +10,19 @@ import { } from '@nestjs/common'; import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger'; import { Request, Response } from 'express'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { TatumWebhookPayloadMapper } from '../dto/tatum-webhook-payload.mapper'; import { TatumWebhookService } from '../services/tatum-webhook.service'; @ApiTags('Tatum') @Controller('tatum') export class TatumController { - private readonly logger = new DfxLogger(TatumController); + private readonly logger: DfxLogger; - constructor(private readonly tatumWebhookService: TatumWebhookService) {} + constructor(readonly loggerFactory: LoggerFactory, private readonly tatumWebhookService: TatumWebhookService) { + this.logger = loggerFactory.create(TatumController); + } @Post('addressWebhook') @ApiExcludeEndpoint() diff --git a/src/shared/services/dfx-logger.ts b/src/logger/dfx-logger.service.ts similarity index 85% rename from src/shared/services/dfx-logger.ts rename to src/logger/dfx-logger.service.ts index 562a342e54..66e1295932 100644 --- a/src/shared/services/dfx-logger.ts +++ b/src/logger/dfx-logger.service.ts @@ -1,7 +1,8 @@ import { Logger } from '@nestjs/common'; +import * as AppInsights from 'applicationinsights'; import { TelemetryClient } from 'applicationinsights'; import { SeverityLevel } from 'applicationinsights/out/Declarations/Contracts'; -import * as AppInsights from 'applicationinsights'; +import { NotificationService } from 'src/subdomains/supporting/notification/services/notification.service'; export enum LogLevel { CRITICAL = 'Critical', @@ -12,10 +13,10 @@ export enum LogLevel { } export class DfxLogger { - private readonly context?: string; - private readonly logger: Logger; + private context?: string; + private logger: Logger; - constructor(context?: { name: string } | string) { + constructor(context?: { name: string } | string, private readonly notificationService?: NotificationService) { this.context = typeof context === 'string' ? context : context?.name; this.logger = new Logger(this.context); } @@ -47,6 +48,11 @@ export class DfxLogger { critical(message: string, error?: Error) { this.trace(SeverityLevel.Critical, message, error); this.logger.error(this.format(message, error)); + + // void this.notificationService?.sendMail({ + // type: MailType.ERROR_MONITORING, + // // TODO + // }); } error(message: string, error?: Error) { diff --git a/src/logger/logger.factory.ts b/src/logger/logger.factory.ts new file mode 100644 index 0000000000..dd73676ec2 --- /dev/null +++ b/src/logger/logger.factory.ts @@ -0,0 +1,15 @@ +import { Inject, Injectable, forwardRef } from '@nestjs/common'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { NotificationService } from 'src/subdomains/supporting/notification/services/notification.service'; + +@Injectable() +export class LoggerFactory { + constructor( + @Inject(forwardRef(() => NotificationService)) + private readonly notificationService: NotificationService, + ) {} + + create(context?: { name: string } | string): DfxLogger { + return new DfxLogger(context, this.notificationService); + } +} diff --git a/src/logger/logger.module.ts b/src/logger/logger.module.ts new file mode 100644 index 0000000000..7177f8fbcf --- /dev/null +++ b/src/logger/logger.module.ts @@ -0,0 +1,11 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { NotificationModule } from 'src/subdomains/supporting/notification/notification.module'; +import { LoggerFactory } from './logger.factory'; + +@Module({ + imports: [forwardRef(() => NotificationModule)], + controllers: [], + providers: [LoggerFactory], + exports: [LoggerFactory], +}) +export class LoggerModule {} diff --git a/src/main.ts b/src/main.ts index f66a77ade5..27738fbac0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -10,8 +10,8 @@ import helmet from 'helmet'; import morgan from 'morgan'; import { AppModule } from './app.module'; import { Config } from './config/config'; +import { DfxLogger } from './logger/dfx-logger.service'; import { ApiExceptionFilter } from './shared/filters/exception.filter'; -import { DfxLogger } from './shared/services/dfx-logger'; import { AccountChangedWebhookDto } from './subdomains/generic/user/services/webhook/dto/account-changed-webhook.dto'; import { KycChangedWebhookDto, diff --git a/src/shared/auth/ip.guard.ts b/src/shared/auth/ip.guard.ts index 52765a484a..a669efbf51 100644 --- a/src/shared/auth/ip.guard.ts +++ b/src/shared/auth/ip.guard.ts @@ -1,6 +1,6 @@ import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; import { getClientIp } from '@supercharge/request-ip'; -import { DfxLogger } from '../services/dfx-logger'; +import { DfxLogger } from '../../logger/dfx-logger.service'; @Injectable() export class IpGuard implements CanActivate { diff --git a/src/shared/filters/exception.filter.ts b/src/shared/filters/exception.filter.ts index 2cad2afc7f..670e80da20 100644 --- a/src/shared/filters/exception.filter.ts +++ b/src/shared/filters/exception.filter.ts @@ -1,5 +1,5 @@ import { ArgumentsHost, Catch, ExceptionFilter, HttpException, HttpStatus } from '@nestjs/common'; -import { DfxLogger } from '../services/dfx-logger'; +import { DfxLogger } from '../../logger/dfx-logger.service'; @Catch() export class ApiExceptionFilter implements ExceptionFilter { diff --git a/src/shared/services/dfx-cron.service.ts b/src/shared/services/dfx-cron.service.ts index f87dc18f8d..76977d708c 100644 --- a/src/shared/services/dfx-cron.service.ts +++ b/src/shared/services/dfx-cron.service.ts @@ -3,12 +3,13 @@ import { DiscoveryService, MetadataScanner } from '@nestjs/core'; import { CronExpression, SchedulerRegistry } from '@nestjs/schedule'; import { CronJob } from 'cron'; import { Config } from 'src/config/config'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DisabledProcess } from 'src/shared/services/process.service'; import { DFX_CRONJOB_PARAMS, DfxCronExpression, DfxCronParams } from 'src/shared/utils/cron'; import { LockClass } from 'src/shared/utils/lock'; import { Util } from 'src/shared/utils/util'; +import { DfxLogger } from '../../logger/dfx-logger.service'; import { CustomCronExpression } from '../utils/custom-cron-expression'; -import { DfxLogger } from './dfx-logger'; interface CronJobData { instance: object; @@ -19,12 +20,13 @@ interface CronJobData { @Injectable() export class DfxCronService implements OnModuleInit { - private readonly logger = new DfxLogger(DfxCronService); + private readonly logger: DfxLogger; constructor( private readonly discovery: DiscoveryService, private readonly metadataScanner: MetadataScanner, - private readonly schedulerRegisty: SchedulerRegistry, + private readonly schedulerRegistry: SchedulerRegistry, + readonly loggerFactory: LoggerFactory, ) {} onModuleInit() { @@ -57,7 +59,7 @@ export class DfxCronService implements OnModuleInit { const cronJob = new CronJob(data.params.expression, () => lock(this.wrapFunction(data), context)); const cronJobName = `${context.target}::${context.method}`; - this.schedulerRegisty.addCronJob(cronJobName, cronJob); + this.schedulerRegistry.addCronJob(cronJobName, cronJob); cronJob.start(); } diff --git a/src/shared/shared.module.ts b/src/shared/shared.module.ts index 371f467022..bd4383aab8 100644 --- a/src/shared/shared.module.ts +++ b/src/shared/shared.module.ts @@ -1,5 +1,5 @@ import { HttpModule } from '@nestjs/axios'; -import { Module } from '@nestjs/common'; +import { Module, forwardRef } from '@nestjs/common'; import { DiscoveryModule } from '@nestjs/core'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; @@ -10,6 +10,7 @@ import { I18nModule } from 'nestjs-i18n'; import { GetConfig } from 'src/config/config'; import { ConfigModule } from 'src/config/config.module'; import { GeoLocationModule } from 'src/integration/geolocation/geo-location.module'; +import { NotificationModule } from 'src/subdomains/supporting/notification/notification.module'; import { JwtStrategy } from './auth/jwt.strategy'; import { AssetController } from './models/asset/asset.controller'; import { Asset } from './models/asset/asset.entity'; @@ -42,6 +43,7 @@ import { ProcessService } from './services/process.service'; @Module({ imports: [ + forwardRef(() => NotificationModule), DiscoveryModule, HttpModule, ConfigModule, diff --git a/src/shared/utils/lock.ts b/src/shared/utils/lock.ts index 0a708952f1..0ac56bd368 100644 --- a/src/shared/utils/lock.ts +++ b/src/shared/utils/lock.ts @@ -1,4 +1,4 @@ -import { DfxLogger } from '../services/dfx-logger'; +import { DfxLogger } from '../../logger/dfx-logger.service'; export interface Context { target: string; diff --git a/src/subdomains/core/aml/services/aml.service.ts b/src/subdomains/core/aml/services/aml.service.ts index 3db012bd41..2d9f78130c 100644 --- a/src/subdomains/core/aml/services/aml.service.ts +++ b/src/subdomains/core/aml/services/aml.service.ts @@ -1,8 +1,9 @@ import { Inject, Injectable, forwardRef } from '@nestjs/common'; import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Country } from 'src/shared/models/country/country.entity'; import { CountryService } from 'src/shared/models/country/country.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { NameCheckService } from 'src/subdomains/generic/kyc/services/name-check.service'; import { AccountMergeService } from 'src/subdomains/generic/user/models/account-merge/account-merge.service'; @@ -25,9 +26,10 @@ import { CheckStatus } from '../enums/check-status.enum'; @Injectable() export class AmlService { - private readonly logger = new DfxLogger(AmlService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly specialExternalBankAccountService: SpecialExternalAccountService, private readonly bankDataService: BankDataService, private readonly bankService: BankService, @@ -38,7 +40,9 @@ export class AmlService { private readonly payInService: PayInService, private readonly userService: UserService, private readonly transactionService: TransactionService, - ) {} + ) { + this.logger = loggerFactory.create(AmlService); + } async postProcessing( entity: BuyFiat | BuyCrypto, diff --git a/src/subdomains/core/buy-crypto/process/services/buy-crypto-batch.service.ts b/src/subdomains/core/buy-crypto/process/services/buy-crypto-batch.service.ts index cd6524bb50..0ae5023dd0 100644 --- a/src/subdomains/core/buy-crypto/process/services/buy-crypto-batch.service.ts +++ b/src/subdomains/core/buy-crypto/process/services/buy-crypto-batch.service.ts @@ -1,8 +1,9 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; +import { DfxLogger, LogLevel } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger, LogLevel } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { LiquidityManagementPipelineStatus, @@ -31,9 +32,10 @@ import { BuyCryptoPricingService } from './buy-crypto-pricing.service'; @Injectable() export class BuyCryptoBatchService { - private readonly logger = new DfxLogger(BuyCryptoBatchService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly buyCryptoRepo: BuyCryptoRepository, private readonly buyCryptoBatchRepo: BuyCryptoBatchRepository, private readonly pricingService: PricingService, @@ -44,7 +46,9 @@ export class BuyCryptoBatchService { private readonly buyCryptoNotificationService: BuyCryptoNotificationService, private readonly liquidityService: LiquidityManagementService, private readonly feeService: FeeService, - ) {} + ) { + this.logger = loggerFactory.create(BuyCryptoBatchService); + } async batchAndOptimizeTransactions(): Promise { try { diff --git a/src/subdomains/core/buy-crypto/process/services/buy-crypto-dex.service.ts b/src/subdomains/core/buy-crypto/process/services/buy-crypto-dex.service.ts index 388e8769a2..4c3ed1d1cf 100644 --- a/src/subdomains/core/buy-crypto/process/services/buy-crypto-dex.service.ts +++ b/src/subdomains/core/buy-crypto/process/services/buy-crypto-dex.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { LiquidityOrderContext } from 'src/subdomains/supporting/dex/entities/liquidity-order.entity'; import { LiquidityOrderNotReadyException } from 'src/subdomains/supporting/dex/exceptions/liquidity-order-not-ready.exception'; import { NotEnoughLiquidityException } from 'src/subdomains/supporting/dex/exceptions/not-enough-liquidity.exception'; @@ -15,15 +16,18 @@ import { BuyCryptoPricingService } from './buy-crypto-pricing.service'; @Injectable() export class BuyCryptoDexService { - private readonly logger = new DfxLogger(BuyCryptoDexService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly buyCryptoRepo: BuyCryptoRepository, private readonly buyCryptoBatchRepo: BuyCryptoBatchRepository, private readonly buyCryptoNotificationService: BuyCryptoNotificationService, private readonly dexService: DexService, private readonly buyCryptoPricingService: BuyCryptoPricingService, - ) {} + ) { + this.logger = loggerFactory.create(BuyCryptoDexService); + } async secureLiquidity(): Promise { try { diff --git a/src/subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts b/src/subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts index 8c9ff305e4..b8634ffb15 100644 --- a/src/subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts +++ b/src/subdomains/core/buy-crypto/process/services/buy-crypto-notification.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; import { @@ -17,12 +18,15 @@ import { BuyCryptoRepository } from '../repositories/buy-crypto.repository'; @Injectable() export class BuyCryptoNotificationService { - private readonly logger = new DfxLogger(BuyCryptoNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly buyCryptoRepo: BuyCryptoRepository, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(BuyCryptoNotificationService); + } async sendNotificationMails(): Promise { try { diff --git a/src/subdomains/core/buy-crypto/process/services/buy-crypto-out.service.ts b/src/subdomains/core/buy-crypto/process/services/buy-crypto-out.service.ts index 2eb8fcd1a0..64f7f81c6b 100644 --- a/src/subdomains/core/buy-crypto/process/services/buy-crypto-out.service.ts +++ b/src/subdomains/core/buy-crypto/process/services/buy-crypto-out.service.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; import { TransactionStatus } from 'src/integration/sift/dto/sift.dto'; import { SiftService } from 'src/integration/sift/services/sift.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { CustodyOrderInputTypes, CustodyOrderStatus } from 'src/subdomains/core/custody/enums/custody'; import { CustodyOrderService } from 'src/subdomains/core/custody/services/custody-order.service'; @@ -23,7 +24,7 @@ import { BuyCryptoWebhookService } from './buy-crypto-webhook.service'; @Injectable() export class BuyCryptoOutService { - private readonly logger = new DfxLogger(BuyCryptoOutService); + private readonly logger: DfxLogger; constructor( private readonly buyCryptoRepo: BuyCryptoRepository, @@ -37,7 +38,10 @@ export class BuyCryptoOutService { private readonly pricingService: PricingService, private readonly fiatService: FiatService, private readonly custodyOrderService: CustodyOrderService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(BuyCryptoOutService); + } async payoutTransactions(): Promise { try { diff --git a/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts b/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts index 3d349cde9b..f8bbf2c5df 100644 --- a/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts +++ b/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts @@ -2,12 +2,13 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { TransactionStatus } from 'src/integration/sift/dto/sift.dto'; import { SiftService } from 'src/integration/sift/services/sift.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Active, isAsset, isFiat } from 'src/shared/models/active'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { CountryService } from 'src/shared/models/country/country.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { AmlReason } from 'src/subdomains/core/aml/enums/aml-reason.enum'; import { AmlService } from 'src/subdomains/core/aml/services/aml.service'; @@ -30,7 +31,7 @@ import { BuyCryptoService } from './buy-crypto.service'; @Injectable() export class BuyCryptoPreparationService implements OnModuleInit { - private readonly logger = new DfxLogger(BuyCryptoPreparationService); + private readonly logger: DfxLogger; private chf: Fiat; private eur: Fiat; @@ -47,7 +48,10 @@ export class BuyCryptoPreparationService implements OnModuleInit { private readonly buyCryptoWebhookService: BuyCryptoWebhookService, private readonly buyCryptoNotificationService: BuyCryptoNotificationService, private readonly bankTxService: BankTxService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(BuyCryptoPreparationService); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts b/src/subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts index 99e50df8e7..7c866ab208 100644 --- a/src/subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts +++ b/src/subdomains/core/buy-crypto/process/services/buy-crypto-registration.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Swap } from 'src/subdomains/core/buy-crypto/routes/swap/swap.entity'; import { SwapRepository } from 'src/subdomains/core/buy-crypto/routes/swap/swap.repository'; import { CryptoInput, PayInPurpose, PayInStatus } from 'src/subdomains/supporting/payin/entities/crypto-input.entity'; @@ -11,15 +12,18 @@ import { BuyCryptoService } from './buy-crypto.service'; @Injectable() export class BuyCryptoRegistrationService { - private readonly logger = new DfxLogger(BuyCryptoRegistrationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly buyCryptoRepo: BuyCryptoRepository, private readonly buyCryptoService: BuyCryptoService, private readonly swapRepository: SwapRepository, private readonly payInService: PayInService, private readonly transactionHelper: TransactionHelper, - ) {} + ) { + this.logger = loggerFactory.create(BuyCryptoRegistrationService); + } async syncReturnTxId(): Promise { const entities = await this.buyCryptoRepo.find({ diff --git a/src/subdomains/core/buy-crypto/routes/swap/swap.service.ts b/src/subdomains/core/buy-crypto/routes/swap/swap.service.ts index 6c35e979bc..463f66f329 100644 --- a/src/subdomains/core/buy-crypto/routes/swap/swap.service.ts +++ b/src/subdomains/core/buy-crypto/routes/swap/swap.service.ts @@ -10,9 +10,10 @@ import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { CryptoService } from 'src/integration/blockchain/shared/services/crypto.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; import { AssetDtoMapper } from 'src/shared/models/asset/dto/asset-dto.mapper'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; import { BuyCryptoExtended } from 'src/subdomains/core/history/mappers/transaction-dto.mapper'; @@ -43,9 +44,10 @@ import { SwapRepository } from './swap.repository'; @Injectable() export class SwapService { - private readonly logger = new DfxLogger(SwapService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly swapRepo: SwapRepository, private readonly userService: UserService, private readonly depositService: DepositService, @@ -62,7 +64,9 @@ export class SwapService { private readonly transactionHelper: TransactionHelper, private readonly cryptoService: CryptoService, private readonly transactionRequestService: TransactionRequestService, - ) {} + ) { + this.logger = loggerFactory.create(SwapService); + } async getSwapByAddress(depositAddress: string): Promise { // does not work with find options diff --git a/src/subdomains/core/liquidity-management/adapters/actions/base/ccxt-exchange.adapter.ts b/src/subdomains/core/liquidity-management/adapters/actions/base/ccxt-exchange.adapter.ts index 372ae09d01..949b39746c 100644 --- a/src/subdomains/core/liquidity-management/adapters/actions/base/ccxt-exchange.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/actions/base/ccxt-exchange.adapter.ts @@ -3,7 +3,7 @@ import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.e import { TradeChangedException } from 'src/integration/exchange/exceptions/trade-changed.exception'; import { ExchangeRegistryService } from 'src/integration/exchange/services/exchange-registry.service'; import { ExchangeService } from 'src/integration/exchange/services/exchange.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Util } from 'src/shared/utils/util'; import { DexService } from 'src/subdomains/supporting/dex/services/dex.service'; import { LiquidityManagementOrder } from '../../../entities/liquidity-management-order.entity'; @@ -27,7 +27,7 @@ export enum CcxtExchangeAdapterCommands { } export abstract class CcxtExchangeAdapter extends LiquidityActionAdapter { - private readonly logger = new DfxLogger(CcxtExchangeAdapter); + protected abstract readonly logger: DfxLogger; protected commands = new Map(); diff --git a/src/subdomains/core/liquidity-management/adapters/actions/base/frankencoin-based.adapter.ts b/src/subdomains/core/liquidity-management/adapters/actions/base/frankencoin-based.adapter.ts index d206c3f128..296f56956b 100644 --- a/src/subdomains/core/liquidity-management/adapters/actions/base/frankencoin-based.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/actions/base/frankencoin-based.adapter.ts @@ -1,8 +1,8 @@ import { ethers } from 'ethers'; import { EvmUtil } from 'src/integration/blockchain/shared/evm/evm.util'; import { FrankencoinBasedService } from 'src/integration/blockchain/shared/frankencoin/frankencoin-based.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { LiquidityManagementOrder } from '../../../entities/liquidity-management-order.entity'; import { LiquidityManagementSystem } from '../../../enums'; @@ -18,9 +18,8 @@ export enum FrankencoinBasedAdapterCommands { } export abstract class FrankencoinBasedAdapter extends LiquidityActionAdapter { - private readonly logger = new DfxLogger(FrankencoinBasedAdapter); - protected commands = new Map(); + protected abstract readonly logger: DfxLogger; constructor( system: LiquidityManagementSystem, diff --git a/src/subdomains/core/liquidity-management/adapters/actions/binance.adapter.ts b/src/subdomains/core/liquidity-management/adapters/actions/binance.adapter.ts index 82046b6d12..c5859e0137 100644 --- a/src/subdomains/core/liquidity-management/adapters/actions/binance.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/actions/binance.adapter.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { BinanceService } from 'src/integration/exchange/services/binance.service'; import { ExchangeRegistryService } from 'src/integration/exchange/services/exchange-registry.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DexService } from 'src/subdomains/supporting/dex/services/dex.service'; import { LiquidityManagementSystem } from '../../enums'; import { LiquidityManagementOrderRepository } from '../../repositories/liquidity-management-order.repository'; @@ -8,12 +10,17 @@ import { CcxtExchangeAdapter } from './base/ccxt-exchange.adapter'; @Injectable() export class BinanceAdapter extends CcxtExchangeAdapter { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, binanceService: BinanceService, exchangeRegistry: ExchangeRegistryService, dexService: DexService, liquidityOrderRepo: LiquidityManagementOrderRepository, ) { super(LiquidityManagementSystem.BINANCE, binanceService, exchangeRegistry, dexService, liquidityOrderRepo); + + this.logger = this.loggerFactory.create(BinanceAdapter); } } diff --git a/src/subdomains/core/liquidity-management/adapters/actions/deuro.adapter.ts b/src/subdomains/core/liquidity-management/adapters/actions/deuro.adapter.ts index f8fad89c45..e1c7cc9387 100644 --- a/src/subdomains/core/liquidity-management/adapters/actions/deuro.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/actions/deuro.adapter.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { DEuroService } from 'src/integration/blockchain/deuro/deuro.service'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { LiquidityManagementSystem } from '../../enums'; @@ -9,12 +11,17 @@ import { FrankencoinBasedAdapter } from './base/frankencoin-based.adapter'; @Injectable() export class DEuroAdapter extends FrankencoinBasedAdapter { + protected readonly logger: DfxLogger; + constructor( liquidityManagementBalanceService: LiquidityManagementBalanceService, readonly deuroService: DEuroService, private readonly assetService: AssetService, + readonly loggerFactory: LoggerFactory, ) { super(LiquidityManagementSystem.DEURO, liquidityManagementBalanceService, deuroService); + + this.logger = this.loggerFactory.create(DEuroAdapter); } async getStableToken(): Promise { diff --git a/src/subdomains/core/liquidity-management/adapters/actions/frankencoin.adapter.ts b/src/subdomains/core/liquidity-management/adapters/actions/frankencoin.adapter.ts index 467830db3c..6e829c69dc 100644 --- a/src/subdomains/core/liquidity-management/adapters/actions/frankencoin.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/actions/frankencoin.adapter.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { FrankencoinService } from 'src/integration/blockchain/frankencoin/frankencoin.service'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { LiquidityManagementSystem } from '../../enums'; @@ -9,12 +11,17 @@ import { FrankencoinBasedAdapter } from './base/frankencoin-based.adapter'; @Injectable() export class FrankencoinAdapter extends FrankencoinBasedAdapter { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, liquidityManagementBalanceService: LiquidityManagementBalanceService, frankencoinService: FrankencoinService, private readonly assetService: AssetService, ) { super(LiquidityManagementSystem.FRANKENCOIN, liquidityManagementBalanceService, frankencoinService); + + this.logger = this.loggerFactory.create(FrankencoinAdapter); } async getStableToken(): Promise { diff --git a/src/subdomains/core/liquidity-management/adapters/actions/kraken.adapter.ts b/src/subdomains/core/liquidity-management/adapters/actions/kraken.adapter.ts index 8d9eaff181..3c17272bac 100644 --- a/src/subdomains/core/liquidity-management/adapters/actions/kraken.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/actions/kraken.adapter.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { ExchangeRegistryService } from 'src/integration/exchange/services/exchange-registry.service'; import { KrakenService } from 'src/integration/exchange/services/kraken.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DexService } from 'src/subdomains/supporting/dex/services/dex.service'; import { LiquidityManagementSystem } from '../../enums'; import { LiquidityManagementOrderRepository } from '../../repositories/liquidity-management-order.repository'; @@ -8,12 +10,17 @@ import { CcxtExchangeAdapter } from './base/ccxt-exchange.adapter'; @Injectable() export class KrakenAdapter extends CcxtExchangeAdapter { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, krakenService: KrakenService, exchangeRegistry: ExchangeRegistryService, dexService: DexService, liquidityOrderRepo: LiquidityManagementOrderRepository, ) { super(LiquidityManagementSystem.KRAKEN, krakenService, exchangeRegistry, dexService, liquidityOrderRepo); + + this.logger = this.loggerFactory.create(KrakenAdapter); } } diff --git a/src/subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts b/src/subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts index 144254bb9f..fd3d3b69ec 100644 --- a/src/subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/balances/bank.adapter.ts @@ -1,8 +1,9 @@ import { Injectable } from '@nestjs/common'; import { OlkypayService } from 'src/integration/bank/services/olkypay.service'; import { CheckoutService } from 'src/integration/checkout/services/checkout.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { BankTxBatchService } from 'src/subdomains/supporting/bank-tx/bank-tx/services/bank-tx-batch.service'; import { BankService } from 'src/subdomains/supporting/bank/bank/bank.service'; @@ -13,14 +14,17 @@ import { LiquidityBalanceIntegration, LiquidityManagementAsset } from '../../int @Injectable() export class BankAdapter implements LiquidityBalanceIntegration { - private readonly logger = new DfxLogger(BankAdapter); + private readonly logger: DfxLogger; constructor( private readonly bankService: BankService, private readonly bankTxBatchService: BankTxBatchService, private readonly olkypayService: OlkypayService, private readonly checkoutService: CheckoutService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(BankAdapter); + } async getBalances(assets: LiquidityManagementAsset[]): Promise { const liquidityManagementAssets = Util.groupBy( diff --git a/src/subdomains/core/liquidity-management/adapters/balances/blockchain.adapter.ts b/src/subdomains/core/liquidity-management/adapters/balances/blockchain.adapter.ts index 6c38ef62d5..ec7c6f153f 100644 --- a/src/subdomains/core/liquidity-management/adapters/balances/blockchain.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/balances/blockchain.adapter.ts @@ -8,9 +8,10 @@ import { BlockchainRegistryService } from 'src/integration/blockchain/shared/ser import { SolanaClient } from 'src/integration/blockchain/solana/solana-client'; import { LightningClient } from 'src/integration/lightning/lightning-client'; import { LightningService } from 'src/integration/lightning/services/lightning.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { isAsset } from 'src/shared/models/active'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { DexService } from 'src/subdomains/supporting/dex/services/dex.service'; import { LiquidityBalance } from '../../entities/liquidity-balance.entity'; @@ -21,8 +22,6 @@ type TokenClient = EvmClient | SolanaClient; @Injectable() export class BlockchainAdapter implements LiquidityBalanceIntegration { - private readonly logger = new DfxLogger(BlockchainAdapter); - private readonly refreshInterval = 45; // seconds private readonly balanceCache = new Map(); @@ -32,14 +31,18 @@ export class BlockchainAdapter implements LiquidityBalanceIntegration { private readonly bitcoinClient: BitcoinClient; private readonly lightningClient: LightningClient; + private readonly logger: DfxLogger; + constructor( private readonly dexService: DexService, private readonly blockchainRegistryService: BlockchainRegistryService, + readonly loggerFactory: LoggerFactory, bitcoinService: BitcoinService, lightningService: LightningService, ) { this.bitcoinClient = bitcoinService.getDefaultClient(BitcoinNodeType.BTC_OUTPUT); this.lightningClient = lightningService.getDefaultClient(); + this.loggerFactory.create(BlockchainAdapter); } async getBalances(assets: (Asset & { context: LiquidityManagementContext })[]): Promise { diff --git a/src/subdomains/core/liquidity-management/adapters/balances/exchange.adapter.ts b/src/subdomains/core/liquidity-management/adapters/balances/exchange.adapter.ts index ca6b736f8a..9443268a22 100644 --- a/src/subdomains/core/liquidity-management/adapters/balances/exchange.adapter.ts +++ b/src/subdomains/core/liquidity-management/adapters/balances/exchange.adapter.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { ExchangeRegistryService } from 'src/integration/exchange/services/exchange-registry.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Active } from 'src/shared/models/active'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { In } from 'typeorm'; import { LiquidityBalance } from '../../entities/liquidity-balance.entity'; @@ -11,14 +12,16 @@ import { LiquidityManagementOrderRepository } from '../../repositories/liquidity @Injectable() export class ExchangeAdapter implements LiquidityBalanceIntegration { - private readonly logger = new DfxLogger(ExchangeAdapter); - + private readonly logger: DfxLogger; private readonly ASSET_MAPPINGS = { BTC: ['XBT'] }; constructor( private readonly exchangeRegistry: ExchangeRegistryService, private readonly orderRepo: LiquidityManagementOrderRepository, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(ExchangeAdapter); + } async getBalances(assets: LiquidityManagementAsset[]): Promise { const liquidityManagementAssets = Util.groupBy( diff --git a/src/subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts b/src/subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts index 9784327c15..bb612ce58a 100644 --- a/src/subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts +++ b/src/subdomains/core/liquidity-management/services/liquidity-management-balance.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Util } from 'src/shared/utils/util'; import { In } from 'typeorm'; import { LiquidityBalance } from '../entities/liquidity-balance.entity'; @@ -9,12 +10,15 @@ import { LiquidityBalanceRepository } from '../repositories/liquidity-balance.re @Injectable() export class LiquidityManagementBalanceService { - private readonly logger = new DfxLogger(LiquidityManagementBalanceService); + private readonly logger: DfxLogger; constructor( private readonly balanceIntegrationFactory: LiquidityBalanceIntegrationFactory, private readonly balanceRepo: LiquidityBalanceRepository, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(LiquidityManagementBalanceService); + } //*** PUBLIC API ***// diff --git a/src/subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts b/src/subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts index dbee9721d9..39e074aa9e 100644 --- a/src/subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts +++ b/src/subdomains/core/liquidity-management/services/liquidity-management-pipeline.service.ts @@ -1,6 +1,7 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; @@ -20,7 +21,7 @@ import { LiquidityManagementRuleRepository } from '../repositories/liquidity-man @Injectable() export class LiquidityManagementPipelineService { - private readonly logger = new DfxLogger(LiquidityManagementPipelineService); + private readonly logger: DfxLogger; constructor( private readonly ruleRepo: LiquidityManagementRuleRepository, @@ -28,7 +29,10 @@ export class LiquidityManagementPipelineService { private readonly pipelineRepo: LiquidityManagementPipelineRepository, private readonly actionIntegrationFactory: LiquidityActionIntegrationFactory, private readonly notificationService: NotificationService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(LiquidityManagementPipelineService); + } //*** JOBS ***// diff --git a/src/subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts b/src/subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts index 7c7e254c24..d8fb202028 100644 --- a/src/subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts +++ b/src/subdomains/core/liquidity-management/services/liquidity-management-rule.service.ts @@ -1,10 +1,11 @@ import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; @@ -27,7 +28,7 @@ import { LiquidityManagementRuleRepository } from '../repositories/liquidity-man @Injectable() export class LiquidityManagementRuleService { - private readonly logger = new DfxLogger(LiquidityManagementRuleService); + private readonly logger: DfxLogger; constructor( private readonly ruleRepo: LiquidityManagementRuleRepository, @@ -36,7 +37,10 @@ export class LiquidityManagementRuleService { private readonly fiatService: FiatService, private readonly actionIntegrationFactory: LiquidityActionIntegrationFactory, private readonly notificationService: NotificationService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(LiquidityManagementRuleService); + } //*** PUBLIC API ***// diff --git a/src/subdomains/core/liquidity-management/services/liquidity-management.service.ts b/src/subdomains/core/liquidity-management/services/liquidity-management.service.ts index 570d03ec1d..2db4f48ecc 100644 --- a/src/subdomains/core/liquidity-management/services/liquidity-management.service.ts +++ b/src/subdomains/core/liquidity-management/services/liquidity-management.service.ts @@ -1,7 +1,8 @@ import { BadRequestException, ConflictException, Injectable, NotFoundException } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { SettingService } from 'src/shared/models/setting/setting.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -17,8 +18,7 @@ import { LiquidityManagementBalanceService } from './liquidity-management-balanc @Injectable() export class LiquidityManagementService { - private readonly logger = new DfxLogger(LiquidityManagementService); - + private readonly logger: DfxLogger; private readonly ruleActivations = new Map(); constructor( @@ -26,7 +26,10 @@ export class LiquidityManagementService { private readonly pipelineRepo: LiquidityManagementPipelineRepository, private readonly balanceService: LiquidityManagementBalanceService, private readonly settingService: SettingService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(LiquidityManagementService); + } //*** JOBS ***// diff --git a/src/subdomains/core/monitoring/metric.observer.ts b/src/subdomains/core/monitoring/metric.observer.ts index 593283e698..4791dd36b0 100644 --- a/src/subdomains/core/monitoring/metric.observer.ts +++ b/src/subdomains/core/monitoring/metric.observer.ts @@ -1,7 +1,7 @@ import { NotImplementedException } from '@nestjs/common'; import { BehaviorSubject, Observable, skip } from 'rxjs'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { MonitoringService } from './monitoring.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; export abstract class MetricObserver { protected abstract readonly logger: DfxLogger; diff --git a/src/subdomains/core/monitoring/monitor-connection-pool.service.ts b/src/subdomains/core/monitoring/monitor-connection-pool.service.ts index 56b4418727..f73e441f3c 100644 --- a/src/subdomains/core/monitoring/monitor-connection-pool.service.ts +++ b/src/subdomains/core/monitoring/monitor-connection-pool.service.ts @@ -2,7 +2,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { ConnectionPool } from 'mssql/lib/tedious/connection-pool'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { DataSource } from 'typeorm'; @@ -11,13 +12,13 @@ import { SqlServerDriver } from 'typeorm/driver/sqlserver/SqlServerDriver'; @Injectable() export class MonitorConnectionPoolService { - private readonly logger = new DfxLogger(MonitorConnectionPoolService); - + private readonly logger: DfxLogger; private readonly dbConnectionPool: ConnectionPool; - constructor(dataSource: DataSource) { + constructor(dataSource: DataSource, readonly loggerFactory: LoggerFactory) { const dbDriver = dataSource.driver as SqlServerDriver; this.dbConnectionPool = dbDriver.master; + this.logger = loggerFactory.create(MonitorConnectionPoolService); } @DfxCron(CronExpression.EVERY_SECOND, { process: Process.MONITOR_CONNECTION_POOL }) diff --git a/src/subdomains/core/monitoring/monitoring.service.ts b/src/subdomains/core/monitoring/monitoring.service.ts index f71b30ae29..a1ba65b61e 100644 --- a/src/subdomains/core/monitoring/monitoring.service.ts +++ b/src/subdomains/core/monitoring/monitoring.service.ts @@ -1,7 +1,8 @@ import { Injectable, NotFoundException, OnModuleInit } from '@nestjs/common'; import { cloneDeep, isEqual } from 'lodash'; import { BehaviorSubject, debounceTime, pairwise } from 'rxjs'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; import { NotificationService } from 'src/subdomains/supporting/notification/services/notification.service'; import { MetricObserver } from './metric.observer'; @@ -12,7 +13,7 @@ type SubsystemObservers = Map>; @Injectable() export class MonitoringService implements OnModuleInit { - private readonly logger = new DfxLogger(MonitoringService); + private readonly logger: DfxLogger; #$state: BehaviorSubject = new BehaviorSubject({}); #observers: Map = new Map(); @@ -20,7 +21,10 @@ export class MonitoringService implements OnModuleInit { constructor( private systemStateSnapshotRepo: SystemStateSnapshotRepository, readonly notificationService: NotificationService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(MonitoringService); + } onModuleInit() { void this.initState(); diff --git a/src/subdomains/core/monitoring/observers/aml.observer.ts b/src/subdomains/core/monitoring/observers/aml.observer.ts index b742e15794..73d258303b 100644 --- a/src/subdomains/core/monitoring/observers/aml.observer.ts +++ b/src/subdomains/core/monitoring/observers/aml.observer.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MetricObserver } from 'src/subdomains/core/monitoring/metric.observer'; @@ -22,10 +23,16 @@ interface AmlDetails { @Injectable() export class AmlObserver extends MetricObserver { - protected readonly logger = new DfxLogger(AmlObserver); + protected readonly logger: DfxLogger; - constructor(monitoringService: MonitoringService, private readonly repos: RepositoryFactory) { + constructor( + monitoringService: MonitoringService, + private readonly repos: RepositoryFactory, + readonly loggerFactory: LoggerFactory, + ) { super(monitoringService, 'payment', 'aml'); + + this.logger = this.loggerFactory.create(AmlObserver); } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/bank.observer.ts b/src/subdomains/core/monitoring/observers/bank.observer.ts index 849efce65e..2e5f0ff3c6 100644 --- a/src/subdomains/core/monitoring/observers/bank.observer.ts +++ b/src/subdomains/core/monitoring/observers/bank.observer.ts @@ -3,8 +3,9 @@ import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; import { OlkypayService } from 'src/integration/bank/services/olkypay.service'; import { RevolutService } from 'src/integration/bank/services/revolut.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -24,16 +25,19 @@ interface BankData { @Injectable() export class BankObserver extends MetricObserver { - protected readonly logger = new DfxLogger(BankObserver); + protected readonly logger: DfxLogger; constructor( monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, private readonly olkypayService: OlkypayService, private readonly bankService: BankService, private readonly repos: RepositoryFactory, private readonly revolutService: RevolutService, ) { super(monitoringService, 'bank', 'balance'); + + this.logger = this.loggerFactory.create(BankObserver); } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/banking-bot.observer.ts b/src/subdomains/core/monitoring/observers/banking-bot.observer.ts index da0ab95e1e..de4e400fc9 100644 --- a/src/subdomains/core/monitoring/observers/banking-bot.observer.ts +++ b/src/subdomains/core/monitoring/observers/banking-bot.observer.ts @@ -1,7 +1,8 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { Type, plainToClass } from 'class-transformer'; import { IsNotEmpty, IsOptional, IsString, ValidateIf, ValidateNested, validateSync } from 'class-validator'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { MetricObserver } from 'src/subdomains/core/monitoring/metric.observer'; import { MonitoringService } from 'src/subdomains/core/monitoring/monitoring.service'; @@ -51,10 +52,12 @@ class BankingBotDataDto { @Injectable() export class BankingBotObserver extends MetricObserver { - protected readonly logger = new DfxLogger(BankingBotObserver); + protected readonly logger: DfxLogger; - constructor(monitoringService: MonitoringService) { + constructor(monitoringService: MonitoringService, readonly loggerFactory: LoggerFactory) { super(monitoringService, 'bankingBot', 'logs'); + + this.logger = this.loggerFactory.create(BankingBotObserver); } async onWebhook(_dto: unknown): Promise { diff --git a/src/subdomains/core/monitoring/observers/checkout.observer.ts b/src/subdomains/core/monitoring/observers/checkout.observer.ts index 5bad9a248d..f9d1b0868c 100644 --- a/src/subdomains/core/monitoring/observers/checkout.observer.ts +++ b/src/subdomains/core/monitoring/observers/checkout.observer.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { CheckoutBalances, CheckoutService } from 'src/integration/checkout/services/checkout.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MetricObserver } from 'src/subdomains/core/monitoring/metric.observer'; @@ -18,14 +19,17 @@ interface CheckoutData { @Injectable() export class CheckoutObserver extends MetricObserver { - protected readonly logger = new DfxLogger(CheckoutObserver); + protected readonly logger: DfxLogger; constructor( monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, private readonly checkoutService: CheckoutService, private readonly checkoutTxService: CheckoutTxService, ) { super(monitoringService, 'checkout', 'balance'); + + this.logger = this.loggerFactory.create(CheckoutObserver); } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/exchange.observer.ts b/src/subdomains/core/monitoring/observers/exchange.observer.ts index 20c0125c60..766768ecc2 100644 --- a/src/subdomains/core/monitoring/observers/exchange.observer.ts +++ b/src/subdomains/core/monitoring/observers/exchange.observer.ts @@ -2,8 +2,9 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { ExchangeTxType } from 'src/integration/exchange/entities/exchange-tx.entity'; import { ExchangeName } from 'src/integration/exchange/enums/exchange.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -18,10 +19,16 @@ interface ExchangeData { @Injectable() export class ExchangeObserver extends MetricObserver { - protected readonly logger = new DfxLogger(ExchangeObserver); + protected readonly logger: DfxLogger; - constructor(monitoringService: MonitoringService, private readonly repos: RepositoryFactory) { + constructor( + monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, + private readonly repos: RepositoryFactory, + ) { super(monitoringService, 'exchange', 'volume'); + + this.logger = this.loggerFactory.create(ExchangeObserver); } @DfxCron(CronExpression.EVERY_10_MINUTES, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/external-services.observer.ts b/src/subdomains/core/monitoring/observers/external-services.observer.ts index 657da9ccad..f1625240fa 100644 --- a/src/subdomains/core/monitoring/observers/external-services.observer.ts +++ b/src/subdomains/core/monitoring/observers/external-services.observer.ts @@ -2,7 +2,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { IbanService } from 'src/integration/bank/services/iban.service'; import { LetterService } from 'src/integration/letter/letter.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MetricObserver } from 'src/subdomains/core/monitoring/metric.observer'; @@ -21,14 +22,17 @@ enum Status { @Injectable() export class ExternalServicesObserver extends MetricObserver { - protected readonly logger = new DfxLogger(ExternalServicesObserver); + protected readonly logger: DfxLogger; constructor( monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, private readonly ibanService: IbanService, private readonly letterService: LetterService, ) { super(monitoringService, 'externalServices', 'combined'); + + this.logger = this.loggerFactory.create(ExternalServicesObserver); } @DfxCron(CronExpression.EVERY_10_MINUTES, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/liquidity.observer.ts b/src/subdomains/core/monitoring/observers/liquidity.observer.ts index 30782ffd8c..86256d4ef1 100644 --- a/src/subdomains/core/monitoring/observers/liquidity.observer.ts +++ b/src/subdomains/core/monitoring/observers/liquidity.observer.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process, ProcessService } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -19,14 +20,17 @@ interface LiquidityData { @Injectable() export class LiquidityObserver extends MetricObserver { - protected readonly logger = new DfxLogger(LiquidityObserver); + protected readonly logger: DfxLogger; constructor( monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, private readonly repos: RepositoryFactory, private readonly processService: ProcessService, ) { super(monitoringService, 'liquidity', 'trading'); + + this.logger = this.loggerFactory.create(LiquidityObserver); } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/node-balance.observer.ts b/src/subdomains/core/monitoring/observers/node-balance.observer.ts index 2464a08f1f..7e9836d887 100644 --- a/src/subdomains/core/monitoring/observers/node-balance.observer.ts +++ b/src/subdomains/core/monitoring/observers/node-balance.observer.ts @@ -3,7 +3,8 @@ import { CronExpression } from '@nestjs/schedule'; import BigNumber from 'bignumber.js'; import { BitcoinClient } from 'src/integration/blockchain/bitcoin/node/bitcoin-client'; import { BitcoinNodeType, BitcoinService } from 'src/integration/blockchain/bitcoin/node/bitcoin.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MetricObserver } from 'src/subdomains/core/monitoring/metric.observer'; @@ -19,14 +20,19 @@ interface NodeBalanceData { @Injectable() export class NodeBalanceObserver extends MetricObserver { - protected readonly logger = new DfxLogger(NodeBalanceObserver); + protected readonly logger: DfxLogger; private readonly bitcoinClient: BitcoinClient; - constructor(monitoringService: MonitoringService, readonly bitcoinService: BitcoinService) { + constructor( + monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, + readonly bitcoinService: BitcoinService, + ) { super(monitoringService, 'node', 'balance'); this.bitcoinClient = bitcoinService.getDefaultClient(BitcoinNodeType.BTC_INPUT); + this.logger = this.loggerFactory.create(NodeBalanceObserver); } @DfxCron(CronExpression.EVERY_10_MINUTES, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/node-health.observer.ts b/src/subdomains/core/monitoring/observers/node-health.observer.ts index b1c26424d8..eaf04ff417 100644 --- a/src/subdomains/core/monitoring/observers/node-health.observer.ts +++ b/src/subdomains/core/monitoring/observers/node-health.observer.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { BitcoinNodeType, BitcoinService } from 'src/integration/blockchain/bitcoin/node/bitcoin.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -28,14 +29,17 @@ type NodesState = NodePoolState[]; // --------- // @Injectable() export class NodeHealthObserver extends MetricObserver { - protected readonly logger = new DfxLogger(NodeHealthObserver); + protected readonly logger: DfxLogger; constructor( readonly monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, private readonly bitcoinService: BitcoinService, private readonly notificationService: NotificationService, ) { super(monitoringService, 'node', 'health'); + + this.logger = this.loggerFactory.create(NodeHealthObserver); } init(data: NodesState) { diff --git a/src/subdomains/core/monitoring/observers/payment.observer.ts b/src/subdomains/core/monitoring/observers/payment.observer.ts index b831b3d2b9..c3c9bc354c 100644 --- a/src/subdomains/core/monitoring/observers/payment.observer.ts +++ b/src/subdomains/core/monitoring/observers/payment.observer.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -38,10 +39,16 @@ interface IncompleteTransactions { @Injectable() export class PaymentObserver extends MetricObserver { - protected readonly logger = new DfxLogger(PaymentObserver); + protected readonly logger: DfxLogger; - constructor(monitoringService: MonitoringService, private readonly repos: RepositoryFactory) { + constructor( + monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, + private readonly repos: RepositoryFactory, + ) { super(monitoringService, 'payment', 'combined'); + + this.logger = this.loggerFactory.create(PaymentObserver); } @DfxCron(CronExpression.EVERY_10_MINUTES, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/monitoring/observers/user.observer.ts b/src/subdomains/core/monitoring/observers/user.observer.ts index aded7a051a..72b05c7914 100644 --- a/src/subdomains/core/monitoring/observers/user.observer.ts +++ b/src/subdomains/core/monitoring/observers/user.observer.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MetricObserver } from 'src/subdomains/core/monitoring/metric.observer'; @@ -18,10 +19,16 @@ interface UserWithout { @Injectable() export class UserObserver extends MetricObserver { - protected readonly logger = new DfxLogger(UserObserver); + protected readonly logger: DfxLogger; - constructor(monitoringService: MonitoringService, private readonly repos: RepositoryFactory) { + constructor( + monitoringService: MonitoringService, + readonly loggerFactory: LoggerFactory, + private readonly repos: RepositoryFactory, + ) { super(monitoringService, 'user', 'kyc'); + + this.logger = this.loggerFactory.create(UserObserver); } @DfxCron(CronExpression.EVERY_10_MINUTES, { process: Process.MONITORING, timeout: 1800 }) diff --git a/src/subdomains/core/payment-link/controllers/payment-link.controller.ts b/src/subdomains/core/payment-link/controllers/payment-link.controller.ts index 8957cdb881..92c19fa9b1 100644 --- a/src/subdomains/core/payment-link/controllers/payment-link.controller.ts +++ b/src/subdomains/core/payment-link/controllers/payment-link.controller.ts @@ -23,12 +23,13 @@ import { ApiTags, } from '@nestjs/swagger'; import { Response } from 'express'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { GetJwt } from 'src/shared/auth/get-jwt.decorator'; import { JwtPayload } from 'src/shared/auth/jwt-payload.interface'; import { RoleGuard } from 'src/shared/auth/role.guard'; import { UserActiveGuard } from 'src/shared/auth/user-active.guard'; import { UserRole } from 'src/shared/auth/user-role.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { SellService } from 'src/subdomains/core/sell-crypto/route/sell.service'; import { UserDataService } from 'src/subdomains/generic/user/models/user-data/user-data.service'; @@ -52,13 +53,17 @@ import { PaymentLinkService } from '../services/payment-link.service'; @ApiTags('Payment Link') @Controller('paymentLink') export class PaymentLinkController { - private readonly logger = new DfxLogger(PaymentLinkController); + private readonly logger: DfxLogger; + constructor( private readonly userDataService: UserDataService, private readonly paymentLinkService: PaymentLinkService, private readonly paymentLinkPaymentService: PaymentLinkPaymentService, private readonly sellService: SellService, - ) {} + readonly loggerFactory: LoggerFactory, + ) { + this.logger = loggerFactory.create(PaymentLinkController); + } @Get() @ApiBearerAuth() diff --git a/src/subdomains/core/payment-link/services/payment-activation.service.ts b/src/subdomains/core/payment-link/services/payment-activation.service.ts index c894085f7f..1b788fc846 100644 --- a/src/subdomains/core/payment-link/services/payment-activation.service.ts +++ b/src/subdomains/core/payment-link/services/payment-activation.service.ts @@ -7,9 +7,10 @@ import { LnBitsWalletPaymentParamsDto } from 'src/integration/lightning/dto/lnbi import { LightningClient } from 'src/integration/lightning/lightning-client'; import { LightningHelper } from 'src/integration/lightning/lightning-helper'; import { LightningService } from 'src/integration/lightning/services/lightning.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { C2BPaymentLinkService } from 'src/subdomains/core/payment-link/services/c2b-payment-link.service'; import { Equal, LessThan, Not } from 'typeorm'; @@ -23,8 +24,7 @@ import { PaymentQuoteService } from './payment-quote.service'; @Injectable() export class PaymentActivationService implements OnModuleInit { - private readonly logger = new DfxLogger(PaymentActivationService); - + private readonly logger: DfxLogger; private readonly client: LightningClient; private evmDepositAddress: string; @@ -32,6 +32,7 @@ export class PaymentActivationService implements OnModuleInit { private bitcoinDepositAddress: string; constructor( + readonly loggerFactory: LoggerFactory, readonly lightningService: LightningService, private readonly paymentActivationRepo: PaymentActivationRepository, private readonly paymentQuoteService: PaymentQuoteService, @@ -40,6 +41,7 @@ export class PaymentActivationService implements OnModuleInit { private readonly c2bPaymentLinkService: C2BPaymentLinkService, ) { this.client = lightningService.getDefaultClient(); + this.logger = loggerFactory.create(PaymentActivationService); } onModuleInit() { diff --git a/src/subdomains/core/payment-link/services/payment-link.service.ts b/src/subdomains/core/payment-link/services/payment-link.service.ts index 9c27f2cd8f..3c4336abfb 100644 --- a/src/subdomains/core/payment-link/services/payment-link.service.ts +++ b/src/subdomains/core/payment-link/services/payment-link.service.ts @@ -14,8 +14,9 @@ import * as QRCode from 'qrcode'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { LightningHelper } from 'src/integration/lightning/lightning-helper'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { CountryService } from 'src/shared/models/country/country.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { C2BPaymentLinkService } from 'src/subdomains/core/payment-link/services/c2b-payment-link.service'; import { UserDataService } from 'src/subdomains/generic/user/models/user-data/user-data.service'; @@ -42,10 +43,12 @@ import { PaymentQuoteService } from './payment-quote.service'; @Injectable() export class PaymentLinkService { - private readonly logger = new DfxLogger(PaymentLinkService); + private readonly logger: DfxLogger; + static readonly PREFIX_UNIQUE_ID = 'pl'; constructor( + readonly loggerFactory: LoggerFactory, private readonly paymentLinkRepo: PaymentLinkRepository, private readonly paymentLinkPaymentService: PaymentLinkPaymentService, private readonly paymentQuoteService: PaymentQuoteService, @@ -54,7 +57,9 @@ export class PaymentLinkService { private readonly sellService: SellService, private readonly c2bPaymentLinkService: C2BPaymentLinkService, private readonly i18n: I18nService, - ) {} + ) { + this.logger = loggerFactory.create(PaymentLinkService); + } async getOrThrow( userId: number, diff --git a/src/subdomains/core/payment-link/services/payment-quote.service.ts b/src/subdomains/core/payment-link/services/payment-quote.service.ts index 4e5fe16f5b..9045d66bb7 100644 --- a/src/subdomains/core/payment-link/services/payment-quote.service.ts +++ b/src/subdomains/core/payment-link/services/payment-quote.service.ts @@ -6,10 +6,11 @@ import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.e import { EvmGasPriceService } from 'src/integration/blockchain/shared/evm/evm-gas-price.service'; import { BlockchainRegistryService } from 'src/integration/blockchain/shared/services/blockchain-registry.service'; import { LightningHelper } from 'src/integration/lightning/lightning-helper'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { C2BPaymentLinkService } from 'src/subdomains/core/payment-link/services/c2b-payment-link.service'; import { PayoutBitcoinService } from 'src/subdomains/supporting/payout/services/payout-bitcoin.service'; @@ -30,7 +31,7 @@ import { PaymentQuoteRepository } from '../repositories/payment-quote.repository @Injectable() export class PaymentQuoteService { - private readonly logger = new DfxLogger(PaymentQuoteService); + private readonly logger: DfxLogger; static readonly PREFIX_UNIQUE_ID = 'plq'; @@ -50,6 +51,7 @@ export class PaymentQuoteService { private readonly transferAmountAssetOrder: string[] = ['dEURO', 'ZCHF', 'USDT', 'USDC', 'DAI']; constructor( + readonly loggerFactory: LoggerFactory, private readonly paymentQuoteRepo: PaymentQuoteRepository, private readonly blockchainRegistryService: BlockchainRegistryService, private readonly assetService: AssetService, @@ -58,7 +60,9 @@ export class PaymentQuoteService { private readonly payoutMoneroService: PayoutMoneroService, private readonly payoutBitcoinService: PayoutBitcoinService, private readonly c2bPaymentLinkService: C2BPaymentLinkService, - ) {} + ) { + this.logger = loggerFactory.create(PaymentQuoteService); + } // --- JOBS --- // async processExpiredQuotes(): Promise { diff --git a/src/subdomains/core/payment-link/services/payment-webhook.service.ts b/src/subdomains/core/payment-link/services/payment-webhook.service.ts index b5c9778271..3b778a0825 100644 --- a/src/subdomains/core/payment-link/services/payment-webhook.service.ts +++ b/src/subdomains/core/payment-link/services/payment-webhook.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { Util } from 'src/shared/utils/util'; @@ -9,12 +10,12 @@ import { PaymentLink } from '../entities/payment-link.entity'; @Injectable() export class PaymentWebhookService { - private readonly logger = new DfxLogger(PaymentWebhookService); - + private readonly logger: DfxLogger; private readonly webhookSendQueue: QueueHandler; - constructor(private readonly http: HttpService) { + constructor(private readonly http: HttpService, readonly loggerFactory: LoggerFactory) { this.webhookSendQueue = QueueHandler.createParallelQueueHandler(10); + this.logger = loggerFactory.create(PaymentWebhookService); } async sendWebhook(paymentLink: PaymentLink): Promise { diff --git a/src/subdomains/core/referral/process/ref.service.ts b/src/subdomains/core/referral/process/ref.service.ts index c952dbe942..64741190ab 100644 --- a/src/subdomains/core/referral/process/ref.service.ts +++ b/src/subdomains/core/referral/process/ref.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; import { IsNull, LessThan } from 'typeorm'; @@ -9,11 +10,12 @@ import { RefRepository } from './ref.repository'; @Injectable() export class RefService { - private readonly logger = new DfxLogger(RefService); - + private readonly logger: DfxLogger; private readonly refExpirationDays = 3; - constructor(private readonly repo: RefRepository) {} + constructor(private readonly repo: RefRepository, readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(RefService); + } @DfxCron(CronExpression.EVERY_HOUR, { timeout: 7200 }) async checkRefs(): Promise { diff --git a/src/subdomains/core/referral/reward/services/ref-reward-dex.service.ts b/src/subdomains/core/referral/reward/services/ref-reward-dex.service.ts index 35b88e5430..2baa1c2d92 100644 --- a/src/subdomains/core/referral/reward/services/ref-reward-dex.service.ts +++ b/src/subdomains/core/referral/reward/services/ref-reward-dex.service.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { LiquidityOrderContext } from 'src/subdomains/supporting/dex/entities/liquidity-order.entity'; import { PurchaseLiquidityRequest, ReserveLiquidityRequest } from 'src/subdomains/supporting/dex/interfaces'; @@ -20,15 +21,18 @@ export interface RefLiquidityRequest { @Injectable() export class RefRewardDexService { - private readonly logger = new DfxLogger(RefRewardDexService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly refRewardRepo: RefRewardRepository, private readonly dexService: DexService, private readonly assetService: AssetService, private readonly fiatService: FiatService, private readonly priceService: PricingService, - ) {} + ) { + this.logger = loggerFactory.create(RefRewardDexService); + } async secureLiquidity(): Promise { const newRefRewards = await this.refRewardRepo.find({ diff --git a/src/subdomains/core/referral/reward/services/ref-reward-notification.service.ts b/src/subdomains/core/referral/reward/services/ref-reward-notification.service.ts index 1c7244d1ff..09b5f0adf1 100644 --- a/src/subdomains/core/referral/reward/services/ref-reward-notification.service.ts +++ b/src/subdomains/core/referral/reward/services/ref-reward-notification.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; import { MailKey, MailTranslationKey } from 'src/subdomains/supporting/notification/factories/mail.factory'; @@ -10,12 +11,15 @@ import { RefRewardRepository } from '../ref-reward.repository'; @Injectable() export class RefRewardNotificationService { - private readonly logger = new DfxLogger(RefRewardNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly refRewardRepo: RefRewardRepository, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(RefRewardNotificationService); + } async sendNotificationMails(): Promise { if (DisabledProcess(Process.REF_REWARD_MAIL)) return; diff --git a/src/subdomains/core/referral/reward/services/ref-reward-out.service.ts b/src/subdomains/core/referral/reward/services/ref-reward-out.service.ts index 78ec469fb6..8055bf7407 100644 --- a/src/subdomains/core/referral/reward/services/ref-reward-out.service.ts +++ b/src/subdomains/core/referral/reward/services/ref-reward-out.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { LiquidityOrderContext } from 'src/subdomains/supporting/dex/entities/liquidity-order.entity'; import { DexService } from 'src/subdomains/supporting/dex/services/dex.service'; @@ -13,15 +14,18 @@ import { RefRewardService } from './ref-reward.service'; @Injectable() export class RefRewardOutService { - private readonly logger = new DfxLogger(RefRewardOutService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly refRewardRepo: RefRewardRepository, private readonly payoutService: PayoutService, private readonly assetService: AssetService, private readonly dexService: DexService, private readonly refRewardService: RefRewardService, - ) {} + ) { + this.logger = loggerFactory.create(RefRewardOutService); + } async checkPaidTransaction(): Promise { try { diff --git a/src/subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts b/src/subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts index 9b6dfdb23a..61bfef9d61 100644 --- a/src/subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts +++ b/src/subdomains/core/sell-crypto/process/services/buy-fiat-notification.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { AmlReason, AmlReasonWithoutReason, KycAmlReasons } from 'src/subdomains/core/aml/enums/aml-reason.enum'; @@ -18,12 +19,15 @@ import { BuyFiatRepository } from '../buy-fiat.repository'; @Injectable() export class BuyFiatNotificationService { - private readonly logger = new DfxLogger(BuyFiatNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly buyFiatRepo: BuyFiatRepository, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(BuyFiatNotificationService); + } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.BUY_FIAT_MAIL, timeout: 1800 }) async sendNotificationMails(): Promise { diff --git a/src/subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts b/src/subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts index f44e489714..aa426f981a 100644 --- a/src/subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts +++ b/src/subdomains/core/sell-crypto/process/services/buy-fiat-preparation.service.ts @@ -1,9 +1,10 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { CountryService } from 'src/shared/models/country/country.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { AmountType, Util } from 'src/shared/utils/util'; import { AmlReason } from 'src/subdomains/core/aml/enums/aml-reason.enum'; import { AmlService } from 'src/subdomains/core/aml/services/aml.service'; @@ -27,11 +28,13 @@ import { BuyFiatService } from './buy-fiat.service'; @Injectable() export class BuyFiatPreparationService implements OnModuleInit { - private readonly logger = new DfxLogger(BuyFiatPreparationService); + private readonly logger: DfxLogger; + private chf: Fiat; private eur: Fiat; constructor( + readonly loggerFactory: LoggerFactory, private readonly buyFiatRepo: BuyFiatRepository, private readonly transactionHelper: TransactionHelper, private readonly pricingService: PricingService, @@ -42,7 +45,9 @@ export class BuyFiatPreparationService implements OnModuleInit { private readonly countryService: CountryService, private readonly buyFiatNotificationService: BuyFiatNotificationService, private readonly fiatOutputService: FiatOutputService, - ) {} + ) { + this.logger = loggerFactory.create(BuyFiatNotificationService); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts b/src/subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts index 3abbd786ad..99a6f0e992 100644 --- a/src/subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts +++ b/src/subdomains/core/sell-crypto/process/services/buy-fiat-registration.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { CryptoInput, PayInPurpose, PayInStatus } from 'src/subdomains/supporting/payin/entities/crypto-input.entity'; import { PayInService } from 'src/subdomains/supporting/payin/services/payin.service'; import { TransactionHelper } from 'src/subdomains/supporting/payment/services/transaction-helper'; @@ -16,15 +17,18 @@ interface RouteIdentifier { @Injectable() export class BuyFiatRegistrationService { - private readonly logger = new DfxLogger(BuyFiatRegistrationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly buyFiatRepo: BuyFiatRepository, private readonly buyFiatService: BuyFiatService, private readonly sellRepository: SellRepository, private readonly payInService: PayInService, private readonly transactionHelper: TransactionHelper, - ) {} + ) { + this.logger = loggerFactory.create(BuyFiatRegistrationService); + } async syncReturnTxId(): Promise { const entities = await this.buyFiatRepo.find({ diff --git a/src/subdomains/core/sell-crypto/route/sell.service.ts b/src/subdomains/core/sell-crypto/route/sell.service.ts index 60f00168c6..2e4535cdc1 100644 --- a/src/subdomains/core/sell-crypto/route/sell.service.ts +++ b/src/subdomains/core/sell-crypto/route/sell.service.ts @@ -11,10 +11,11 @@ import { merge } from 'lodash'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { CryptoService } from 'src/integration/blockchain/shared/services/crypto.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { AssetDtoMapper } from 'src/shared/models/asset/dto/asset-dto.mapper'; import { FiatDtoMapper } from 'src/shared/models/fiat/dto/fiat-dto.mapper'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; import { CreateSellDto } from 'src/subdomains/core/sell-crypto/route/dto/create-sell.dto'; @@ -47,9 +48,10 @@ import { Sell } from './sell.entity'; @Injectable() export class SellService { - private readonly logger = new DfxLogger(SellService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly sellRepo: SellRepository, private readonly depositService: DepositService, private readonly userService: UserService, @@ -68,7 +70,9 @@ export class SellService { private readonly cryptoService: CryptoService, @Inject(forwardRef(() => TransactionRequestService)) private readonly transactionRequestService: TransactionRequestService, - ) {} + ) { + this.logger = loggerFactory.create(SellService); + } // --- SELLS --- // async get(userId: number, id: number): Promise { diff --git a/src/subdomains/core/trading/services/trading-order.service.ts b/src/subdomains/core/trading/services/trading-order.service.ts index 53f66f3ac3..851997dfe1 100644 --- a/src/subdomains/core/trading/services/trading-order.service.ts +++ b/src/subdomains/core/trading/services/trading-order.service.ts @@ -2,10 +2,11 @@ import { Inject, Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { EvmUtil } from 'src/integration/blockchain/shared/evm/evm.util'; import { BlockchainRegistryService } from 'src/integration/blockchain/shared/services/blockchain-registry.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { LiquidityOrderContext } from 'src/subdomains/supporting/dex/entities/liquidity-order.entity'; import { ReserveLiquidityRequest } from 'src/subdomains/supporting/dex/interfaces'; @@ -24,7 +25,7 @@ import { TradingRuleRepository } from '../repositories/trading-rule.respository' @Injectable() export class TradingOrderService implements OnModuleInit { - private readonly logger = new DfxLogger(TradingOrderService); + private readonly logger: DfxLogger; @Inject() private readonly ruleRepo: TradingRuleRepository; @Inject() private readonly orderRepo: TradingOrderRepository; @@ -32,6 +33,7 @@ export class TradingOrderService implements OnModuleInit { private chf: Fiat; constructor( + readonly loggerFactory: LoggerFactory, private readonly dexService: DexService, private readonly notificationService: NotificationService, private readonly blockchainRegistryService: BlockchainRegistryService, @@ -39,7 +41,9 @@ export class TradingOrderService implements OnModuleInit { private readonly pricingService: PricingService, private readonly fiatService: FiatService, private readonly assetService: AssetService, - ) {} + ) { + this.logger = loggerFactory.create(TradingOrderService); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/subdomains/core/trading/services/trading-rule.service.ts b/src/subdomains/core/trading/services/trading-rule.service.ts index c96c829a18..ce2a040bd5 100644 --- a/src/subdomains/core/trading/services/trading-rule.service.ts +++ b/src/subdomains/core/trading/services/trading-rule.service.ts @@ -1,5 +1,6 @@ import { Inject, Injectable, NotFoundException } from '@nestjs/common'; -import { DfxLogger, LogLevel } from 'src/shared/services/dfx-logger'; +import { DfxLogger, LogLevel } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { In, IsNull, Not } from 'typeorm'; import { UpdateTradingRuleDto } from '../dto/update-trading-rule.dto'; import { TradingOrder } from '../entities/trading-order.entity'; @@ -12,12 +13,14 @@ import { TradingService } from './trading.service'; @Injectable() export class TradingRuleService { - private readonly logger = new DfxLogger(TradingRuleService); + private readonly logger: DfxLogger; @Inject() private readonly ruleRepo: TradingRuleRepository; @Inject() private readonly orderRepo: TradingOrderRepository; - constructor(private readonly tradingService: TradingService) {} + constructor(private readonly tradingService: TradingService, readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(TradingRuleService); + } // --- PUBLIC API --- // diff --git a/src/subdomains/core/trading/services/trading.service.ts b/src/subdomains/core/trading/services/trading.service.ts index ba6eeb9cea..407463d24a 100644 --- a/src/subdomains/core/trading/services/trading.service.ts +++ b/src/subdomains/core/trading/services/trading.service.ts @@ -4,9 +4,10 @@ import { ethers } from 'ethers'; import { EvmClient } from 'src/integration/blockchain/shared/evm/evm-client'; import { EvmUtil } from 'src/integration/blockchain/shared/evm/evm.util'; import { BlockchainRegistryService } from 'src/integration/blockchain/shared/services/blockchain-registry.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { Price } from 'src/subdomains/supporting/pricing/domain/entities/price'; import { PriceSource } from 'src/subdomains/supporting/pricing/domain/entities/price-rule.entity'; @@ -17,13 +18,16 @@ import { PoolOutOfRangeException } from '../exceptions/pool-out-of-range.excepti @Injectable() export class TradingService { - private readonly logger = new DfxLogger(TradingService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly blockchainRegistryService: BlockchainRegistryService, private readonly pricingService: PricingService, private readonly assetService: AssetService, - ) {} + ) { + this.logger = loggerFactory.create(TradingService); + } async createTradingInfo(tradingRule: TradingRule): Promise { if (tradingRule.leftAsset.blockchain !== tradingRule.rightAsset.blockchain) diff --git a/src/subdomains/generic/gs/gs.controller.ts b/src/subdomains/generic/gs/gs.controller.ts index d216e03216..8a78009004 100644 --- a/src/subdomains/generic/gs/gs.controller.ts +++ b/src/subdomains/generic/gs/gs.controller.ts @@ -1,19 +1,22 @@ import { BadRequestException, Body, Controller, Get, Post, Query, UseGuards } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { ApiBearerAuth, ApiExcludeEndpoint } from '@nestjs/swagger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RoleGuard } from 'src/shared/auth/role.guard'; import { UserActiveGuard } from 'src/shared/auth/user-active.guard'; import { UserRole } from 'src/shared/auth/user-role.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DbQueryBaseDto, DbQueryDto, DbReturnData } from './dto/db-query.dto'; import { SupportDataQuery, SupportReturnData } from './dto/support-data.dto'; import { GsService } from './gs.service'; @Controller('gs') export class GsController { - private readonly logger = new DfxLogger(GsController); + private readonly logger: DfxLogger; - constructor(private readonly gsService: GsService) {} + constructor(private readonly gsService: GsService, readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(GsController); + } @Post('db') @ApiBearerAuth() diff --git a/src/subdomains/generic/gs/gs.service.ts b/src/subdomains/generic/gs/gs.service.ts index a0f8d3d1e6..67a40fb4b5 100644 --- a/src/subdomains/generic/gs/gs.service.ts +++ b/src/subdomains/generic/gs/gs.service.ts @@ -1,5 +1,6 @@ import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Util } from 'src/shared/utils/util'; import { BuyCryptoService } from 'src/subdomains/core/buy-crypto/process/services/buy-crypto.service'; import { BuyService } from 'src/subdomains/core/buy-crypto/routes/buy/buy.service'; @@ -44,9 +45,10 @@ export enum SupportTable { @Injectable() export class GsService { - private readonly logger = new DfxLogger(GsService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly userDataService: UserDataService, private readonly userService: UserService, private readonly buyService: BuyService, @@ -67,7 +69,9 @@ export class GsService { private readonly limitRequestService: LimitRequestService, private readonly supportIssueService: SupportIssueService, private readonly swapService: SwapService, - ) {} + ) { + this.logger = loggerFactory.create(GsService); + } async getDbData(query: DbQueryDto): Promise { const additionalSelect = Array.from( diff --git a/src/subdomains/generic/kyc/controllers/kyc.controller.ts b/src/subdomains/generic/kyc/controllers/kyc.controller.ts index a185147196..5382c5258a 100644 --- a/src/subdomains/generic/kyc/controllers/kyc.controller.ts +++ b/src/subdomains/generic/kyc/controllers/kyc.controller.ts @@ -29,6 +29,8 @@ import { import { Request, Response } from 'express'; import { RealIP } from 'nestjs-real-ip'; import { Config, GetConfig } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { GetJwt } from 'src/shared/auth/get-jwt.decorator'; import { JwtPayload } from 'src/shared/auth/jwt-payload.interface'; import { OptionalJwtAuthGuard } from 'src/shared/auth/optional.guard'; @@ -37,7 +39,6 @@ import { UserActiveGuard } from 'src/shared/auth/user-active.guard'; import { UserRole } from 'src/shared/auth/user-role.enum'; import { CountryDtoMapper } from 'src/shared/models/country/dto/country-dto.mapper'; import { CountryDto } from 'src/shared/models/country/dto/country.dto'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { IdNowResult } from '../dto/ident-result.dto'; import { IdentStatus } from '../dto/ident.dto'; @@ -77,9 +78,15 @@ const TfaResponse = { description: '2FA is required' }; @ApiTags('KYC') @Controller({ path: 'kyc', version: [GetConfig().kycVersion] }) export class KycController { - private readonly logger = new DfxLogger(KycController); + private readonly logger: DfxLogger; - constructor(private readonly kycService: KycService, private readonly tfaService: TfaService) {} + constructor( + readonly loggerFactory: LoggerFactory, + private readonly kycService: KycService, + private readonly tfaService: TfaService, + ) { + this.logger = loggerFactory.create(KycController); + } // --- 2FA --- // @Get('2fa') diff --git a/src/subdomains/generic/kyc/services/integration/ident.service.ts b/src/subdomains/generic/kyc/services/integration/ident.service.ts index 782e684680..78d63b152c 100644 --- a/src/subdomains/generic/kyc/services/integration/ident.service.ts +++ b/src/subdomains/generic/kyc/services/integration/ident.service.ts @@ -6,7 +6,8 @@ import { } from '@nestjs/common'; import { Method, ResponseType } from 'axios'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpError, HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { UserData } from 'src/subdomains/generic/user/models/user-data/user-data.entity'; @@ -19,11 +20,12 @@ import { KycStepType } from '../../enums/kyc.enum'; @Injectable() export class IdentService { - private readonly logger = new DfxLogger(IdentService); - + private readonly logger: DfxLogger; private readonly baseUrl = `${Config.kyc.gatewayHost}/api/v1`; - constructor(private readonly http: HttpService) {} + constructor(readonly loggerFactory: LoggerFactory, private readonly http: HttpService) { + this.logger = loggerFactory.create(IdentService); + } async initiateIdent(user: UserData, kycStep: KycStep): Promise { if (!kycStep.transactionId) throw new InternalServerErrorException('Transaction ID is missing'); diff --git a/src/subdomains/generic/kyc/services/integration/sum-sub.service.ts b/src/subdomains/generic/kyc/services/integration/sum-sub.service.ts index 79b1c4f1ac..f5b7a7cfa8 100644 --- a/src/subdomains/generic/kyc/services/integration/sum-sub.service.ts +++ b/src/subdomains/generic/kyc/services/integration/sum-sub.service.ts @@ -3,7 +3,8 @@ import { Method, ResponseType } from 'axios'; import * as crypto from 'crypto'; import { Request } from 'express'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpError, HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { UserData } from 'src/subdomains/generic/user/models/user-data/user-data.entity'; @@ -14,8 +15,8 @@ import { IdDocType, SumSubDataResult, SumSubDocumentMetaData, - SumsubResult, SumSubVideoData, + SumsubResult, } from '../../dto/sum-sub.dto'; import { KycStep } from '../../entities/kyc-step.entity'; import { ContentType } from '../../enums/content-type.enum'; @@ -23,8 +24,7 @@ import { KycStepType } from '../../enums/kyc.enum'; @Injectable() export class SumsubService { - private readonly logger = new DfxLogger(SumsubService); - + private readonly logger: DfxLogger; private readonly baseUrl = `https://api.sumsub.com`; private readonly kycLevelAuto = 'CH-Standard'; private readonly kycLevelVideo = 'CH-Standard-Video'; @@ -35,7 +35,9 @@ export class SumsubService { HMAC_SHA512_HEX: 'sha512', }; - constructor(private readonly http: HttpService) {} + constructor(readonly loggerFactory: LoggerFactory, private readonly http: HttpService) { + this.logger = loggerFactory.create(SumsubService); + } async initiateIdent(user: UserData, kycStep: KycStep): Promise { if (!kycStep.transactionId) throw new InternalServerErrorException('Transaction ID is missing'); diff --git a/src/subdomains/generic/kyc/services/kyc-admin.service.ts b/src/subdomains/generic/kyc/services/kyc-admin.service.ts index 4f3853bcda..1009eaeaf9 100644 --- a/src/subdomains/generic/kyc/services/kyc-admin.service.ts +++ b/src/subdomains/generic/kyc/services/kyc-admin.service.ts @@ -1,6 +1,7 @@ import { Inject, Injectable, NotFoundException, forwardRef } from '@nestjs/common'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { UpdateResult } from 'src/shared/models/entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { FindOptionsRelations } from 'typeorm'; import { KycLevel, KycStatus, UserData } from '../../user/models/user-data/user-data.entity'; import { UserDataService } from '../../user/models/user-data/user-data.service'; @@ -16,16 +17,19 @@ import { KycService } from './kyc.service'; @Injectable() export class KycAdminService { - private readonly logger = new DfxLogger(KycAdminService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly kycStepRepo: KycStepRepository, private readonly webhookService: WebhookService, private readonly kycService: KycService, private readonly kycNotificationService: KycNotificationService, @Inject(forwardRef(() => UserDataService)) private readonly userDataService: UserDataService, - ) {} + ) { + this.logger = loggerFactory.create(KycAdminService); + } async getKycSteps(userDataId: number, relations: FindOptionsRelations = {}): Promise { return this.kycStepRepo.find({ where: { userData: { id: userDataId } }, relations }); diff --git a/src/subdomains/generic/kyc/services/kyc-notification.service.ts b/src/subdomains/generic/kyc/services/kyc-notification.service.ts index b2b830221f..4aee0aca60 100644 --- a/src/subdomains/generic/kyc/services/kyc-notification.service.ts +++ b/src/subdomains/generic/kyc/services/kyc-notification.service.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -17,13 +18,16 @@ import { KycStepRepository } from '../repositories/kyc-step.repository'; @Injectable() export class KycNotificationService { - private readonly logger = new DfxLogger(KycNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly kycStepRepo: KycStepRepository, private readonly notificationService: NotificationService, private readonly webhookService: WebhookService, - ) {} + ) { + this.logger = loggerFactory.create(KycNotificationService); + } @DfxCron(CronExpression.EVERY_HOUR, { process: Process.KYC_MAIL, timeout: 1800 }) async sendNotificationMails(): Promise { diff --git a/src/subdomains/generic/kyc/services/kyc.service.ts b/src/subdomains/generic/kyc/services/kyc.service.ts index e3ede7df32..6878b0ae06 100644 --- a/src/subdomains/generic/kyc/services/kyc.service.ts +++ b/src/subdomains/generic/kyc/services/kyc.service.ts @@ -9,12 +9,13 @@ import { } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { UserRole } from 'src/shared/auth/user-role.enum'; import { Country } from 'src/shared/models/country/country.entity'; import { CountryService } from 'src/shared/models/country/country.service'; import { IEntity, UpdateResult } from 'src/shared/models/entity'; import { LanguageService } from 'src/shared/models/language/language.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { QueueHandler } from 'src/shared/utils/queue-handler'; @@ -88,11 +89,11 @@ import { TfaLevel, TfaService } from './tfa.service'; @Injectable() export class KycService { - private readonly logger = new DfxLogger(KycService); - + private readonly logger: DfxLogger; private readonly webhookQueue: QueueHandler; constructor( + readonly loggerFactory: LoggerFactory, @Inject(forwardRef(() => UserDataService)) private readonly userDataService: UserDataService, private readonly identService: IdentService, @@ -117,6 +118,7 @@ export class KycService { private readonly userDataRelationService: UserDataRelationService, ) { this.webhookQueue = new QueueHandler(); + this.logger = loggerFactory.create(KycService); } @DfxCron(CronExpression.EVERY_DAY_AT_4AM, { process: Process.KYC }) diff --git a/src/subdomains/generic/kyc/services/tfa.service.ts b/src/subdomains/generic/kyc/services/tfa.service.ts index fb4829e6e4..56a2fa4ff9 100644 --- a/src/subdomains/generic/kyc/services/tfa.service.ts +++ b/src/subdomains/generic/kyc/services/tfa.service.ts @@ -9,7 +9,8 @@ import { } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { generateSecret, verifyToken } from 'node-2fa'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -37,15 +38,17 @@ export enum TfaLevel { @Injectable() export class TfaService { - private readonly logger = new DfxLogger(TfaService); - + private readonly logger: DfxLogger; private readonly secretCache: Map = new Map(); constructor( + readonly loggerFactory: LoggerFactory, private readonly tfaRepo: TfaLogRepository, @Inject(forwardRef(() => UserDataService)) private readonly userDataService: UserDataService, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(TfaService); + } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.TFA_CACHE }) processCleanupSecretCache() { diff --git a/src/subdomains/generic/user/models/auth/auth-alby.service.ts b/src/subdomains/generic/user/models/auth/auth-alby.service.ts index 8ce9de87ce..b52b468de8 100644 --- a/src/subdomains/generic/user/models/auth/auth-alby.service.ts +++ b/src/subdomains/generic/user/models/auth/auth-alby.service.ts @@ -1,8 +1,9 @@ import { ForbiddenException, Injectable, NotFoundException } from '@nestjs/common'; import { Config } from 'src/config/config'; import { LightningHelper } from 'src/integration/lightning/lightning-helper'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { IpLogService } from 'src/shared/models/ip-log/ip-log.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { AlbySignupDto } from '../user/dto/alby.dto'; @@ -29,18 +30,20 @@ interface AlbyUserResponse { @Injectable() export class AuthAlbyService { - private readonly logger = new DfxLogger(AuthAlbyService); - + private readonly logger: DfxLogger; private readonly albyUrl = 'https://getalby.com'; private readonly albyApiUrl = 'https://api.getalby.com'; private readonly signUpData = new Map(); constructor( + readonly loggerFactory: LoggerFactory, private readonly http: HttpService, private readonly authService: AuthService, private readonly ipLogService: IpLogService, - ) {} + ) { + this.logger = loggerFactory.create(AuthAlbyService); + } getOauthUrl(dto: AlbySignupDto): string { // store the sign up data diff --git a/src/subdomains/generic/user/models/auth/auth.service.ts b/src/subdomains/generic/user/models/auth/auth.service.ts index 578f97217a..e9f03a6a89 100644 --- a/src/subdomains/generic/user/models/auth/auth.service.ts +++ b/src/subdomains/generic/user/models/auth/auth.service.ts @@ -13,11 +13,12 @@ import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.e import { CryptoService } from 'src/integration/blockchain/shared/services/crypto.service'; import { GeoLocationService } from 'src/integration/geolocation/geo-location.service'; import { SiftService } from 'src/integration/sift/services/sift.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { JwtPayload } from 'src/shared/auth/jwt-payload.interface'; import { UserRole } from 'src/shared/auth/user-role.enum'; import { IpLogService } from 'src/shared/models/ip-log/ip-log.service'; import { LanguageService } from 'src/shared/models/language/language.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; import { RefService } from 'src/subdomains/core/referral/process/ref.service'; @@ -57,12 +58,12 @@ export interface MailKeyData { @Injectable() export class AuthService { - private readonly logger = new DfxLogger(AuthService); - + private readonly logger: DfxLogger; private readonly challengeList = new Map(); private readonly mailKeyList = new Map(); constructor( + readonly loggerFactory: LoggerFactory, private readonly userService: UserService, private readonly userRepo: UserRepository, private readonly walletService: WalletService, @@ -77,7 +78,9 @@ export class AuthService { private readonly siftService: SiftService, private readonly languageService: LanguageService, private readonly geoLocationService: GeoLocationService, - ) {} + ) { + this.logger = loggerFactory.create(AuthService); + } @DfxCron(CronExpression.EVERY_MINUTE) checkLists() { diff --git a/src/subdomains/generic/user/models/bank-data/bank-data.service.ts b/src/subdomains/generic/user/models/bank-data/bank-data.service.ts index 5c63342cf5..8ce82ef319 100644 --- a/src/subdomains/generic/user/models/bank-data/bank-data.service.ts +++ b/src/subdomains/generic/user/models/bank-data/bank-data.service.ts @@ -1,9 +1,10 @@ import { BadRequestException, ForbiddenException, Injectable, NotFoundException } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import * as IbanTools from 'ibantools'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { CountryService } from 'src/shared/models/country/country.service'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -27,9 +28,10 @@ import { UpdateBankDataDto } from './dto/update-bank-data.dto'; @Injectable() export class BankDataService { - private readonly logger = new DfxLogger(BankDataService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly userDataRepo: UserDataRepository, private readonly bankDataRepo: BankDataRepository, private readonly specialAccountService: SpecialExternalAccountService, @@ -39,7 +41,9 @@ export class BankDataService { private readonly countryService: CountryService, private readonly bankAccountService: BankAccountService, private readonly kycAdminService: KycAdminService, - ) {} + ) { + this.logger = loggerFactory.create(BankDataService); + } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.BANK_DATA_VERIFICATION, timeout: 1800 }) async checkAndSetActive() { diff --git a/src/subdomains/generic/user/models/kyc/kyc.service.ts b/src/subdomains/generic/user/models/kyc/kyc.service.ts index 484016b08b..93d70f808a 100644 --- a/src/subdomains/generic/user/models/kyc/kyc.service.ts +++ b/src/subdomains/generic/user/models/kyc/kyc.service.ts @@ -5,10 +5,11 @@ import { NotFoundException, ServiceUnavailableException, } from '@nestjs/common'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Country } from 'src/shared/models/country/country.entity'; import { CountryService } from 'src/shared/models/country/country.service'; import { LanguageDtoMapper } from 'src/shared/models/language/dto/language-dto.mapper'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { HttpService } from 'src/shared/services/http.service'; import { Util } from 'src/shared/utils/util'; import { FileType, KycFileBlob } from 'src/subdomains/generic/kyc/dto/kyc-file.dto'; @@ -35,9 +36,10 @@ import { KycInfo } from './dto/kyc-info.dto'; @Injectable() export class KycService { - private readonly logger = new DfxLogger(KycService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly userDataService: UserDataService, private readonly userDataRepo: UserDataRepository, private readonly userRepo: UserRepository, @@ -45,7 +47,9 @@ export class KycService { private readonly countryService: CountryService, private readonly http: HttpService, private readonly documentService: KycDocumentService, - ) {} + ) { + this.logger = loggerFactory.create(KycService); + } // --- KYC DATA --- // diff --git a/src/subdomains/generic/user/models/organization/organization.service.ts b/src/subdomains/generic/user/models/organization/organization.service.ts index 97d4fa2d9c..5b81860258 100644 --- a/src/subdomains/generic/user/models/organization/organization.service.ts +++ b/src/subdomains/generic/user/models/organization/organization.service.ts @@ -1,7 +1,8 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { CountryService } from 'src/shared/models/country/country.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { In, IsNull } from 'typeorm'; @@ -13,13 +14,16 @@ import { OrganizationRepository } from './organization.repository'; @Injectable() export class OrganizationService { - private readonly logger = new DfxLogger(OrganizationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly organizationRepo: OrganizationRepository, private readonly countryService: CountryService, private readonly userDataRepo: UserDataRepository, - ) {} + ) { + this.logger = loggerFactory.create(OrganizationService); + } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.ORGANIZATION_SYNC, timeout: 1800 }) async syncOrganization() { diff --git a/src/subdomains/generic/user/models/user-data/user-data-notification.service.ts b/src/subdomains/generic/user/models/user-data/user-data-notification.service.ts index 5b354b7780..2d2d12c7c3 100644 --- a/src/subdomains/generic/user/models/user-data/user-data-notification.service.ts +++ b/src/subdomains/generic/user/models/user-data/user-data-notification.service.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -13,12 +14,15 @@ import { UserDataRepository } from './user-data.repository'; @Injectable() export class UserDataNotificationService { - private readonly logger = new DfxLogger(UserDataNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly userDataRepo: UserDataRepository, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(UserDataNotificationService); + } @DfxCron(CronExpression.EVERY_HOUR, { process: Process.BLACK_SQUAD_MAIL, timeout: 1800 }) async sendNotificationMails(): Promise { diff --git a/src/subdomains/generic/user/models/user-data/user-data.service.ts b/src/subdomains/generic/user/models/user-data/user-data.service.ts index 7f3740cb2f..48785f5e3f 100644 --- a/src/subdomains/generic/user/models/user-data/user-data.service.ts +++ b/src/subdomains/generic/user/models/user-data/user-data.service.ts @@ -13,6 +13,8 @@ import JSZip from 'jszip'; import { Config } from 'src/config/config'; import { CreateAccount } from 'src/integration/sift/dto/sift.dto'; import { SiftService } from 'src/integration/sift/services/sift.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { UserRole } from 'src/shared/auth/user-role.enum'; import { CountryService } from 'src/shared/models/country/country.service'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; @@ -20,7 +22,6 @@ import { LanguageService } from 'src/shared/models/language/language.service'; import { SettingService } from 'src/shared/models/setting/setting.service'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; import { ApiKeyService } from 'src/shared/services/api-key.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; import { CheckStatus } from 'src/subdomains/core/aml/enums/check-status.enum'; @@ -69,11 +70,11 @@ interface SecretCacheEntry { @Injectable() export class UserDataService { - private readonly logger = new DfxLogger(UserDataService); - + private readonly logger: DfxLogger; private readonly secretCache: Map = new Map(); constructor( + readonly loggerFactory: LoggerFactory, private readonly repos: RepositoryFactory, private readonly userDataRepo: UserDataRepository, private readonly userRepo: UserRepository, @@ -97,7 +98,9 @@ export class UserDataService { private readonly transactionService: TransactionService, @Inject(forwardRef(() => BankDataService)) private readonly bankDataService: BankDataService, - ) {} + ) { + this.logger = loggerFactory.create(UserDataService); + } // --- GETTERS --- // async getUserDataByUser(userId: number): Promise { diff --git a/src/subdomains/generic/user/models/user/user.service.ts b/src/subdomains/generic/user/models/user/user.service.ts index 262e3bfb10..ba4d1666e9 100644 --- a/src/subdomains/generic/user/models/user/user.service.ts +++ b/src/subdomains/generic/user/models/user/user.service.ts @@ -10,13 +10,14 @@ import { Config } from 'src/config/config'; import { CryptoService } from 'src/integration/blockchain/shared/services/crypto.service'; import { GeoLocationService } from 'src/integration/geolocation/geo-location.service'; import { SiftService } from 'src/integration/sift/services/sift.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { UserRole } from 'src/shared/auth/user-role.enum'; import { Active } from 'src/shared/models/active'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; import { LanguageDtoMapper } from 'src/shared/models/language/dto/language-dto.mapper'; import { LanguageService } from 'src/shared/models/language/language.service'; import { ApiKeyService } from 'src/shared/services/api-key.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; import { CheckStatus } from 'src/subdomains/core/aml/enums/check-status.enum'; @@ -46,9 +47,10 @@ import { UserRepository } from './user.repository'; @Injectable() export class UserService { - private readonly logger = new DfxLogger(UserService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly userRepo: UserRepository, private readonly userDataRepo: UserDataRepository, private readonly userDataService: UserDataService, @@ -58,7 +60,9 @@ export class UserService { private readonly languageService: LanguageService, private readonly fiatService: FiatService, private readonly siftService: SiftService, - ) {} + ) { + this.logger = loggerFactory.create(UserService); + } async getAllUser(): Promise { return this.userRepo.find(); diff --git a/src/subdomains/generic/user/services/webhook/webhook-notification.service.ts b/src/subdomains/generic/user/services/webhook/webhook-notification.service.ts index b564d61d33..e40861e2d8 100644 --- a/src/subdomains/generic/user/services/webhook/webhook-notification.service.ts +++ b/src/subdomains/generic/user/services/webhook/webhook-notification.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { HttpService } from 'src/shared/services/http.service'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; @@ -15,13 +16,16 @@ import { WebhookRepository } from './webhook.repository'; @Injectable() export class WebhookNotificationService { - private readonly logger = new DfxLogger(WebhookNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly webhookRepo: WebhookRepository, private readonly http: HttpService, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(WebhookNotificationService); + } @DfxCron(CronExpression.EVERY_5_MINUTES, { process: Process.WEBHOOK, timeout: 1800 }) async sendWebhooks() { diff --git a/src/subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts b/src/subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts index cf3e236dbb..32fc475be1 100644 --- a/src/subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts +++ b/src/subdomains/supporting/bank-tx/bank-tx-return/bank-tx-return.service.ts @@ -1,8 +1,9 @@ import { BadRequestException, Inject, Injectable, NotFoundException, OnModuleInit, forwardRef } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -22,12 +23,14 @@ import { UpdateBankTxReturnDto } from './dto/update-bank-tx-return.dto'; @Injectable() export class BankTxReturnService implements OnModuleInit { - private readonly logger = new DfxLogger(BankTxReturnService); + private readonly logger: DfxLogger; + private chf: Fiat; private eur: Fiat; private usd: Fiat; constructor( + readonly loggerFactory: LoggerFactory, private readonly bankTxReturnRepo: BankTxReturnRepository, private readonly transactionService: TransactionService, private readonly transactionUtilService: TransactionUtilService, @@ -36,7 +39,9 @@ export class BankTxReturnService implements OnModuleInit { private readonly fiatService: FiatService, @Inject(forwardRef(() => BankTxService)) private readonly bankTxService: BankTxService, - ) {} + ) { + this.logger = loggerFactory.create(BankTxReturnService); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts b/src/subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts index e7b29bd92a..de03253319 100644 --- a/src/subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts +++ b/src/subdomains/supporting/bank-tx/bank-tx/bank-tx.controller.ts @@ -13,10 +13,11 @@ import { import { AuthGuard } from '@nestjs/passport'; import { FilesInterceptor } from '@nestjs/platform-express'; import { ApiBearerAuth, ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { RoleGuard } from 'src/shared/auth/role.guard'; import { UserActiveGuard } from 'src/shared/auth/user-active.guard'; import { UserRole } from 'src/shared/auth/user-role.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { UpdateBankTxDto } from './dto/update-bank-tx.dto'; import { BankTxBatch } from './entities/bank-tx-batch.entity'; import { BankTx } from './entities/bank-tx.entity'; @@ -25,9 +26,11 @@ import { BankTxService } from './services/bank-tx.service'; @ApiTags('bankTx') @Controller('bankTx') export class BankTxController { - private readonly logger = new DfxLogger(BankTxController); + private readonly logger: DfxLogger; - constructor(private readonly bankTxService: BankTxService) {} + constructor(readonly loggerFactory: LoggerFactory, private readonly bankTxService: BankTxService) { + this.logger = loggerFactory.create(BankTxController); + } @Post() @ApiBearerAuth() diff --git a/src/subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts b/src/subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts index 904704e657..8e53f3a654 100644 --- a/src/subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts +++ b/src/subdomains/supporting/bank-tx/bank-tx/services/bank-tx.service.ts @@ -8,8 +8,9 @@ import { } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { RevolutService } from 'src/integration/bank/services/revolut.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { SettingService } from 'src/shared/models/setting/setting.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { AmountType, Util } from 'src/shared/utils/util'; @@ -66,9 +67,10 @@ export const TransactionBankTxTypeMapper: { @Injectable() export class BankTxService { - private readonly logger = new DfxLogger(BankTxService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly bankTxRepo: BankTxRepository, private readonly bankTxBatchRepo: BankTxBatchRepository, @Inject(forwardRef(() => BuyCryptoService)) @@ -85,7 +87,9 @@ export class BankTxService { private readonly transactionService: TransactionService, private readonly specialAccountService: SpecialExternalAccountService, private readonly sepaParser: SepaParser, - ) {} + ) { + this.logger = loggerFactory.create(BankTxService); + } // --- TRANSACTION HANDLING --- // @DfxCron(CronExpression.EVERY_30_SECONDS, { timeout: 3600, process: Process.BANK_TX }) diff --git a/src/subdomains/supporting/bank-tx/bank-tx/services/sepa-parser.service.ts b/src/subdomains/supporting/bank-tx/bank-tx/services/sepa-parser.service.ts index e0ef71ffe8..3c83cf8be6 100644 --- a/src/subdomains/supporting/bank-tx/bank-tx/services/sepa-parser.service.ts +++ b/src/subdomains/supporting/bank-tx/bank-tx/services/sepa-parser.service.ts @@ -1,8 +1,9 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { PricingService } from 'src/subdomains/supporting/pricing/services/pricing.service'; import { SepaEntry } from '../dto/sepa-entry.dto'; @@ -13,11 +14,16 @@ import { BankTx } from '../entities/bank-tx.entity'; @Injectable() export class SepaParser implements OnModuleInit { - private readonly logger = new DfxLogger(SepaParser); - + private readonly logger: DfxLogger; private chf: Fiat; - constructor(private readonly pricingService: PricingService, private readonly fiatService: FiatService) {} + constructor( + readonly loggerFactory: LoggerFactory, + private readonly pricingService: PricingService, + private readonly fiatService: FiatService, + ) { + this.logger = loggerFactory.create(SepaParser); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/subdomains/supporting/dex/services/dex.service.ts b/src/subdomains/supporting/dex/services/dex.service.ts index 2987572e18..facf9054e7 100644 --- a/src/subdomains/supporting/dex/services/dex.service.ts +++ b/src/subdomains/supporting/dex/services/dex.service.ts @@ -2,8 +2,9 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { FeeAmount } from '@uniswap/v3-sdk'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger, LogLevel } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger, LogLevel } from 'src/shared/services/dfx-logger'; import { DfxCron } from 'src/shared/utils/cron'; import { IsNull, Not } from 'typeorm'; import { LiquidityOrder, LiquidityOrderContext, LiquidityOrderType } from '../entities/liquidity-order.entity'; @@ -31,9 +32,10 @@ import { SupplementaryStrategyRegistry } from '../strategies/supplementary/impl/ @Injectable() export class DexService { - private readonly logger = new DfxLogger(DexService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly checkLiquidityStrategyRegistry: CheckLiquidityStrategyRegistry, private readonly purchaseLiquidityStrategyRegistry: PurchaseLiquidityStrategyRegistry, private readonly sellLiquidityStrategyRegistry: SellLiquidityStrategyRegistry, @@ -41,7 +43,9 @@ export class DexService { private readonly liquidityOrderRepo: LiquidityOrderRepository, private readonly liquidityOrderFactory: LiquidityOrderFactory, - ) {} + ) { + this.logger = loggerFactory.create(DexService); + } // *** MAIN PUBLIC API *** // diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-coin.strategy.ts index 39e005ef56..da2c6996e0 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; -import { PurchaseStrategy } from './base/purchase.strategy'; +import { PurchaseDexService, PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class ArbitrumCoinStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(ArbitrumCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, dexService: PurchaseDexService) { + super(dexService); + + this.logger = this.loggerFactory.create(ArbitrumCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.ARBITRUM; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-token.strategy.ts index 530a2c8380..b588d070c4 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/arbitrum-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DexArbitrumService } from '../../../services/dex-arbitrum.service'; import { PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class ArbitrumTokenStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(ArbitrumTokenStrategy); + protected readonly logger: DfxLogger; - constructor(dexArbitrumService: DexArbitrumService) { + constructor(readonly loggerFactory: LoggerFactory, dexArbitrumService: DexArbitrumService) { super(dexArbitrumService); + + this.logger = this.loggerFactory.create(ArbitrumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-coin.strategy.ts index 3644213365..30a4a6eb14 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; -import { PurchaseStrategy } from './base/purchase.strategy'; +import { PurchaseDexService, PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class BaseCoinStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(BaseCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, dexService: PurchaseDexService) { + super(dexService); + + this.logger = this.loggerFactory.create(BaseCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.BASE; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-token.strategy.ts index 1829e3a5ac..58c51d45f0 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DexBaseService } from '../../../services/dex-base.service'; import { PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class BaseTokenStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(BaseTokenStrategy); + protected readonly logger: DfxLogger; - constructor(dexBaseService: DexBaseService) { + constructor(readonly loggerFactory: LoggerFactory, dexBaseService: DexBaseService) { super(dexBaseService); + + this.logger = this.loggerFactory.create(BaseTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base/purchase-liquidity.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base/purchase-liquidity.strategy.ts index dca9f971dc..e5a12b42d0 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base/purchase-liquidity.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/base/purchase-liquidity.strategy.ts @@ -1,8 +1,8 @@ import { Inject, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { LiquidityOrder } from 'src/subdomains/supporting/dex/entities/liquidity-order.entity'; import { NotEnoughLiquidityException } from 'src/subdomains/supporting/dex/exceptions/not-enough-liquidity.exception'; import { PriceSlippageException } from 'src/subdomains/supporting/dex/exceptions/price-slippage.exception'; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bitcoin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bitcoin.strategy.ts index 3aea3afaf8..0cac5594d9 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bitcoin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bitcoin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { NoPurchaseStrategy } from './base/no-purchase.strategy'; @Injectable() export class BitcoinStrategy extends NoPurchaseStrategy { - protected readonly logger = new DfxLogger(BitcoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory) { + super(); + + this.logger = this.loggerFactory.create(BitcoinStrategy); + } get blockchain(): Blockchain { return Blockchain.BITCOIN; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-coin.strategy.ts index 7e774fae49..988fd6d7d1 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; -import { PurchaseStrategy } from './base/purchase.strategy'; +import { PurchaseDexService, PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class BscCoinStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(BscCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, dexService: PurchaseDexService) { + super(dexService); + + this.logger = this.loggerFactory.create(BscCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.BINANCE_SMART_CHAIN; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-token.strategy.ts index 920544d4b0..ad94f2e38c 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/bsc-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DexBscService } from '../../../services/dex-bsc.service'; import { PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class BscTokenStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(BscTokenStrategy); + protected readonly logger: DfxLogger; - constructor(dexBscService: DexBscService) { + constructor(readonly loggerFactory: LoggerFactory, dexBscService: DexBscService) { super(dexBscService); + + this.logger = this.loggerFactory.create(BscTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-coin.strategy.ts index 43e39f20bd..f84d3d23b2 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; -import { PurchaseStrategy } from './base/purchase.strategy'; +import { PurchaseDexService, PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class EthereumCoinStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(EthereumCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, dexService: PurchaseDexService) { + super(dexService); + + this.logger = this.loggerFactory.create(EthereumCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.ETHEREUM; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-token.strategy.ts index d61dc8596f..cb6bcbe7ab 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/ethereum-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DexEthereumService } from '../../../services/dex-ethereum.service'; import { PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class EthereumTokenStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(EthereumTokenStrategy); + protected readonly logger: DfxLogger; - constructor(dexEthereumService: DexEthereumService) { + constructor(readonly loggerFactory: LoggerFactory, dexEthereumService: DexEthereumService) { super(dexEthereumService); + + this.logger = this.loggerFactory.create(EthereumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-coin.strategy.ts index d7920ec586..062114998f 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; -import { PurchaseStrategy } from './base/purchase.strategy'; +import { PurchaseDexService, PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class GnosisCoinStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(GnosisCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, dexService: PurchaseDexService) { + super(dexService); + + this.logger = this.loggerFactory.create(GnosisCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.GNOSIS; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-token.strategy.ts index 6198731fd8..edd2dec9aa 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/gnosis-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DexGnosisService } from '../../../services/dex-gnosis.service'; import { PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class GnosisTokenStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(GnosisTokenStrategy); + protected readonly logger: DfxLogger; - constructor(dexGnosisService: DexGnosisService) { + constructor(readonly loggerFactory: LoggerFactory, dexGnosisService: DexGnosisService) { super(dexGnosisService); + + this.logger = this.loggerFactory.create(GnosisTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/lightning.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/lightning.strategy.ts index d6e851dd36..116cc78a71 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/lightning.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/lightning.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { NoPurchaseStrategy } from './base/no-purchase.strategy'; @Injectable() export class LightningStrategy extends NoPurchaseStrategy { - protected readonly logger = new DfxLogger(LightningStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory) { + super(); + + this.logger = this.loggerFactory.create(LightningStrategy); + } get blockchain(): Blockchain { return Blockchain.LIGHTNING; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/monero.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/monero.strategy.ts index 19d457726e..d2e7060c21 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/monero.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/monero.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { NoPurchaseStrategy } from './base/no-purchase.strategy'; @Injectable() export class MoneroStrategy extends NoPurchaseStrategy { - protected readonly logger = new DfxLogger(MoneroStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory) { + super(); + + this.logger = this.loggerFactory.create(MoneroStrategy); + } get blockchain(): Blockchain { return Blockchain.MONERO; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-coin.strategy.ts index 5cb95127b0..245c4beb48 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; -import { PurchaseStrategy } from './base/purchase.strategy'; +import { PurchaseDexService, PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class OptimismCoinStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(OptimismCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, dexService: PurchaseDexService) { + super(dexService); + + this.logger = this.loggerFactory.create(OptimismCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.OPTIMISM; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-token.strategy.ts index 7b0e82fc71..cf66b1b9d2 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/optimism-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DexOptimismService } from '../../../services/dex-optimism.service'; import { PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class OptimismTokenStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(OptimismTokenStrategy); + protected readonly logger: DfxLogger; - constructor(dexOptimismService: DexOptimismService) { + constructor(readonly loggerFactory: LoggerFactory, dexOptimismService: DexOptimismService) { super(dexOptimismService); + + this.logger = this.loggerFactory.create(OptimismTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-coin.strategy.ts index c6a874da99..eef012cb6f 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; -import { PurchaseStrategy } from './base/purchase.strategy'; +import { PurchaseDexService, PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class PolygonCoinStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(PolygonCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, protected readonly dexService: PurchaseDexService) { + super(dexService); + + this.logger = this.loggerFactory.create(PolygonCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.POLYGON; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-token.strategy.ts index b8f98de809..87b8fe8e1c 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/polygon-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DexPolygonService } from '../../../services/dex-polygon.service'; import { PurchaseStrategy } from './base/purchase.strategy'; @Injectable() export class PolygonTokenStrategy extends PurchaseStrategy { - protected readonly logger = new DfxLogger(PolygonTokenStrategy); + protected readonly logger: DfxLogger; - constructor(dexPolygonService: DexPolygonService) { + constructor(readonly loggerFactory: LoggerFactory, dexPolygonService: DexPolygonService) { super(dexPolygonService); + + this.logger = this.loggerFactory.create(PolygonTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-coin.strategy.ts index 2cce1c97a2..09d13e32ba 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-coin.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { NoPurchaseStrategy } from './base/no-purchase.strategy'; @Injectable() export class SolanaCoinStrategy extends NoPurchaseStrategy { - protected readonly logger = new DfxLogger(SolanaCoinStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory) { + super(); + + this.logger = this.loggerFactory.create(SolanaCoinStrategy); + } get blockchain(): Blockchain { return Blockchain.SOLANA; diff --git a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-token.strategy.ts b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-token.strategy.ts index 03db21bb0b..df7f7551e1 100644 --- a/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/purchase-liquidity/impl/solana-token.strategy.ts @@ -1,12 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetCategory, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { NoPurchaseStrategy } from './base/no-purchase.strategy'; @Injectable() export class SolanaTokenStrategy extends NoPurchaseStrategy { - protected readonly logger = new DfxLogger(SolanaTokenStrategy); + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory) { + super(); + + this.logger = this.loggerFactory.create(SolanaTokenStrategy); + } get blockchain(): Blockchain { return Blockchain.SOLANA; diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-coin.strategy.ts index c077152da1..910c6b45bd 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class ArbitrumCoinStrategy extends EvmCoinStrategy { - protected readonly logger = new DfxLogger(ArbitrumCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(ArbitrumCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-token.strategy.ts index 24eb857b32..834980d1d1 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/arbitrum-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmTokenStrategy } from './base/evm-token.strategy'; @Injectable() export class ArbitrumTokenStrategy extends EvmTokenStrategy { - protected readonly logger = new DfxLogger(ArbitrumTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(ArbitrumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-coin.strategy.ts index 1c43266606..13bf2af9ff 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class BaseCoinStrategy extends EvmCoinStrategy { - protected readonly logger = new DfxLogger(BaseCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(BaseCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-token.strategy.ts index 502b1107e2..49d03b502b 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmTokenStrategy } from './base/evm-token.strategy'; @Injectable() export class BaseTokenStrategy extends EvmTokenStrategy { - protected readonly logger = new DfxLogger(BaseTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(BaseTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base/sell-liquidity.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base/sell-liquidity.strategy.ts index ef882a59e0..bd7e7d220f 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base/sell-liquidity.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/base/sell-liquidity.strategy.ts @@ -1,7 +1,7 @@ import { Inject, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { LiquidityOrder } from 'src/subdomains/supporting/dex/entities/liquidity-order.entity'; import { SellLiquidityRequest } from '../../../../interfaces'; import { SellLiquidityStrategyRegistry } from './sell-liquidity.strategy-registry'; diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bitcoin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bitcoin.strategy.ts index db69aec114..abf0244f80 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bitcoin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bitcoin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { SellLiquidityStrategy } from './base/sell-liquidity.strategy'; @Injectable() export class BitcoinStrategy extends SellLiquidityStrategy { - protected readonly logger = new DfxLogger(BitcoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(BitcoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-coin.strategy.ts index ac6dd05ffb..5dcf87b612 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class BscCoinStrategy extends EvmCoinStrategy { - protected readonly logger = new DfxLogger(BscCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(BscCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-token.strategy.ts index 2eb4ef48d3..ddd7454362 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/bsc-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmTokenStrategy } from './base/evm-token.strategy'; @Injectable() export class BscTokenStrategy extends EvmTokenStrategy { - protected readonly logger = new DfxLogger(BscTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(BscTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-coin.strategy.ts index 22681f5d01..a6239db3eb 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class EthereumCoinStrategy extends EvmCoinStrategy { - protected readonly logger = new DfxLogger(EthereumCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(EthereumCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-token.strategy.ts index aacf4ba53e..ca8ac52c2e 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/ethereum-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmTokenStrategy } from './base/evm-token.strategy'; @Injectable() export class EthereumTokenStrategy extends EvmTokenStrategy { - protected readonly logger = new DfxLogger(EthereumTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(EthereumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-coin.strategy.ts index 9d53b6088b..2efb45b860 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class GnosisCoinStrategy extends EvmCoinStrategy { - protected readonly logger = new DfxLogger(GnosisCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(GnosisCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-token.strategy.ts index 7490829613..2972a6e986 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/gnosis-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmTokenStrategy } from './base/evm-token.strategy'; @Injectable() export class GnosisTokenStrategy extends EvmTokenStrategy { - protected readonly logger = new DfxLogger(GnosisTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(GnosisTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/monero.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/monero.strategy.ts index af234bc935..05404158b0 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/monero.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/monero.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { SellLiquidityStrategy } from './base/sell-liquidity.strategy'; @Injectable() export class MoneroStrategy extends SellLiquidityStrategy { - protected readonly logger = new DfxLogger(MoneroStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(MoneroStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-coin.strategy.ts index 4e79454be1..22ae5ceca4 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class OptimismCoinStrategy extends EvmCoinStrategy { - protected readonly logger = new DfxLogger(OptimismCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(OptimismCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-token.strategy.ts index 87f8bdfd81..fdb5310b09 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/optimism-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmTokenStrategy } from './base/evm-token.strategy'; @Injectable() export class OptimismTokenStrategy extends EvmTokenStrategy { - protected readonly logger = new DfxLogger(OptimismTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(OptimismTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-coin.strategy.ts index b8581e3dc8..b18d33a402 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class PolygonCoinStrategy extends EvmCoinStrategy { - protected readonly logger = new DfxLogger(PolygonCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(PolygonCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-token.strategy.ts index 8f525b4bd8..a09d352d63 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/polygon-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { EvmTokenStrategy } from './base/evm-token.strategy'; @Injectable() export class PolygonTokenStrategy extends EvmTokenStrategy { - protected readonly logger = new DfxLogger(PolygonTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(PolygonTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-coin.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-coin.strategy.ts index 099134c621..16ee3ccbb0 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-coin.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-coin.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { SellLiquidityStrategy } from './base/sell-liquidity.strategy'; @Injectable() export class SolanaCoinStrategy extends SellLiquidityStrategy { - protected readonly logger = new DfxLogger(SolanaCoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(SolanaCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-token.strategy.ts b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-token.strategy.ts index 56b085b52d..ed3290912b 100644 --- a/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-token.strategy.ts +++ b/src/subdomains/supporting/dex/strategies/sell-liquidity/impl/solana-token.strategy.ts @@ -1,16 +1,19 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { SellLiquidityStrategy } from './base/sell-liquidity.strategy'; @Injectable() export class SolanaTokenStrategy extends SellLiquidityStrategy { - protected readonly logger = new DfxLogger(SolanaTokenStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly assetService: AssetService) { + constructor(readonly loggerFactory: LoggerFactory, protected readonly assetService: AssetService) { super(); + + this.logger = this.loggerFactory.create(SolanaTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/fiat-output/fiat-output.service.ts b/src/subdomains/supporting/fiat-output/fiat-output.service.ts index 551bae7fb8..9d3523c28e 100644 --- a/src/subdomains/supporting/fiat-output/fiat-output.service.ts +++ b/src/subdomains/supporting/fiat-output/fiat-output.service.ts @@ -1,4 +1,5 @@ import { BadRequestException, forwardRef, Inject, Injectable, NotFoundException } from '@nestjs/common'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { BuyCrypto } from 'src/subdomains/core/buy-crypto/process/entities/buy-crypto.entity'; import { BuyCryptoRepository } from 'src/subdomains/core/buy-crypto/process/repositories/buy-crypto.repository'; import { BuyFiat } from 'src/subdomains/core/sell-crypto/process/buy-fiat.entity'; @@ -14,6 +15,7 @@ import { FiatOutputRepository } from './fiat-output.repository'; @Injectable() export class FiatOutputService { constructor( + readonly loggerFactory: LoggerFactory, private readonly fiatOutputRepo: FiatOutputRepository, private readonly buyFiatRepo: BuyFiatRepository, @Inject(forwardRef(() => BankTxService)) diff --git a/src/subdomains/supporting/fiat-payin/services/checkout-tx.service.ts b/src/subdomains/supporting/fiat-payin/services/checkout-tx.service.ts index acd589cfd1..d3ba5c2d19 100644 --- a/src/subdomains/supporting/fiat-payin/services/checkout-tx.service.ts +++ b/src/subdomains/supporting/fiat-payin/services/checkout-tx.service.ts @@ -1,7 +1,8 @@ import { Inject, Injectable, NotFoundException, forwardRef } from '@nestjs/common'; import { Config } from 'src/config/config'; import { CheckoutPaymentStatus } from 'src/integration/checkout/dto/checkout.dto'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Util } from 'src/shared/utils/util'; import { BuyCryptoService } from 'src/subdomains/core/buy-crypto/process/services/buy-crypto.service'; import { BuyService } from 'src/subdomains/core/buy-crypto/routes/buy/buy.service'; @@ -12,15 +13,18 @@ import { CheckoutTxRepository } from '../repositories/checkout-tx.repository'; @Injectable() export class CheckoutTxService { - private readonly logger = new DfxLogger(CheckoutTxService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly checkoutTxRepo: CheckoutTxRepository, @Inject(forwardRef(() => BuyCryptoService)) private readonly buyCryptoService: BuyCryptoService, private readonly buyService: BuyService, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(CheckoutTxService); + } async createCheckoutBuyCrypto(tx: CheckoutTx): Promise { const match = Config.formats.bankUsage.exec(tx.description); diff --git a/src/subdomains/supporting/fiat-payin/services/fiat-payin-sync.service.ts b/src/subdomains/supporting/fiat-payin/services/fiat-payin-sync.service.ts index f9d62845f5..eff5bac320 100644 --- a/src/subdomains/supporting/fiat-payin/services/fiat-payin-sync.service.ts +++ b/src/subdomains/supporting/fiat-payin/services/fiat-payin-sync.service.ts @@ -4,7 +4,8 @@ import { CheckoutPayment, CheckoutPaymentStatus } from 'src/integration/checkout import { CheckoutService } from 'src/integration/checkout/services/checkout.service'; import { ChargebackReason, ChargebackState, TransactionStatus } from 'src/integration/sift/dto/sift.dto'; import { SiftService } from 'src/integration/sift/services/sift.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -17,16 +18,19 @@ import { CheckoutTxService } from './checkout-tx.service'; @Injectable() export class FiatPayInSyncService { - private readonly logger = new DfxLogger(FiatPayInSyncService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly checkoutService: CheckoutService, private readonly checkoutTxRepo: CheckoutTxRepository, private readonly checkoutTxService: CheckoutTxService, private readonly transactionService: TransactionService, private readonly siftService: SiftService, private readonly buyService: BuyService, - ) {} + ) { + this.logger = loggerFactory.create(FiatPayInSyncService); + } // --- JOBS --- // diff --git a/src/subdomains/supporting/log/log-job.service.ts b/src/subdomains/supporting/log/log-job.service.ts index 2152ba3671..919fae79f2 100644 --- a/src/subdomains/supporting/log/log-job.service.ts +++ b/src/subdomains/supporting/log/log-job.service.ts @@ -10,11 +10,12 @@ import { SolanaUtil } from 'src/integration/blockchain/solana/solana.util'; import { ExchangeTx, ExchangeTxType } from 'src/integration/exchange/entities/exchange-tx.entity'; import { ExchangeName } from 'src/integration/exchange/enums/exchange.enum'; import { ExchangeTxService } from 'src/integration/exchange/services/exchange-tx.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { amountType } from 'src/shared/models/active'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { SettingService } from 'src/shared/models/setting/setting.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process, ProcessService } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { AmountType, Util } from 'src/shared/utils/util'; @@ -58,9 +59,10 @@ import { LogService } from './log.service'; @Injectable() export class LogJobService { - private readonly logger = new DfxLogger(LogJobService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly tradingRuleService: TradingRuleService, private readonly assetService: AssetService, private readonly logService: LogService, @@ -79,7 +81,9 @@ export class LogJobService { private readonly tradingOrderService: TradingOrderService, private readonly payoutService: PayoutService, private readonly processService: ProcessService, - ) {} + ) { + this.logger = loggerFactory.create(LogJobService); + } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.TRADING_LOG, timeout: 1800 }) async saveTradingLog() { diff --git a/src/subdomains/supporting/notification/notification.module.ts b/src/subdomains/supporting/notification/notification.module.ts index 19ea824a5a..32699d35d0 100644 --- a/src/subdomains/supporting/notification/notification.module.ts +++ b/src/subdomains/supporting/notification/notification.module.ts @@ -1,7 +1,8 @@ import { MailerModule } from '@nestjs-modules/mailer'; -import { Module } from '@nestjs/common'; +import { Module, forwardRef } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { GetConfig } from 'src/config/config'; +import { LoggerModule } from 'src/logger/logger.module'; import { SharedModule } from 'src/shared/shared.module'; import { Notification } from './entities/notification.entity'; import { MailFactory } from './factories/mail.factory'; @@ -12,7 +13,12 @@ import { NotificationJobService } from './services/notification-job.service'; import { NotificationService } from './services/notification.service'; @Module({ - imports: [TypeOrmModule.forFeature([Notification]), MailerModule.forRoot(GetConfig().mail.options), SharedModule], + imports: [ + TypeOrmModule.forFeature([Notification]), + MailerModule.forRoot(GetConfig().mail.options), + forwardRef(() => SharedModule), + forwardRef(() => LoggerModule), + ], providers: [NotificationRepository, MailService, NotificationService, MailFactory, NotificationJobService], controllers: [NotificationController], exports: [NotificationService, MailFactory], diff --git a/src/subdomains/supporting/notification/services/mail.service.ts b/src/subdomains/supporting/notification/services/mail.service.ts index 67cf10ab1f..6c18afb571 100644 --- a/src/subdomains/supporting/notification/services/mail.service.ts +++ b/src/subdomains/supporting/notification/services/mail.service.ts @@ -1,6 +1,7 @@ import { MailerOptions, MailerService } from '@nestjs-modules/mailer'; import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Mail } from '../entities/mail/base/mail'; export interface MailOptions { @@ -16,9 +17,11 @@ export interface MailOptions { @Injectable() export class MailService { - private readonly logger = new DfxLogger(MailService); + private readonly logger: DfxLogger; - constructor(private readonly mailerService: MailerService) {} + constructor(readonly loggerFactory: LoggerFactory, private readonly mailerService: MailerService) { + this.logger = loggerFactory.create(MailService); + } async send(mail: Mail): Promise { try { diff --git a/src/subdomains/supporting/notification/services/notification-job.service.ts b/src/subdomains/supporting/notification/services/notification-job.service.ts index c4ad9cedd8..34b466993b 100644 --- a/src/subdomains/supporting/notification/services/notification-job.service.ts +++ b/src/subdomains/supporting/notification/services/notification-job.service.ts @@ -1,7 +1,8 @@ import { MailerOptions } from '@nestjs-modules/mailer'; import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -24,14 +25,17 @@ export interface MailOptions { @Injectable() export class NotificationJobService { - private readonly logger = new DfxLogger(NotificationJobService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly notificationRepo: NotificationRepository, private readonly notificationService: NotificationService, private readonly mailFactory: MailFactory, private readonly mailService: MailService, - ) {} + ) { + this.logger = loggerFactory.create(NotificationJobService); + } @DfxCron(CronExpression.EVERY_10_MINUTES, { process: Process.MAIL_RETRY, timeout: 7200 }) async resendUncompletedMails(): Promise { diff --git a/src/subdomains/supporting/notification/services/notification.service.ts b/src/subdomains/supporting/notification/services/notification.service.ts index a3111c896c..7c7ba5793d 100644 --- a/src/subdomains/supporting/notification/services/notification.service.ts +++ b/src/subdomains/supporting/notification/services/notification.service.ts @@ -1,5 +1,6 @@ -import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { Inject, Injectable, forwardRef } from '@nestjs/common'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { UpdateNotificationDto } from '../dto/update-notification.dto'; import { Notification } from '../entities/notification.entity'; import { MailFactory } from '../factories/mail.factory'; @@ -9,13 +10,17 @@ import { MailService } from './mail.service'; @Injectable() export class NotificationService { - private readonly logger = new DfxLogger(NotificationService); + private readonly logger: DfxLogger; constructor( + @Inject(forwardRef(() => LoggerFactory)) + readonly loggerFactory: LoggerFactory, private readonly mailFactory: MailFactory, private readonly mailService: MailService, private readonly notificationRepo: NotificationRepository, - ) {} + ) { + this.logger = loggerFactory.create(NotificationService); + } async sendMail(request: MailRequest): Promise { const mail = this.mailFactory.createMail(request); diff --git a/src/subdomains/supporting/payin/services/payin-lightning.service.ts b/src/subdomains/supporting/payin/services/payin-lightning.service.ts index 8c548e7137..4c185d05bd 100644 --- a/src/subdomains/supporting/payin/services/payin-lightning.service.ts +++ b/src/subdomains/supporting/payin/services/payin-lightning.service.ts @@ -1,17 +1,18 @@ import { Injectable } from '@nestjs/common'; import { LightningClient } from 'src/integration/lightning/lightning-client'; import { LightningService } from 'src/integration/lightning/services/lightning.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { CryptoInput } from '../entities/crypto-input.entity'; @Injectable() export class PayInLightningService { - private readonly logger = new DfxLogger(PayInLightningService); - + private readonly logger: DfxLogger; private readonly client: LightningClient; - constructor(private readonly service: LightningService) { + constructor(readonly loggerFactory: LoggerFactory, private readonly service: LightningService) { this.client = service.getDefaultClient(); + this.logger = loggerFactory.create(PayInLightningService); } async checkHealthOrThrow(): Promise { diff --git a/src/subdomains/supporting/payin/services/payin-notification.service.ts b/src/subdomains/supporting/payin/services/payin-notification.service.ts index 0b352b2de1..e4e8f28550 100644 --- a/src/subdomains/supporting/payin/services/payin-notification.service.ts +++ b/src/subdomains/supporting/payin/services/payin-notification.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; @@ -16,9 +17,15 @@ import { PayInRepository } from '../repositories/payin.repository'; @Injectable() export class PayInNotificationService { - private readonly logger = new DfxLogger(PayInNotificationService); + private readonly logger: DfxLogger; - constructor(private readonly payInRepo: PayInRepository, private readonly notificationService: NotificationService) {} + constructor( + readonly loggerFactory: LoggerFactory, + private readonly payInRepo: PayInRepository, + private readonly notificationService: NotificationService, + ) { + this.logger = loggerFactory.create(PayInNotificationService); + } @DfxCron(CronExpression.EVERY_5_MINUTES, { process: Process.PAY_IN_MAIL, timeout: 1800 }) async sendNotificationMails(): Promise { diff --git a/src/subdomains/supporting/payin/services/payin-solana.service.ts b/src/subdomains/supporting/payin/services/payin-solana.service.ts index 3658d10bc6..a9c8fc1255 100644 --- a/src/subdomains/supporting/payin/services/payin-solana.service.ts +++ b/src/subdomains/supporting/payin/services/payin-solana.service.ts @@ -2,12 +2,9 @@ import { Injectable } from '@nestjs/common'; import { WalletAccount } from 'src/integration/blockchain/shared/evm/domain/wallet-account'; import { SolanaService } from 'src/integration/blockchain/solana/services/solana.service'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; @Injectable() export class PayInSolanaService { - private readonly logger = new DfxLogger(PayInSolanaService); - constructor(private readonly solanaService: SolanaService) {} getWalletAddress() { diff --git a/src/subdomains/supporting/payin/services/payin.service.ts b/src/subdomains/supporting/payin/services/payin.service.ts index 0f616ee6d6..527f111350 100644 --- a/src/subdomains/supporting/payin/services/payin.service.ts +++ b/src/subdomains/supporting/payin/services/payin.service.ts @@ -1,8 +1,9 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -23,14 +24,17 @@ import { SendStrategyRegistry } from '../strategies/send/impl/base/send.strategy @Injectable() export class PayInService { - private readonly logger = new DfxLogger(PayInService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly payInRepository: PayInRepository, private readonly sendStrategyRegistry: SendStrategyRegistry, private readonly transactionService: TransactionService, private readonly paymentLinkPaymentService: PaymentLinkPaymentService, - ) {} + ) { + this.logger = loggerFactory.create(PayInService); + } //*** PUBLIC API ***// diff --git a/src/subdomains/supporting/payin/strategies/register/impl/arbitrum.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/arbitrum.strategy.ts index b106688f16..bb562a3439 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/arbitrum.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/arbitrum.strategy.ts @@ -2,17 +2,20 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { AlchemyNetworkMapper } from 'src/integration/alchemy/alchemy-network-mapper'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInArbitrumService } from '../../../services/payin-arbitrum.service'; import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class ArbitrumStrategy extends EvmStrategy implements OnModuleInit { - protected readonly logger = new DfxLogger(ArbitrumStrategy); + protected readonly logger: DfxLogger; - constructor(arbitrumService: PayInArbitrumService) { + constructor(readonly loggerFactory: LoggerFactory, arbitrumService: PayInArbitrumService) { super(arbitrumService); + + this.logger = this.loggerFactory.create(ArbitrumStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/base.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/base.strategy.ts index eb7193b97d..55a050c59b 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/base.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/base.strategy.ts @@ -2,17 +2,20 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { AlchemyNetworkMapper } from 'src/integration/alchemy/alchemy-network-mapper'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInBaseService } from '../../../services/payin-base.service'; import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class BaseStrategy extends EvmStrategy implements OnModuleInit { - protected readonly logger = new DfxLogger(BaseStrategy); + protected readonly logger: DfxLogger; - constructor(baseService: PayInBaseService) { + constructor(readonly loggerFactory: LoggerFactory, baseService: PayInBaseService) { super(baseService); + + this.logger = this.loggerFactory.create(BaseStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/base/register.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/base/register.strategy.ts index 85d8e5f83c..2f12597447 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/base/register.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/base/register.strategy.ts @@ -1,7 +1,7 @@ import { Inject, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { PayInEntry } from 'src/subdomains/supporting/payin/interfaces'; import { PayInRepository } from 'src/subdomains/supporting/payin/repositories/payin.repository'; import { PayInService } from 'src/subdomains/supporting/payin/services/payin.service'; diff --git a/src/subdomains/supporting/payin/strategies/register/impl/bitcoin.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/bitcoin.strategy.ts index e13d4cfbcd..b0b2050016 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/bitcoin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/bitcoin.strategy.ts @@ -3,8 +3,9 @@ import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; import { BitcoinUTXO } from 'src/integration/blockchain/bitcoin/node/dto/bitcoin-transaction.dto'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -15,10 +16,12 @@ import { RegisterStrategy } from './base/register.strategy'; @Injectable() export class BitcoinStrategy extends RegisterStrategy { - protected readonly logger = new DfxLogger(BitcoinStrategy); + protected readonly logger: DfxLogger; - constructor(private readonly bitcoinService: PayInBitcoinService) { + constructor(readonly loggerFactory: LoggerFactory, private readonly bitcoinService: PayInBitcoinService) { super(); + + this.logger = this.loggerFactory.create(BitcoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/bsc.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/bsc.strategy.ts index c7f7c475ae..ff467a3ead 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/bsc.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/bsc.strategy.ts @@ -2,17 +2,20 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { AlchemyNetworkMapper } from 'src/integration/alchemy/alchemy-network-mapper'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInBscService } from '../../../services/payin-bsc.service'; import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class BscStrategy extends EvmStrategy implements OnModuleInit { - protected readonly logger = new DfxLogger(BscStrategy); + protected readonly logger: DfxLogger; - constructor(bscService: PayInBscService) { + constructor(readonly loggerFactory: LoggerFactory, bscService: PayInBscService) { super(bscService); + + this.logger = this.loggerFactory.create(BscStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/ethereum.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/ethereum.strategy.ts index 3c0eec85b8..69c281a9ff 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/ethereum.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/ethereum.strategy.ts @@ -2,17 +2,20 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { AlchemyNetworkMapper } from 'src/integration/alchemy/alchemy-network-mapper'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInEthereumService } from '../../../services/payin-ethereum.service'; import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class EthereumStrategy extends EvmStrategy implements OnModuleInit { - protected readonly logger = new DfxLogger(EthereumStrategy); + protected readonly logger: DfxLogger; - constructor(ethereumService: PayInEthereumService) { + constructor(readonly loggerFactory: LoggerFactory, ethereumService: PayInEthereumService) { super(ethereumService); + + this.logger = this.loggerFactory.create(EthereumStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/gnosis.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/gnosis.strategy.ts index 1c36d62278..841d277a01 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/gnosis.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/gnosis.strategy.ts @@ -5,17 +5,21 @@ import { Config } from 'src/config/config'; import { AlchemyNetworkMapper } from 'src/integration/alchemy/alchemy-network-mapper'; import { AlchemyWebhookDto } from 'src/integration/alchemy/dto/alchemy-webhook.dto'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; + +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInGnosisService } from '../../../services/payin-gnosis.service'; import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class GnosisStrategy extends EvmStrategy implements OnModuleInit { - protected readonly logger = new DfxLogger(GnosisStrategy); + protected readonly logger: DfxLogger; - constructor(gnosisService: PayInGnosisService) { + constructor(readonly loggerFactory: LoggerFactory, gnosisService: PayInGnosisService) { super(gnosisService); + + this.logger = this.loggerFactory.create(GnosisStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/lightning.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/lightning.strategy.ts index 492e6b73ef..0cc72f984d 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/lightning.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/lightning.strategy.ts @@ -2,8 +2,9 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { LnBitsTransactionWebhookDto } from 'src/integration/lightning/dto/lnbits.dto'; import { LightningHelper } from 'src/integration/lightning/lightning-helper'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInEntry } from '../../../interfaces'; import { PayInWebHookService } from '../../../services/payin-webhhook.service'; @@ -11,13 +12,14 @@ import { RegisterStrategy } from './base/register.strategy'; @Injectable() export class LightningStrategy extends RegisterStrategy { - protected logger: DfxLogger = new DfxLogger(LightningStrategy); + protected readonly logger: DfxLogger; private readonly depositWebhookMessageQueue: QueueHandler; - constructor(readonly payInWebHookService: PayInWebHookService) { + constructor(readonly loggerFactory: LoggerFactory, readonly payInWebHookService: PayInWebHookService) { super(); + this.logger = this.loggerFactory.create(LightningStrategy); this.depositWebhookMessageQueue = new QueueHandler(); payInWebHookService diff --git a/src/subdomains/supporting/payin/strategies/register/impl/monero.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/monero.strategy.ts index 34800021b6..6ba32f8d9f 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/monero.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/monero.strategy.ts @@ -3,8 +3,9 @@ import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; import { MoneroTransferDto } from 'src/integration/blockchain/monero/dto/monero.dto'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -15,10 +16,12 @@ import { RegisterStrategy } from './base/register.strategy'; @Injectable() export class MoneroStrategy extends RegisterStrategy { - protected logger: DfxLogger = new DfxLogger(MoneroStrategy); + protected readonly logger: DfxLogger; - constructor(private readonly payInMoneroService: PayInMoneroService) { + constructor(readonly loggerFactory: LoggerFactory, private readonly payInMoneroService: PayInMoneroService) { super(); + + this.logger = this.loggerFactory.create(MoneroStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/optimism.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/optimism.strategy.ts index a64a3c4d0e..e6ebe26a22 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/optimism.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/optimism.strategy.ts @@ -2,17 +2,20 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { AlchemyNetworkMapper } from 'src/integration/alchemy/alchemy-network-mapper'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInOptimismService } from '../../../services/payin-optimism.service'; import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class OptimismStrategy extends EvmStrategy implements OnModuleInit { - protected readonly logger = new DfxLogger(OptimismStrategy); + protected readonly logger: DfxLogger; - constructor(optimismService: PayInOptimismService) { + constructor(readonly loggerFactory: LoggerFactory, optimismService: PayInOptimismService) { super(optimismService); + + this.logger = this.loggerFactory.create(OptimismStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/polygon.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/polygon.strategy.ts index 405b96162f..59ff075bf6 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/polygon.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/polygon.strategy.ts @@ -2,17 +2,20 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { Config } from 'src/config/config'; import { AlchemyNetworkMapper } from 'src/integration/alchemy/alchemy-network-mapper'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { PayInPolygonService } from '../../../services/payin-polygon.service'; import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class PolygonStrategy extends EvmStrategy implements OnModuleInit { - protected readonly logger = new DfxLogger(PolygonStrategy); + protected readonly logger: DfxLogger; - constructor(polygonService: PayInPolygonService) { + constructor(readonly loggerFactory: LoggerFactory, polygonService: PayInPolygonService) { super(polygonService); + + this.logger = this.loggerFactory.create(PolygonStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/register/impl/solana.strategy.ts b/src/subdomains/supporting/payin/strategies/register/impl/solana.strategy.ts index f1061eb4d6..78d0f07759 100644 --- a/src/subdomains/supporting/payin/strategies/register/impl/solana.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/register/impl/solana.strategy.ts @@ -5,10 +5,11 @@ import { SolanaService } from 'src/integration/blockchain/solana/services/solana import { SolanaUtil } from 'src/integration/blockchain/solana/solana.util'; import { TatumWebhookDto } from 'src/integration/tatum/dto/tatum.dto'; import { TatumWebhookService } from 'src/integration/tatum/services/tatum-webhook.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { RepositoryFactory } from 'src/shared/repositories/repository.factory'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { QueueHandler } from 'src/shared/utils/queue-handler'; import { Util } from 'src/shared/utils/util'; import { Like } from 'typeorm'; @@ -18,18 +19,20 @@ import { RegisterStrategy } from './base/register.strategy'; @Injectable() export class SolanaStrategy extends RegisterStrategy implements OnModuleInit { - protected logger: DfxLogger = new DfxLogger(SolanaStrategy); + protected readonly logger: DfxLogger; private addressWebhookMessageQueue: QueueHandler; - private solanaPaymentDepositAddress: string; constructor( + readonly loggerFactory: LoggerFactory, private readonly tatumWebhookService: TatumWebhookService, private readonly solanaService: SolanaService, private readonly repos: RepositoryFactory, ) { super(); + + this.logger = this.loggerFactory.create(SolanaStrategy); } onModuleInit() { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-coin.strategy.ts index 27e7b2f9f6..be3a427a15 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-coin.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,16 @@ import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class ArbitrumCoinStrategy extends EvmCoinStrategy { - constructor(arbitrumService: PayInArbitrumService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor( + readonly loggerFactory: LoggerFactory, + arbitrumService: PayInArbitrumService, + payInRepo: PayInRepository, + ) { super(arbitrumService, payInRepo); + + this.logger = this.loggerFactory.create(ArbitrumCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-token.strategy.ts index f05b014cb6..8fd7fa231d 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/arbitrum-token.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,16 @@ import { EvmTokenStrategy } from './base/evm.token.strategy'; @Injectable() export class ArbitrumTokenStrategy extends EvmTokenStrategy { - constructor(arbitrumService: PayInArbitrumService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor( + readonly loggerFactory: LoggerFactory, + arbitrumService: PayInArbitrumService, + payInRepo: PayInRepository, + ) { super(arbitrumService, payInRepo); + + this.logger = this.loggerFactory.create(ArbitrumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/base-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/base-coin.strategy.ts index 0099b6c6d4..ca0e830400 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/base-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/base-coin.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class BaseCoinStrategy extends EvmCoinStrategy { - constructor(baseService: PayInBaseService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, baseService: PayInBaseService, payInRepo: PayInRepository) { super(baseService, payInRepo); + + this.logger = this.loggerFactory.create(BaseCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/base-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/base-token.strategy.ts index 07c4fbed29..4c29438385 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/base-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/base-token.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmTokenStrategy } from './base/evm.token.strategy'; @Injectable() export class BaseTokenStrategy extends EvmTokenStrategy { - constructor(baseService: PayInBaseService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, baseService: PayInBaseService, payInRepo: PayInRepository) { super(baseService, payInRepo); + + this.logger = this.loggerFactory.create(BaseTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/base/bitcoin-based.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/base/bitcoin-based.strategy.ts index 22598db36b..587b44b5d8 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/base/bitcoin-based.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/base/bitcoin-based.strategy.ts @@ -1,7 +1,7 @@ import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger, LogLevel } from 'src/logger/dfx-logger.service'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger, LogLevel } from 'src/shared/services/dfx-logger'; import { PayInBitcoinBasedService } from 'src/subdomains/supporting/payin/services/base/payin-bitcoin-based.service'; import { FeeLimitExceededException } from 'src/subdomains/supporting/payment/exceptions/fee-limit-exceeded.exception'; import { CryptoInput, PayInConfirmationType } from '../../../../entities/crypto-input.entity'; diff --git a/src/subdomains/supporting/payin/strategies/send/impl/base/evm.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/base/evm.strategy.ts index 627d1b70b4..9b2be883e3 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/base/evm.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/base/evm.strategy.ts @@ -1,5 +1,5 @@ import { Config } from 'src/config/config'; -import { DfxLogger, LogLevel } from 'src/shared/services/dfx-logger'; +import { DfxLogger, LogLevel } from 'src/logger/dfx-logger.service'; import { Util } from 'src/shared/utils/util'; import { CryptoInput, @@ -12,10 +12,12 @@ import { FeeLimitExceededException } from 'src/subdomains/supporting/payment/exc import { SendGroup, SendGroupKey, SendStrategy, SendType } from './send.strategy'; export abstract class EvmStrategy extends SendStrategy { - protected readonly logger = new DfxLogger(EvmStrategy); + protected abstract readonly logger: DfxLogger; constructor(protected readonly payInEvmService: PayInEvmService, protected readonly payInRepo: PayInRepository) { super(); + + // TODO do we have to add logger here for SendStrategy? } protected abstract dispatchSend(payInGroup: SendGroup, type: SendType, estimatedNativeFee: number): Promise; diff --git a/src/subdomains/supporting/payin/strategies/send/impl/base/send.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/base/send.strategy.ts index 2adc8bd860..02bc9c60ea 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/base/send.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/base/send.strategy.ts @@ -2,12 +2,12 @@ import { Inject, OnModuleDestroy, OnModuleInit, forwardRef } from '@nestjs/commo import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { WalletAccount } from 'src/integration/blockchain/shared/evm/domain/wallet-account'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { AmountType, Util } from 'src/shared/utils/util'; import { CryptoInput, diff --git a/src/subdomains/supporting/payin/strategies/send/impl/base/solana.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/base/solana.strategy.ts index a7072544f0..54fac1b2c3 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/base/solana.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/base/solana.strategy.ts @@ -1,5 +1,5 @@ import { Config } from 'src/config/config'; -import { LogLevel } from 'src/shared/services/dfx-logger'; +import { LogLevel } from 'src/logger/dfx-logger.service'; import { CryptoInput, PayInConfirmationType, diff --git a/src/subdomains/supporting/payin/strategies/send/impl/bitcoin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/bitcoin.strategy.ts index 548badb0c7..2c52c72b45 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/bitcoin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/bitcoin.strategy.ts @@ -1,19 +1,26 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { PayInRepository } from '../../../repositories/payin.repository'; import { PayInBitcoinService } from '../../../services/payin-bitcoin.service'; import { BitcoinBasedStrategy } from './base/bitcoin-based.strategy'; @Injectable() export class BitcoinStrategy extends BitcoinBasedStrategy { - protected readonly logger = new DfxLogger(BitcoinStrategy); + protected readonly logger: DfxLogger; - constructor(protected readonly bitcoinService: PayInBitcoinService, protected payInRepo: PayInRepository) { + constructor( + readonly loggerFactory: LoggerFactory, + protected readonly bitcoinService: PayInBitcoinService, + protected payInRepo: PayInRepository, + ) { super(bitcoinService, payInRepo); + + this.logger = this.loggerFactory.create(BitcoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/bsc-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/bsc-coin.strategy.ts index 2e16d48728..c4fec7dff9 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/bsc-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/bsc-coin.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class BscCoinStrategy extends EvmCoinStrategy { - constructor(bscService: PayInBscService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, bscService: PayInBscService, payInRepo: PayInRepository) { super(bscService, payInRepo); + + this.logger = this.loggerFactory.create(BscCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/bsc-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/bsc-token.strategy.ts index 79671b3b54..492182e128 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/bsc-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/bsc-token.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmTokenStrategy } from './base/evm.token.strategy'; @Injectable() export class BscTokenStrategy extends EvmTokenStrategy { - constructor(bscService: PayInBscService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, bscService: PayInBscService, payInRepo: PayInRepository) { super(bscService, payInRepo); + + this.logger = this.loggerFactory.create(BscTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/ethereum-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/ethereum-coin.strategy.ts index a08d5b6ed1..22bbef3fc3 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/ethereum-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/ethereum-coin.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,16 @@ import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class EthereumCoinStrategy extends EvmCoinStrategy { - constructor(ethereumService: PayInEthereumService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor( + readonly loggerFactory: LoggerFactory, + ethereumService: PayInEthereumService, + payInRepo: PayInRepository, + ) { super(ethereumService, payInRepo); + + this.logger = this.loggerFactory.create(EthereumCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/ethereum-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/ethereum-token.strategy.ts index 665defa348..de9a65cded 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/ethereum-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/ethereum-token.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,16 @@ import { EvmTokenStrategy } from './base/evm.token.strategy'; @Injectable() export class EthereumTokenStrategy extends EvmTokenStrategy { - constructor(ethereumService: PayInEthereumService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor( + readonly loggerFactory: LoggerFactory, + ethereumService: PayInEthereumService, + payInRepo: PayInRepository, + ) { super(ethereumService, payInRepo); + + this.logger = this.loggerFactory.create(EthereumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/gnosis-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/gnosis-coin.strategy.ts index d050f6cd88..be398f3a2f 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/gnosis-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/gnosis-coin.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class GnosisCoinStrategy extends EvmCoinStrategy { - constructor(gnosisService: PayInGnosisService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, gnosisService: PayInGnosisService, payInRepo: PayInRepository) { super(gnosisService, payInRepo); + + this.logger = this.loggerFactory.create(GnosisCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/gnosis-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/gnosis-token.strategy.ts index 832a1748a3..7487986093 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/gnosis-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/gnosis-token.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmTokenStrategy } from './base/evm.token.strategy'; @Injectable() export class GnosisTokenStrategy extends EvmTokenStrategy { - constructor(gnosisService: PayInGnosisService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, gnosisService: PayInGnosisService, payInRepo: PayInRepository) { super(gnosisService, payInRepo); + + this.logger = this.loggerFactory.create(GnosisTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/lightning.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/lightning.strategy.ts index b8e0cc197e..a762eb0316 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/lightning.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/lightning.strategy.ts @@ -1,8 +1,9 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger, LogLevel } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger, LogLevel } from 'src/shared/services/dfx-logger'; import { FeeLimitExceededException } from 'src/subdomains/supporting/payment/exceptions/fee-limit-exceeded.exception'; import { CryptoInput, PayInConfirmationType } from '../../../entities/crypto-input.entity'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -11,10 +12,16 @@ import { SendStrategy, SendType } from './base/send.strategy'; @Injectable() export class LightningStrategy extends SendStrategy { - protected readonly logger = new DfxLogger(LightningStrategy); + protected readonly logger: DfxLogger; - constructor(private readonly lightningService: PayInLightningService, private readonly payInRepo: PayInRepository) { + constructor( + readonly loggerFactory: LoggerFactory, + private readonly lightningService: PayInLightningService, + private readonly payInRepo: PayInRepository, + ) { super(); + + this.logger = this.loggerFactory.create(LightningStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/monero.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/monero.strategy.ts index 4b99f7111b..184564e20d 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/monero.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/monero.strategy.ts @@ -1,8 +1,9 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger, LogLevel } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger, LogLevel } from 'src/shared/services/dfx-logger'; import { FeeLimitExceededException } from 'src/subdomains/supporting/payment/exceptions/fee-limit-exceeded.exception'; import { CryptoInput } from '../../../entities/crypto-input.entity'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -12,10 +13,16 @@ import { SendType } from './base/send.strategy'; @Injectable() export class MoneroStrategy extends BitcoinBasedStrategy { - protected readonly logger = new DfxLogger(MoneroStrategy); + protected readonly logger: DfxLogger; - constructor(private readonly moneroService: PayInMoneroService, readonly payInRepo: PayInRepository) { + constructor( + readonly loggerFactory: LoggerFactory, + private readonly moneroService: PayInMoneroService, + readonly payInRepo: PayInRepository, + ) { super(moneroService, payInRepo); + + this.logger = this.loggerFactory.create(MoneroStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/optimism-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/optimism-coin.strategy.ts index 0e1e2639d4..a051593677 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/optimism-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/optimism-coin.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,16 @@ import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class OptimismCoinStrategy extends EvmCoinStrategy { - constructor(optimismService: PayInOptimismService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor( + readonly loggerFactory: LoggerFactory, + optimismService: PayInOptimismService, + payInRepo: PayInRepository, + ) { super(optimismService, payInRepo); + + this.logger = this.loggerFactory.create(OptimismCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/optimism-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/optimism-token.strategy.ts index ffc74d1d56..000ec6182f 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/optimism-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/optimism-token.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,16 @@ import { EvmTokenStrategy } from './base/evm.token.strategy'; @Injectable() export class OptimismTokenStrategy extends EvmTokenStrategy { - constructor(optimismService: PayInOptimismService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor( + readonly loggerFactory: LoggerFactory, + optimismService: PayInOptimismService, + payInRepo: PayInRepository, + ) { super(optimismService, payInRepo); + + this.logger = this.loggerFactory.create(OptimismTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/polygon-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/polygon-coin.strategy.ts index 756807e3c6..94ad6cc187 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/polygon-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/polygon-coin.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmCoinStrategy } from './base/evm-coin.strategy'; @Injectable() export class PolygonCoinStrategy extends EvmCoinStrategy { - constructor(polygonService: PayInPolygonService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, polygonService: PayInPolygonService, payInRepo: PayInRepository) { super(polygonService, payInRepo); + + this.logger = this.loggerFactory.create(PolygonCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/polygon-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/polygon-token.strategy.ts index 1b3ab0bc98..d2d5241ec2 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/polygon-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/polygon-token.strategy.ts @@ -1,6 +1,8 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; import { PayInRepository } from '../../../repositories/payin.repository'; @@ -9,8 +11,12 @@ import { EvmTokenStrategy } from './base/evm.token.strategy'; @Injectable() export class PolygonTokenStrategy extends EvmTokenStrategy { - constructor(polygonService: PayInPolygonService, payInRepo: PayInRepository) { + protected readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory, polygonService: PayInPolygonService, payInRepo: PayInRepository) { super(polygonService, payInRepo); + + this.logger = this.loggerFactory.create(PolygonTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/solana-coin.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/solana-coin.strategy.ts index b0a7b959d4..b2d19c3d81 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/solana-coin.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/solana-coin.strategy.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { CryptoInput } from '../../../entities/crypto-input.entity'; import { PayInRepository } from '../../../repositories/payin.repository'; import { PayInSolanaService } from '../../../services/payin-solana.service'; @@ -12,10 +13,16 @@ import { SolanaStrategy } from './base/solana.strategy'; @Injectable() export class SolanaCoinStrategy extends SolanaStrategy { - protected readonly logger = new DfxLogger(SolanaCoinStrategy); + protected readonly logger: DfxLogger; - constructor(payInSolanaService: PayInSolanaService, payInRepo: PayInRepository) { + constructor( + payInSolanaService: PayInSolanaService, + payInRepo: PayInRepository, + readonly loggerFactory: LoggerFactory, + ) { super(payInSolanaService, payInRepo); + + this.logger = this.loggerFactory.create(SolanaCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payin/strategies/send/impl/solana-token.strategy.ts b/src/subdomains/supporting/payin/strategies/send/impl/solana-token.strategy.ts index 6a17f0bfa4..f2ac755849 100644 --- a/src/subdomains/supporting/payin/strategies/send/impl/solana-token.strategy.ts +++ b/src/subdomains/supporting/payin/strategies/send/impl/solana-token.strategy.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetType } from 'src/shared/models/asset/asset.entity'; import { BlockchainAddress } from 'src/shared/models/blockchain-address'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { CryptoInput } from '../../../entities/crypto-input.entity'; import { PayInRepository } from '../../../repositories/payin.repository'; import { PayInSolanaService } from '../../../services/payin-solana.service'; @@ -12,10 +13,16 @@ import { SolanaStrategy } from './base/solana.strategy'; @Injectable() export class SolanaTokenStrategy extends SolanaStrategy { - protected readonly logger = new DfxLogger(SolanaTokenStrategy); + protected readonly logger: DfxLogger; - constructor(payInSolanaService: PayInSolanaService, payInRepo: PayInRepository) { + constructor( + payInSolanaService: PayInSolanaService, + payInRepo: PayInRepository, + readonly loggerFactory: LoggerFactory, + ) { super(payInSolanaService, payInRepo); + + this.logger = this.loggerFactory.create(SolanaTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payment/services/fee.service.ts b/src/subdomains/supporting/payment/services/fee.service.ts index 180a0fc406..45fc4adba5 100644 --- a/src/subdomains/supporting/payment/services/fee.service.ts +++ b/src/subdomains/supporting/payment/services/fee.service.ts @@ -8,13 +8,14 @@ import { import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Active, isAsset } from 'src/shared/models/active'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; import { SettingService } from 'src/shared/models/setting/setting.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -70,11 +71,12 @@ const FeeValidityMinutes = 30; @Injectable() export class FeeService implements OnModuleInit { - private readonly logger = new DfxLogger(FeeService); + private readonly logger: DfxLogger; private chf: Fiat; constructor( + readonly loggerFactory: LoggerFactory, private readonly feeRepo: FeeRepository, private readonly assetService: AssetService, private readonly fiatService: FiatService, @@ -85,7 +87,9 @@ export class FeeService implements OnModuleInit { private readonly payoutService: PayoutService, private readonly pricingService: PricingService, private readonly bankService: BankService, - ) {} + ) { + this.logger = loggerFactory.create(FeeService); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/subdomains/supporting/payment/services/transaction-helper.ts b/src/subdomains/supporting/payment/services/transaction-helper.ts index c6403fb92e..afbf076c89 100644 --- a/src/subdomains/supporting/payment/services/transaction-helper.ts +++ b/src/subdomains/supporting/payment/services/transaction-helper.ts @@ -4,6 +4,8 @@ import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { BlockchainRegistryService } from 'src/integration/blockchain/shared/services/blockchain-registry.service'; import { SolanaService } from 'src/integration/blockchain/solana/services/solana.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Active, amountType, feeAmountType, isAsset, isFiat } from 'src/shared/models/active'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; @@ -11,7 +13,6 @@ import { AssetDtoMapper } from 'src/shared/models/asset/dto/asset-dto.mapper'; import { FiatDtoMapper } from 'src/shared/models/fiat/dto/fiat-dto.mapper'; import { Fiat } from 'src/shared/models/fiat/fiat.entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { AsyncCache, CacheItemResetPeriod } from 'src/shared/utils/async-cache'; import { DfxCron } from 'src/shared/utils/cron'; @@ -50,7 +51,7 @@ import { TransactionService } from './transaction.service'; @Injectable() export class TransactionHelper implements OnModuleInit { - private readonly logger = new DfxLogger(TransactionHelper); + private readonly logger: DfxLogger; private readonly addressBalanceCache = new AsyncCache(CacheItemResetPeriod.EVERY_HOUR); private chf: Fiat; @@ -58,6 +59,7 @@ export class TransactionHelper implements OnModuleInit { private transactionSpecifications: TransactionSpecification[]; constructor( + readonly loggerFactory: LoggerFactory, private readonly specRepo: TransactionSpecificationRepository, private readonly pricingService: PricingService, private readonly fiatService: FiatService, @@ -71,7 +73,9 @@ export class TransactionHelper implements OnModuleInit { private readonly transactionService: TransactionService, private readonly buyService: BuyService, private readonly assetService: AssetService, - ) {} + ) { + this.logger = loggerFactory.create(TransactionHelper); + } onModuleInit() { void this.fiatService.getFiatByName('CHF').then((f) => (this.chf = f)); diff --git a/src/subdomains/supporting/payment/services/transaction-notification.service.ts b/src/subdomains/supporting/payment/services/transaction-notification.service.ts index 8467babb39..0d1eb94c90 100644 --- a/src/subdomains/supporting/payment/services/transaction-notification.service.ts +++ b/src/subdomains/supporting/payment/services/transaction-notification.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -17,13 +18,16 @@ import { TransactionRepository } from '../repositories/transaction.repository'; @Injectable() export class TransactionNotificationService { - private readonly logger = new DfxLogger(TransactionNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly repo: TransactionRepository, private readonly notificationService: NotificationService, private readonly bankDataService: BankDataService, - ) {} + ) { + this.logger = loggerFactory.create(TransactionNotificationService); + } @DfxCron(CronExpression.EVERY_MINUTE, { process: Process.TX_MAIL, timeout: 1800 }) async sendNotificationMails(): Promise { diff --git a/src/subdomains/supporting/payment/services/transaction-request.service.ts b/src/subdomains/supporting/payment/services/transaction-request.service.ts index d78fea8f80..22db6eda26 100644 --- a/src/subdomains/supporting/payment/services/transaction-request.service.ts +++ b/src/subdomains/supporting/payment/services/transaction-request.service.ts @@ -3,9 +3,10 @@ import { Cron, CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; import { SiftService } from 'src/integration/sift/services/sift.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { Lock } from 'src/shared/utils/lock'; import { Util } from 'src/shared/utils/util'; @@ -32,9 +33,10 @@ export const QUOTE_UID_PREFIX = 'Q'; @Injectable() export class TransactionRequestService { - private readonly logger = new DfxLogger(TransactionRequestService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly transactionRequestRepo: TransactionRequestRepository, private readonly siftService: SiftService, private readonly assetService: AssetService, @@ -43,7 +45,9 @@ export class TransactionRequestService { private readonly sellService: SellService, @Inject(forwardRef(() => SwapService)) private readonly swapService: SwapService, - ) {} + ) { + this.logger = loggerFactory.create(TransactionRequestService); + } @Cron(CronExpression.EVERY_MINUTE) @Lock(7200) diff --git a/src/subdomains/supporting/payout/services/payout-log.service.ts b/src/subdomains/supporting/payout/services/payout-log.service.ts index 41f1c6e44c..38ecebd290 100644 --- a/src/subdomains/supporting/payout/services/payout-log.service.ts +++ b/src/subdomains/supporting/payout/services/payout-log.service.ts @@ -1,10 +1,15 @@ import { Injectable } from '@nestjs/common'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { PayoutOrder } from '../entities/payout-order.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; @Injectable() export class PayoutLogService { - private readonly logger = new DfxLogger(PayoutLogService); + private readonly logger: DfxLogger; + + constructor(readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(PayoutLogService); + } logTransferCompletion(confirmedOrders: PayoutOrder[]): void { const confirmedOrdersLogs = this.createDefaultOrdersLog(confirmedOrders); diff --git a/src/subdomains/supporting/payout/services/payout.service.ts b/src/subdomains/supporting/payout/services/payout.service.ts index 8b80459f56..853bd3f9e9 100644 --- a/src/subdomains/supporting/payout/services/payout.service.ts +++ b/src/subdomains/supporting/payout/services/payout.service.ts @@ -1,7 +1,8 @@ import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -19,16 +20,19 @@ import { PayoutLogService } from './payout-log.service'; @Injectable() export class PayoutService { - private readonly logger = new DfxLogger(PayoutService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly logs: PayoutLogService, private readonly notificationService: NotificationService, private readonly payoutOrderRepo: PayoutOrderRepository, private readonly payoutOrderFactory: PayoutOrderFactory, private readonly payoutStrategyRegistry: PayoutStrategyRegistry, private readonly prepareStrategyRegistry: PrepareStrategyRegistry, - ) {} + ) { + this.logger = loggerFactory.create(PayoutService); + } //*** PUBLIC API ***// diff --git a/src/subdomains/supporting/payout/strategies/payout/__tests__/payout-bitcoin-based.strategy.spec.ts b/src/subdomains/supporting/payout/strategies/payout/__tests__/payout-bitcoin-based.strategy.spec.ts index 9c14f9057e..28bad3080e 100644 --- a/src/subdomains/supporting/payout/strategies/payout/__tests__/payout-bitcoin-based.strategy.spec.ts +++ b/src/subdomains/supporting/payout/strategies/payout/__tests__/payout-bitcoin-based.strategy.spec.ts @@ -1,8 +1,8 @@ import { mock } from 'jest-mock-extended'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { createCustomAsset } from 'src/shared/models/asset/__mocks__/asset.entity.mock'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { NotificationService } from 'src/subdomains/supporting/notification/services/notification.service'; import { createCustomPayoutOrder, diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-coin.strategy.ts index 244e98c199..e9e2819731 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class ArbitrumCoinStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly arbitrumService: PayoutArbitrumService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(arbitrumService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(ArbitrumCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-token.strategy.ts index a9a2650b11..aa311c1190 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/arbitrum-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class ArbitrumTokenStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly arbitrumService: PayoutArbitrumService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(arbitrumService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(ArbitrumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/base-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/base-coin.strategy.ts index e3dc144e8c..4d8e606f12 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/base-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/base-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class BaseCoinStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly baseService: PayoutBaseService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(baseService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(BaseCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/base-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/base-token.strategy.ts index f077615dee..0b2eabd545 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/base-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/base-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class BaseTokenStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly baseService: PayoutBaseService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(baseService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(BaseTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/base/bitcoin-based.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/base/bitcoin-based.strategy.ts index 75512d5b4a..9f13ce1ca5 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/base/bitcoin-based.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/base/bitcoin-based.strategy.ts @@ -1,6 +1,6 @@ import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { Util } from 'src/shared/utils/util'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/base/evm.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/base/evm.strategy.ts index 04b383f210..d88ef3bdc1 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/base/evm.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/base/evm.strategy.ts @@ -1,6 +1,6 @@ import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { AsyncCache, CacheItemResetPeriod } from 'src/shared/utils/async-cache'; import { FeeResult } from 'src/subdomains/supporting/payout/interfaces'; @@ -10,9 +10,8 @@ import { PayoutEvmService } from '../../../../services/payout-evm.service'; import { PayoutStrategy } from './payout.strategy'; export abstract class EvmStrategy extends PayoutStrategy { - private readonly logger = new DfxLogger(EvmStrategy); - private readonly txFees = new AsyncCache(CacheItemResetPeriod.EVERY_30_SECONDS); + protected abstract readonly logger: DfxLogger; constructor( protected readonly payoutEvmService: PayoutEvmService, diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/base/solana.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/base/solana.strategy.ts index 212e3686f1..fb31fe5c39 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/base/solana.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/base/solana.strategy.ts @@ -1,6 +1,6 @@ import { Config } from 'src/config/config'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; import { Asset } from 'src/shared/models/asset/asset.entity'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { AsyncCache, CacheItemResetPeriod } from 'src/shared/utils/async-cache'; import { FeeResult } from 'src/subdomains/supporting/payout/interfaces'; import { PayoutOrderRepository } from 'src/subdomains/supporting/payout/repositories/payout-order.repository'; @@ -9,9 +9,8 @@ import { PayoutOrder } from '../../../../entities/payout-order.entity'; import { PayoutStrategy } from './payout.strategy'; export abstract class SolanaStrategy extends PayoutStrategy { - private readonly logger = new DfxLogger(SolanaStrategy); - private readonly txFees = new AsyncCache(CacheItemResetPeriod.EVERY_30_SECONDS); + protected abstract readonly logger: DfxLogger; constructor( protected readonly solanaService: PayoutSolanaService, diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/bitcoin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/bitcoin.strategy.ts index 04d15f7da6..fae232a126 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/bitcoin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/bitcoin.strategy.ts @@ -1,8 +1,9 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { NotificationService } from 'src/subdomains/supporting/notification/services/notification.service'; import { PayoutOrder, PayoutOrderContext } from '../../../entities/payout-order.entity'; @@ -14,17 +15,19 @@ import { BitcoinBasedStrategy } from './base/bitcoin-based.strategy'; @Injectable() export class BitcoinStrategy extends BitcoinBasedStrategy { - protected readonly logger = new DfxLogger(BitcoinStrategy); - private readonly averageTransactionSize = 140; // vBytes + protected readonly logger: DfxLogger; constructor( notificationService: NotificationService, + readonly loggerFactory: LoggerFactory, protected readonly bitcoinService: PayoutBitcoinService, protected readonly payoutOrderRepo: PayoutOrderRepository, protected readonly assetService: AssetService, ) { super(notificationService, payoutOrderRepo, bitcoinService); + + this.logger = this.loggerFactory.create(BitcoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/bsc-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/bsc-coin.strategy.ts index 65231d4b1c..b98facdd1e 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/bsc-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/bsc-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class BscCoinStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly bscService: PayoutBscService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(bscService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(BscCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/bsc-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/bsc-token.strategy.ts index e421a7e92c..742209270f 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/bsc-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/bsc-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class BscTokenStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly bscService: PayoutBscService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(bscService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(BscTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-coin.strategy.ts index 1d30e7c6a3..25142cc5d5 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class EthereumCoinStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly ethereumService: PayoutEthereumService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(ethereumService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(EthereumCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-token.strategy.ts index 3a5deeba68..14563d5043 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/ethereum-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class EthereumTokenStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly ethereumService: PayoutEthereumService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(ethereumService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(EthereumTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-coin.strategy.ts index ef65303e90..362aab6bf0 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class GnosisCoinStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly gnosisService: PayoutGnosisService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(gnosisService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(GnosisCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-token.strategy.ts index f614e636d8..a2fb6ab9f4 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/gnosis-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class GnosisTokenStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly gnosisService: PayoutGnosisService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(gnosisService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(GnosisTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/lightning.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/lightning.strategy.ts index adda569f27..b0a03954b1 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/lightning.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/lightning.strategy.ts @@ -1,9 +1,10 @@ import { Injectable, NotImplementedException } from '@nestjs/common'; import { Config } from 'src/config/config'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { PayoutOrder } from '../../../entities/payout-order.entity'; import { FeeResult } from '../../../interfaces'; import { PayoutOrderRepository } from '../../../repositories/payout-order.repository'; @@ -12,14 +13,17 @@ import { PayoutStrategy } from './base/payout.strategy'; @Injectable() export class LightningStrategy extends PayoutStrategy { - private readonly logger = new DfxLogger(LightningStrategy); + protected readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly assetService: AssetService, private readonly payoutLightningService: PayoutLightningService, private readonly payoutOrderRepo: PayoutOrderRepository, ) { super(); + + this.logger = this.loggerFactory.create(LightningStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/monero.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/monero.strategy.ts index 996a78adcf..06e3fd1197 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/monero.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/monero.strategy.ts @@ -1,8 +1,9 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Util } from 'src/shared/utils/util'; import { NotificationService } from 'src/subdomains/supporting/notification/services/notification.service'; import { PayoutOrder, PayoutOrderContext } from '../../../entities/payout-order.entity'; @@ -14,17 +15,19 @@ import { BitcoinBasedStrategy } from './base/bitcoin-based.strategy'; @Injectable() export class MoneroStrategy extends BitcoinBasedStrategy { - protected readonly logger = new DfxLogger(MoneroStrategy); - private readonly averageTransactionSize = 1600; // Bytes + protected readonly logger: DfxLogger; constructor( notificationService: NotificationService, + readonly loggerFactory: LoggerFactory, protected readonly payoutMoneroService: PayoutMoneroService, protected readonly payoutOrderRepo: PayoutOrderRepository, protected readonly assetService: AssetService, ) { super(notificationService, payoutOrderRepo, payoutMoneroService); + + this.logger = this.loggerFactory.create(MoneroStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/optimism-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/optimism-coin.strategy.ts index 6e45107216..1188a60732 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/optimism-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/optimism-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class OptimismCoinStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly optimismService: PayoutOptimismService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(optimismService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(OptimismCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/optimism-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/optimism-token.strategy.ts index dbd68ed3a8..7fa77bdf96 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/optimism-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/optimism-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class OptimismTokenStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly optimismService: PayoutOptimismService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(optimismService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(OptimismTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/polygon-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/polygon-coin.strategy.ts index d978238bb5..a8332e8d41 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/polygon-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/polygon-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class PolygonCoinStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( + readonly loggerFactory: LoggerFactory, protected readonly polygonService: PayoutPolygonService, protected readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(polygonService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(PolygonCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/polygon-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/polygon-token.strategy.ts index beb8c8ca28..791fc1447d 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/polygon-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/polygon-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { EvmStrategy } from './base/evm.strategy'; @Injectable() export class PolygonTokenStrategy extends EvmStrategy { + protected readonly logger: DfxLogger; + constructor( protected readonly polygonService: PayoutPolygonService, protected readonly assetService: AssetService, + readonly loggerFactory: LoggerFactory, payoutOrderRepo: PayoutOrderRepository, ) { super(polygonService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(PolygonTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/solana-coin.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/solana-coin.strategy.ts index 0d10029f86..54f1d9eb33 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/solana-coin.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/solana-coin.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { SolanaStrategy } from './base/solana.strategy'; @Injectable() export class SolanaCoinStrategy extends SolanaStrategy { + protected readonly logger: DfxLogger; + constructor( protected readonly solanaService: PayoutSolanaService, + readonly loggerFactory: LoggerFactory, private readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(solanaService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(SolanaCoinStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/payout/strategies/payout/impl/solana-token.strategy.ts b/src/subdomains/supporting/payout/strategies/payout/impl/solana-token.strategy.ts index 22bf258ae8..70cfe695f8 100644 --- a/src/subdomains/supporting/payout/strategies/payout/impl/solana-token.strategy.ts +++ b/src/subdomains/supporting/payout/strategies/payout/impl/solana-token.strategy.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { Blockchain } from 'src/integration/blockchain/shared/enums/blockchain.enum'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { PayoutOrder } from '../../../entities/payout-order.entity'; @@ -9,12 +11,17 @@ import { SolanaStrategy } from './base/solana.strategy'; @Injectable() export class SolanaTokenStrategy extends SolanaStrategy { + protected readonly logger: DfxLogger; + constructor( protected readonly solanaService: PayoutSolanaService, + readonly loggerFactory: LoggerFactory, private readonly assetService: AssetService, payoutOrderRepo: PayoutOrderRepository, ) { super(solanaService, payoutOrderRepo); + + this.logger = this.loggerFactory.create(SolanaTokenStrategy); } get blockchain(): Blockchain { diff --git a/src/subdomains/supporting/pricing/services/asset-prices.service.ts b/src/subdomains/supporting/pricing/services/asset-prices.service.ts index 05442d4535..36b01ad0a2 100644 --- a/src/subdomains/supporting/pricing/services/asset-prices.service.ts +++ b/src/subdomains/supporting/pricing/services/asset-prices.service.ts @@ -1,10 +1,11 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Asset, AssetType } from 'src/shared/models/asset/asset.entity'; import { AssetService } from 'src/shared/models/asset/asset.service'; import { UpdateResult } from 'src/shared/models/entity'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -15,14 +16,17 @@ import { PricingService } from './pricing.service'; @Injectable() export class AssetPricesService { - private readonly logger = new DfxLogger(AssetPricesService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly assetService: AssetService, private readonly fiatService: FiatService, private readonly pricingService: PricingService, private readonly assetPriceRepo: AssetPriceRepository, - ) {} + ) { + this.logger = loggerFactory.create(AssetPricesService); + } // --- JOBS --- // @DfxCron(CronExpression.EVERY_HOUR, { process: Process.PRICING, timeout: 3600 }) diff --git a/src/subdomains/supporting/pricing/services/fiat-prices.service.ts b/src/subdomains/supporting/pricing/services/fiat-prices.service.ts index b31b2384fb..f3bdcf30fc 100644 --- a/src/subdomains/supporting/pricing/services/fiat-prices.service.ts +++ b/src/subdomains/supporting/pricing/services/fiat-prices.service.ts @@ -1,16 +1,23 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { PricingService } from './pricing.service'; @Injectable() export class FiatPricesService { - private readonly logger = new DfxLogger(FiatPricesService); + private readonly logger: DfxLogger; - constructor(private readonly fiatService: FiatService, private readonly pricingService: PricingService) {} + constructor( + readonly loggerFactory: LoggerFactory, + private readonly fiatService: FiatService, + private readonly pricingService: PricingService, + ) { + this.logger = loggerFactory.create(FiatPricesService); + } // --- JOBS --- // @DfxCron(CronExpression.EVERY_HOUR, { process: Process.PRICING, timeout: 3600 }) diff --git a/src/subdomains/supporting/pricing/services/integration/coin-gecko.service.ts b/src/subdomains/supporting/pricing/services/integration/coin-gecko.service.ts index 9bc5bdf657..3069ceebb8 100644 --- a/src/subdomains/supporting/pricing/services/integration/coin-gecko.service.ts +++ b/src/subdomains/supporting/pricing/services/integration/coin-gecko.service.ts @@ -1,21 +1,22 @@ import { Injectable, OnModuleInit, ServiceUnavailableException } from '@nestjs/common'; import { CoinGeckoClient } from 'coingecko-api-v3'; import { GetConfig } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Price } from '../../domain/entities/price'; import { PricingProvider } from './pricing-provider'; @Injectable() export class CoinGeckoService extends PricingProvider implements OnModuleInit { - private readonly logger = new DfxLogger(CoinGeckoService); - + private readonly logger: DfxLogger; private readonly client: CoinGeckoClient; private currencies: string[]; - constructor() { + constructor(readonly loggerFactory: LoggerFactory) { super(); this.client = new CoinGeckoClient({ autoRetry: false }, GetConfig().coinGecko.apiKey); + this.logger = loggerFactory.create(CoinGeckoService); } onModuleInit() { diff --git a/src/subdomains/supporting/pricing/services/pricing.service.ts b/src/subdomains/supporting/pricing/services/pricing.service.ts index 54c1594ac2..42d34e51cc 100644 --- a/src/subdomains/supporting/pricing/services/pricing.service.ts +++ b/src/subdomains/supporting/pricing/services/pricing.service.ts @@ -2,8 +2,9 @@ import { Injectable } from '@nestjs/common'; import { BinanceService } from 'src/integration/exchange/services/binance.service'; import { KrakenService } from 'src/integration/exchange/services/kraken.service'; import { KucoinService } from 'src/integration/exchange/services/kucoin.service'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Active, activesEqual, isFiat } from 'src/shared/models/active'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; import { AsyncCache, CacheItemResetPeriod } from 'src/shared/utils/async-cache'; import { Util } from 'src/shared/utils/util'; import { MailContext, MailType } from '../../notification/enums'; @@ -24,14 +25,14 @@ import { PricingFrankencoinService } from './integration/pricing-frankencoin.ser @Injectable() export class PricingService { - private readonly logger = new DfxLogger(PricingService); - + private readonly logger: DfxLogger; private readonly providerMap: PricingProviderMap; private readonly priceRuleCache = new AsyncCache(CacheItemResetPeriod.EVERY_6_HOURS); private readonly providerPriceCache = new AsyncCache(CacheItemResetPeriod.EVERY_10_SECONDS); private readonly updateCalls = new AsyncCache(CacheItemResetPeriod.ALWAYS); constructor( + readonly loggerFactory: LoggerFactory, private readonly priceRuleRepo: PriceRuleRepository, private readonly notificationService: NotificationService, readonly krakenService: KrakenService, @@ -59,6 +60,7 @@ export class PricingService { [PriceSource.EBEL2X]: ebel2xService, [PriceSource.CONSTANT]: constantService, }; + this.logger = loggerFactory.create(PricingService); } async getPrice(from: Active, to: Active, allowExpired: boolean, tryCount = 2): Promise { diff --git a/src/subdomains/supporting/support-issue/services/limit-request-notification.service.ts b/src/subdomains/supporting/support-issue/services/limit-request-notification.service.ts index 99cc1a10dd..7b7214ab56 100644 --- a/src/subdomains/supporting/support-issue/services/limit-request-notification.service.ts +++ b/src/subdomains/supporting/support-issue/services/limit-request-notification.service.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { Config } from 'src/config/config'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Process } from 'src/shared/services/process.service'; import { DfxCron } from 'src/shared/utils/cron'; import { Util } from 'src/shared/utils/util'; @@ -14,12 +15,15 @@ import { LimitRequestRepository } from '../repositories/limit-request.repository @Injectable() export class LimitRequestNotificationService { - private readonly logger = new DfxLogger(LimitRequestNotificationService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly limitRequestRepo: LimitRequestRepository, private readonly notificationService: NotificationService, - ) {} + ) { + this.logger = loggerFactory.create(LimitRequestNotificationService); + } @DfxCron(CronExpression.EVERY_5_MINUTES, { process: Process.LIMIT_REQUEST_MAIL, timeout: 1800 }) async sendNotificationMails(): Promise { diff --git a/src/subdomains/supporting/support-issue/services/limit-request.service.ts b/src/subdomains/supporting/support-issue/services/limit-request.service.ts index 603719893c..b53c4f00b0 100644 --- a/src/subdomains/supporting/support-issue/services/limit-request.service.ts +++ b/src/subdomains/supporting/support-issue/services/limit-request.service.ts @@ -1,5 +1,6 @@ import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { Util } from 'src/shared/utils/util'; import { MailContext, MailType } from 'src/subdomains/supporting/notification/enums'; import { NotificationService } from 'src/subdomains/supporting/notification/services/notification.service'; @@ -16,15 +17,18 @@ import { SupportLogService } from './support-log.service'; @Injectable() export class LimitRequestService { - private readonly logger = new DfxLogger(LimitRequestService); + private readonly logger: DfxLogger; constructor( + readonly loggerFactory: LoggerFactory, private readonly limitRequestRepo: LimitRequestRepository, private readonly webhookService: WebhookService, private readonly notificationService: NotificationService, private readonly supportIssueRepo: SupportIssueRepository, private readonly supportLogService: SupportLogService, - ) {} + ) { + this.logger = loggerFactory.create(LimitRequestService); + } async increaseLimitInternal(dto: LimitRequestDto, userData: UserData): Promise { if (userData.kycLevel < KycLevel.LEVEL_50) throw new BadRequestException('Missing KYC'); diff --git a/src/subdomains/supporting/support-issue/services/support-issue-notification.service.ts b/src/subdomains/supporting/support-issue/services/support-issue-notification.service.ts index b5b0dc2e32..17243f521f 100644 --- a/src/subdomains/supporting/support-issue/services/support-issue-notification.service.ts +++ b/src/subdomains/supporting/support-issue/services/support-issue-notification.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { DfxLogger } from 'src/shared/services/dfx-logger'; +import { DfxLogger } from 'src/logger/dfx-logger.service'; +import { LoggerFactory } from 'src/logger/logger.factory'; import { DisabledProcess, Process } from 'src/shared/services/process.service'; import { MailContext, MailType } from '../../notification/enums'; import { MailTranslationKey } from '../../notification/factories/mail.factory'; @@ -8,9 +9,11 @@ import { SupportMessage } from '../entities/support-message.entity'; @Injectable() export class SupportIssueNotificationService { - private readonly logger = new DfxLogger(SupportIssueNotificationService); + private readonly logger: DfxLogger; - constructor(private readonly notificationService: NotificationService) {} + constructor(private readonly notificationService: NotificationService, readonly loggerFactory: LoggerFactory) { + this.logger = loggerFactory.create(SupportIssueNotificationService); + } async newSupportMessage(entity: SupportMessage): Promise { try {