seguire il principio Information Expert nelle linee guida GRASP per la progettazione orientata agli oggetti:
... posizionare una responsabilità nelle classi con la maggior parte delle informazioni necessarie per realizzarlo.
Così si scriverebbe al registro dalla classe che contiene i dati che è necessario registrare. Se l'evento che si desidera registrare si riferisce al lavoro del modello, quindi scrivere nel registro nel modello. Se l'evento vuole accedere si riferisce al lavoro del controller, quindi scrivere nel registro nel controller.
Creare un'uscita di registro per un'app. Altrimenti dovrai cercare tra molti file di log per trovare qualsiasi informazione diagnostica! È possibile memorizzare un oggetto registro nel numero Zend_Registry
in modo da poter richiamare il registro da qualsiasi classe nell'app.
Re tuoi commenti:
Meglio semplicemente falliscono con grazia, se il registratore non si trova sotto la chiave di registro previsto. Per errore, intendo dire che si genera un errore nello stdout (alla pagina Web) o stderr (nel log del server httpd), oppure si genera un'eccezione e si lascia che l'app la gestisca.
Per quanto riguarda le dipendenze, questo non è un problema. Ogni volta che una classe usa un'altra classe hai un tipo di dipendenza simile. Vedere lo schema di progettazione Registry.
fonte
2010-05-26 07:39:30
Ma con il logger estratto dal registro, il modello ha una nuova dipendenza "nascosta". Se utilizzo il modello in un'altra app, magari senza registrazione o memorizzato in una chiave diversa, tenta di ottenere il log del log. Quindi, tutti i miei modelli dovrebbero sottoclasse un modello base che contenga metodi come log(), setLogger(), getLogger()? O è solo eccessivo? –
Molto utile, molte grazie. ;-) –