STB1019 / SkullOfSummer

Learn stuff with less 7-days
Apache License 2.0
5 stars 0 forks source link

dubbi circa l'implementazione della log utility #7

Closed Koldar closed 7 years ago

Koldar commented 7 years ago

Ciao,

ho appena finito di guardare la log utility che hai messo sul github e ho un pò di dubbi:

  1. Prima di tutto interessante l'aggiunta del timestamp. Dico solo una cosa: figata. Però devi mettere anche la fonte (a proposito, che clock hai usato? il MONOTONIC o l'altro?);
  2. c'è un pesante problema riguardo nell'header. Hai definito delle funzioni nell'header: questo rende l'header di fatto inusabile su più transaction unit (.o). Devi spostare le definizione delle funzioni in un .c e mettere nell'header solo le dichiarazioni delle funzioni;
  3. c'è un problema anche per le definizioni delle funzioni di log (log_d, log_i, log_c): qualora l'utente non definisca più il tag DEBUG (cosa che in produzione accade praticamente sempre) l'intero programma non compilerebbe più. Devi inserire delle macro vuote per ciascuna funzione di log (rigarda i file che ti ho messo nell'issue #4
  4. il prototipo dei log_d, log_i, log_c p troppo semplice. Non è possibile fare una delle loggate più semplici, per esempio log_i("the size of the graph is %d", getSizeOfGraph(g));. Di fatto la utility di log proposta non è molto utile. Per far vedere quanto essa possa essere utile (abuso della macro programming e dei define in generale) serve inserire anche questa funzione. Riguarda il codice in #4 che ti ho postato;
  5. non ho capito la funzione _log: nel senso, se io ho attivato tutti i livelli di log (DEBUG, INFO eccetera), un unica chiamata di _log mi stampa la stessa cosa 5 volte?
  6. Non c'è un'altra cosa estremamente importante della log utility che invece ho messo nel codice del #4, ossia la stampa del nome del file, nome della funzione e line number in cui il log è presente. Serve aggiungere anche quello.
  7. I livello di log non sono tra loro indipendenti: se io attivo INFO, tutti i livelli superiori a INFO devono essere a loro volta attivati: se io sono interessato ad INFO, sono per forza interessato anche a WARNING, ERROR e CRITICAL. Nel tuo codice invece questo non avviene;
Koldar commented 7 years ago

Ah, un'altra cosa: a cosa serve common_facilities.h?