Registrazione dei modelli dal codice della libreria

1

Sto cercando un modello di progettazione per la registrazione dal codice della libreria. Supponiamo che io abbia una funzione in un file di libreria che prevedo verrà utilizzato da più front-end (assumiamo una CLI e un web):

def foo(a,b):
 log("Processing a")
 p(a)
 log("Processing b")
 p(b)

Da dove viene il "log" di foo? Dovrebbe:

  1. Avere un logger di argomenti opzionale che fornisce l'oggetto che implementa il log?
  2. Consulta un repository di archivi di ordinamento - ad esempio logger.getLogger("mylibrary")
  3. Essere sempre parte di un oggetto (nessun metodo statico / di classe i.o.w) e l'oggetto essere inizializzato con un logger come per (1)?
  4. ...

Supponiamo che stiamo parlando di un linguaggio con framework di registrazione incorporato come Python o un framework che viene spesso usato come log4j in Java.

    
posta Konrads 18.11.2018 - 00:29
fonte

1 risposta

3

L'approccio più comune è quello di passare l'istanza del logger al tuo oggetto tramite l'iniezione del costruttore o del setter. La tua libreria contiene l'interfaccia di Logger.

I consumatori della tua libreria possono creare la propria implementazione di registrazione basata sull'interfaccia nella libreria.

In questo modo puoi facilmente deriderlo per i test e creare diversi logger per ciascuna interfaccia utente, in modo che la tua CLI possa accedere alla console e l'interfaccia web possa accedere a un DB o qualunque sia il requisito.

    
risposta data 18.11.2018 - 17:03
fonte

Leggi altre domande sui tag