TFCweb  1.0.4 $Rev: 483 $
TFC Primavera 2012: Nucli d'un servidor web
Classes | Espais de Noms | Enumeracions | Funcions
Referència del Fitxer Log.h
#include "Excepcions.h"
#include <fstream>
#include <memory>
#include <ostream>
#include <sstream>
#include <stdexcept>
#include <string>
#include <vector>
#include <boost/filesystem.hpp>
#include <boost/thread.hpp>

Veure el codi d'aquest fitxer.

Classes

class  ErrorDestiNoAssociat
 Indica que s'ha intentat operar sobre un destí de logging no associat a l'objecte Log. Més...
class  ErrorLogNoValid
 Indica que s'ha intentat utilitzar com a fitxer no vàlid (directori o no escribible) Més...
class  Log
 Interfície de control de Logging. Més...
class  MissatgeLog
 Missatge individual de log. Més...

Espais de Noms

namespace  tfc
 Espai de noms del Treball de Final de Carrera.

Enumeracions

enum  NivellLog {
  NivellDebug = 1, NivellInfo, NivellWarning, NivellError,
  NIVELL_PER_DEFECTE_LOG = NivellDebug, NIVELL_MES_SILENCIOS = NivellError, NIVELL_MES_VERBOS = NivellDebug, NIVELL_PER_DEFECTE_MISSATGE = NivellWarning
}
 Nivells de logging. Més...

Funcions

void commit (MissatgeLog &ml)
 Manipulador final de missatge log: Imprimir la línia actual.
MissatgeLog log ()
 Interfície de creació de missatges de log.
std::shared_ptr
< ManipuladorParametritzat
nivell (NivellLog n)
 Manipulador parametritzat: Indicació del nivell de logging de l'entrada.
MissatgeLogrollback (MissatgeLog &ml)
 Manipulador de missatge de log: Cancel·lar la línia actual de ml.

Descripció Detallada

Autor
Toni Corvera
Id:
Log.h 483 2013-06-17 17:41:04Z toni

Logging

El mecanisme de logging és molt més simple d'utilitzar, del que la interfície pot donar a entrendre. Està dissenyat entorn missatges o entrades del log.

Un objecte tfc::Log únic controla els destins a on s'enviaràn els missatges de log. L'accés a l'objecte Log es fa mitjançant tfc::Log::singleton(), i s'en poden associar destins tals com fitxers o streams mitjançant tfc::Log::associa()

Els missatges individuals es creen amb log() i s'hi poden inserir valors com si es tractés d'un flux estàndard:

log() << "Missatge de log " << algun_objecte;

Un missatge de log es finalitza inserint-hi tfc::commit():

log() << "Missatge finalitzat" << commit;

En inserir tfc::commit() el missatge s'envia automàticament a tots els destins associats a l'objecte tfc::Log.

Cada destí i cada missatge tenen un nivell (tfc::NivellLog), els missatges només s'enviaran als destins que tinguin un nivell igual o inferior al seu.

Per fer:
TODO: Els manipuladors parametritzats ja no són necessaris perquè es poden inserir directament els nivells

L'ús de manipuladors de tfc::MissatgeLog està inspirat en els manipuladors de sortida de la biblioteca estàndard (p.e. std::endl): quan s'insereixen en el tfc::MissatgeLog el modifiquen o provoquen algun efecte com a conseqüència.

Com en la biblioteca estàndard hi ha dos tipus de manipuladors, els simples (com std::endl) i els parametritzats (com std::setfill)

Mireu també
Ús de manipuladors i generadors de manipuladors: http://stdcxx.apache.org/doc/stdlibug/33-3.html

Definició al fitxer Log.h.