Ответ для этого на самом деле находится в файле FAQ, включенном в библиотеку загрузки. У меня есть библиотека DLL с фиксированным внутренним интерфейсом, в которой есть следующий заголовок, и я могу включить класс, функцию и номер строки в файл журнала.
#include <pantheios/pantheios.hpp>
#include <pantheios/frontends/fe.N.h>
//#include <pantheios/frontends/fe.simple.h>
#ifndef PANTHEIOS_INCL_PANTHEIOS_H_TRACE
#define PANTHEIOS_TRACE_PREFIX __FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): " __FUNCTION__ ": "
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */
#include <pantheios/trace.h>
#include <pantheios/inserters.hpp>
#include <pantheios/backends/bec.file.h> // be.file header
То, что здесь происходит, заключается в том, что вы должны переопределить PANTHEIOS_TRACE_PREFIX, прежде чем включать trace.h, что я и показал выше. Остальные строки кода включены просто, чтобы показать вам, куда идет #define. И извините за задержку ответа. Если вы хотите, я мог бы опубликовать загрузку в своем блоге с помощью DLL-проекта с фиксированным фоном, который любой мог бы использовать в своем решении для простой регистрации на основе файлов. Оставьте комментарий, если у вас есть интерес к этому проекту
Обновление 28.02.2010 00:53 CST: Для справки вот вопрос из FAQ:
Q9: «Предоставляет ли Pantheios конфигурацию, которая выдает зарегистрированное сообщение?»
содержащий содержащую функцию, эквивалентную:
log(informational, __FUNCTION__, ": my message");
без необходимости писать это (или какую-нибудь оболочку, которая проверяет поддержку компилятора). "[15 марта 2008]
A9:
Вам нужно #define PANTHEIOS_TRACE_PREFIX к тому, что вы хотите. По умолчанию
это __FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): "
, что дает
формат <file>(<line>):
Чтобы включить функцию, давайте скажем, что вы хотите, чтобы она имела формат <file>(<line>): <func>:
. Для этого вы должны определить это следующим образом:
#include <pantheios/pantheios.h>
#define PANTHEIOS_TRACE_PREFIX __FILE__ " " PANTHEIOS_STRINGIZE(__LINE__) ": " __FUNCTION__ ": "
#include <pantheios/trace.h>
Обратите внимание, что определение должно прийти до включения pantheios / trace.h. Следовательно, более безопасный способ сделать это заключается в следующем:
/* File: myPantheiosRootHeader.h */
#include <pantheios/pantheios.h>
#ifdef PANTHEIOS_INCL_PANTHEIOS_H_TRACE
# error pantheios/trace.h must not be included before myPantheiosRootHeader.h
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */
#define PANTHEIOS_TRACE_PREFIX __FILE__ " " PANTHEIOS_STRINGIZE(__LINE__) ": " __FUNCTION__ ": "
#include <pantheios/trace.h>