Logger: Print correct source file and line number

Before this commit, always Logger.cpp:53 was being printed.

Change-Id: Ie5c64b4961c7c41d23484784a93eda5e08331f08
changes/29/7929/1
Pau Espin 5 years ago
parent f3d7f443a0
commit 3b78cbfdc1
  1. 2
      CommonLibs/Logger.cpp
  2. 11
      CommonLibs/Logger.h
  3. 10
      tests/CommonLibs/LogTest.cpp

@ -50,7 +50,7 @@ Log::~Log()
ScopedLock lock(gLogToLock);
// The COUT() macro prevents messages from stomping each other but adds uninteresting thread numbers,
// so just use std::cout.
LOGP(mCategory, mPriority, fmt, mStream.str().c_str());
LOGPSRC(mCategory, mPriority, filename, line, fmt, mStream.str().c_str());
}
ostringstream& Log::get()

@ -48,10 +48,10 @@ extern "C" {
#endif
#define LOG(level) \
Log(DMAIN, LOGL_##level).get() << "[tid=" << pthread_self() << "] "
Log(DMAIN, LOGL_##level, __BASE_FILE__, __LINE__).get() << "[tid=" << pthread_self() << "] "
#define LOGC(category, level) \
Log(category, LOGL_##level).get() << "[tid=" << pthread_self() << "] "
Log(category, LOGL_##level, __BASE_FILE__, __LINE__).get() << "[tid=" << pthread_self() << "] "
/**
A C++ stream-based thread-safe logger.
@ -67,11 +67,14 @@ class Log {
std::ostringstream mStream; ///< This is where we buffer up the log entry.
int mCategory; ///< Priority of current report.
int mPriority; ///< Category of current report.
const char *filename; ///< Source File Name of current report.
int line; ///< Line number in source file of current report.
public:
Log(int wCategory, int wPriority)
: mCategory(wCategory), mPriority(wPriority)
Log(int wCategory, int wPriority, const char* filename, int line)
: mCategory(wCategory), mPriority(wPriority),
filename(filename), line(line)
{ }
// Most of the work is in the destructor.

@ -61,9 +61,9 @@ int main(int argc, char *argv[])
log_set_print_filename(osmo_stderr_target, 0);
log_set_print_level(osmo_stderr_target, 1);
Log(MYCAT, LOGL_FATAL).get() << "testing the logger.";
Log(MYCAT, LOGL_ERROR).get() << "testing the logger.";
Log(MYCAT, LOGL_NOTICE).get() << "testing the logger.";
Log(MYCAT, LOGL_INFO).get() << "testing the logger.";
Log(MYCAT, LOGL_DEBUG).get() << "testing the logger.";
Log(MYCAT, LOGL_FATAL, __BASE_FILE__, __LINE__).get() << "testing the logger.";
Log(MYCAT, LOGL_ERROR, __BASE_FILE__, __LINE__).get() << "testing the logger.";
Log(MYCAT, LOGL_NOTICE, __BASE_FILE__, __LINE__).get() << "testing the logger.";
Log(MYCAT, LOGL_INFO, __BASE_FILE__, __LINE__).get() << "testing the logger.";
Log(MYCAT, LOGL_DEBUG, __BASE_FILE__, __LINE__).get() << "testing the logger.";
}

Loading…
Cancel
Save