1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_core_tracing_TraceMethod_hpp
10 #define anna_core_tracing_TraceMethod_hpp
12 #include <anna/core/tracing/Logger.hpp>
19 Graba una traza en el historico de operaciones por cada entrada y salida de un determinado
26 @param className Nombre de la clase desde la que se invoca.
27 @param functionName Nombre de la funcion desde la que se invoca a este constructor.
28 @param fromFile Nombre del fichero desde el que se invoca a este constructor. Normalmente
29 sera el indicado por la macro de compilacion __FILE__.
30 @param fromLine Numero de linea del fichero desde la que se invoca a este constructor.
31 Normalmente sera el indicado por la macro de compilacion __LINE__.
33 \warning Se pueden sustituir los dos ultimos valores por la macro ANNA_FILE_LOCATION.
35 TraceMethod(const char* className, const char* functionName, const char* fromFile, const int fromLine) :
36 a_level(Logger::Debug),
37 a_className(className),
38 a_functionName(functionName),
41 if((a_ok = Logger::isActive(a_level)) == true) {
42 std::string text(className);
45 Logger::write(a_level, text, "begin", fromFile, fromLine);
51 @param level Nivel usado en la traza del método
52 @param className Nombre de la clase desde la que se invoca.
53 @param functionName Nombre de la funcion desde la que se invoca a este constructor.
54 @param fromFile Nombre del fichero desde el que se invoca a este constructor. Normalmente
55 sera el indicado por la macro de compilacion __FILE__.
56 @param fromLine Numero de linea del fichero desde la que se invoca a este constructor.
57 Normalmente sera el indicado por la macro de compilacion __LINE__.
59 \warning Se pueden sustituir los dos ultimos valores por la macro ANNA_FILE_LOCATION.
61 TraceMethod(const Logger::Level level, const char* className, const char* functionName, const char* fromFile, const int fromLine) :
63 a_className(className),
64 a_functionName(functionName),
65 a_fromFile(fromFile) {
66 if((a_ok = Logger::isActive(level)) == true) {
67 std::string text(className);
70 Logger::write(level, text, "begin", fromFile, fromLine);
76 @param methodName Nombre del método desde la que se invoca, debería incluir el nombre de la clase.
77 @param fromFile Nombre del fichero desde el que se invoca a este constructor. Normalmente
78 sera el indicado por la macro de compilacion __FILE__.
79 @param fromLine Numero de linea del fichero desde la que se invoca a este constructor.
80 Normalmente sera el indicado por la macro de compilacion __LINE__.
82 \warning Se pueden sustituir los dos ultimos valores por la macro ANNA_FILE_LOCATION.
84 TraceMethod(const char* methodName, const char* fromFile, const int fromLine) :
85 a_level(Logger::Debug),
86 a_className(methodName),
90 if((a_ok = Logger::isActive(a_level)) == true)
91 Logger::write(a_level, methodName, "begin", fromFile, fromLine);
96 @param level Nivel usado en la traza del método.
97 @param methodName Nombre del método desde la que se invoca, debería incluir el nombre de la clase.
98 @param fromFile Nombre del fichero desde el que se invoca a este constructor. Normalmente
99 sera el indicado por la macro de compilacion __FILE__.
100 @param fromLine Numero de linea del fichero desde la que se invoca a este constructor.
101 Normalmente sera el indicado por la macro de compilacion __LINE__.
103 \warning Se pueden sustituir los dos ultimos valores por la macro ANNA_FILE_LOCATION.
105 TraceMethod(const Logger::Level level, const char* methodName, const char* fromFile, const int fromLine) :
107 a_className(methodName),
108 a_functionName(NULL),
109 a_fromFile(fromFile),
111 if((a_ok = Logger::isActive(level)) == true)
112 Logger::write(level, methodName, "begin", fromFile, fromLine);
119 if(a_ok == true && Logger::isActive(a_level) == true) {
120 std::string text(a_className);
122 if(a_functionName != NULL) {
124 text += a_functionName;
127 Logger::write(a_level, text, "end", a_fromFile, 0);
132 const Logger::Level a_level;
133 const char* a_className;
134 const char* a_functionName;
135 const char* a_fromFile;