vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Feb 8 14:23:34 2015 +0200| [c8d5ba620ec54ffb35792777dbdaf5cdb8493281] | committer: Rémi Denis-Courmont
logger: track file, line and function for debug > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c8d5ba620ec54ffb35792777dbdaf5cdb8493281 --- include/vlc_messages.h | 37 +++++++++++++++++++++++-------------- src/misc/messages.c | 13 ++++++++++++- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/include/vlc_messages.h b/include/vlc_messages.h index 045e9e8..2da692e 100644 --- a/include/vlc_messages.h +++ b/include/vlc_messages.h @@ -60,23 +60,32 @@ typedef struct vlc_log_t const char *psz_object_type; /**< Emitter object type name */ const char *psz_module; /**< Emitter module (source code) */ const char *psz_header; /**< Additional header (used by VLM media) */ + const char *file; /**< Source code file name or NULL */ + int line; /**< Source code file line number or -1 */ + const char *func; /**< Source code calling function name or NULL */ } vlc_log_t; -VLC_API void vlc_Log(vlc_object_t *, int, - const char *, const char *, ...) VLC_FORMAT( 4, 5 ); -VLC_API void vlc_vaLog(vlc_object_t *, int, - const char *, const char *, va_list); -#define msg_GenericVa(a, b, c, d) \ - vlc_vaLog(VLC_OBJECT(a), b, MODULE_STRING, c, d) +VLC_API void vlc_Log(vlc_object_t *obj, int prio, const char *module, + const char *file, unsigned line, const char *func, + const char *format, ...) VLC_FORMAT(7, 8); +VLC_API void vlc_vaLog(vlc_object_t *obj, int prio, const char *module, + const char *file, unsigned line, const char *func, + const char *format, va_list ap); +#define msg_GenericVa(o, p, fmt, ap) \ + vlc_vaLog(VLC_OBJECT(o), p, MODULE_STRING, __FILE__, __LINE__, __func__, \ + fmt, ap) -#define msg_Info( p_this, ... ) \ - vlc_Log( VLC_OBJECT(p_this), VLC_MSG_INFO, MODULE_STRING, __VA_ARGS__ ) -#define msg_Err( p_this, ... ) \ - vlc_Log( VLC_OBJECT(p_this), VLC_MSG_ERR, MODULE_STRING, __VA_ARGS__ ) -#define msg_Warn( p_this, ... ) \ - vlc_Log( VLC_OBJECT(p_this), VLC_MSG_WARN, MODULE_STRING, __VA_ARGS__ ) -#define msg_Dbg( p_this, ... ) \ - vlc_Log( VLC_OBJECT(p_this), VLC_MSG_DBG, MODULE_STRING, __VA_ARGS__ ) +#define msg_Generic(o, p, ...) \ + vlc_Log(VLC_OBJECT(o), p, MODULE_STRING, __FILE__, __LINE__, \ + __func__, __VA_ARGS__) +#define msg_Info(p_this, ...) \ + msg_Generic(p_this, VLC_MSG_INFO, __VA_ARGS__) +#define msg_Err(p_this, ...) \ + msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__) +#define msg_Warn(p_this, ...) \ + msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__) +#define msg_Dbg(p_this, ...) \ + msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__) #ifndef MODULE_STRING # define MODULE_STRING __FILE__ diff --git a/src/misc/messages.c b/src/misc/messages.c index 77a5ec9..3679ade 100644 --- a/src/misc/messages.c +++ b/src/misc/messages.c @@ -88,6 +88,7 @@ static void Win32DebugOutputMsg (void *, int , const vlc_log_t *, * to vlc_Log(). */ void vlc_vaLog (vlc_object_t *obj, int type, const char *module, + const char *file, unsigned line, const char *func, const char *format, va_list args) { if (obj != NULL && obj->i_flags & OBJECT_FLAGS_QUIET) @@ -115,6 +116,9 @@ void vlc_vaLog (vlc_object_t *obj, int type, const char *module, msg.psz_object_type = (obj != NULL) ? obj->psz_object_type : "generic"; msg.psz_module = module; msg.psz_header = NULL; + msg.file = file; + msg.line = line; + msg.func = func; for (vlc_object_t *o = obj; o != NULL; o = o->p_parent) if (o->psz_header != NULL) @@ -142,15 +146,19 @@ void vlc_vaLog (vlc_object_t *obj, int type, const char *module, * \param type VLC_MSG_* message type (info, error, warning or debug) * \param module name of module from which the message come * (normally MODULE_STRING) + * \param file source module file name (normally __FILE__) or NULL + * \param line function call source line number (normally __LINE__) or 0 + * \param func calling function name (normally __func__) or NULL * \param format printf-like message format */ void vlc_Log(vlc_object_t *obj, int type, const char *module, + const char *file, unsigned line, const char *func, const char *format, ... ) { va_list ap; va_start(ap, format); - vlc_vaLog(obj, type, module, format, ap); + vlc_vaLog(obj, type, module, file, line, func, format, ap); va_end(ap); } @@ -265,6 +273,9 @@ static void vlc_vaLogEarly(void *d, int type, const vlc_log_t *item, log->meta.psz_object_type = item->psz_object_type; log->meta.psz_module = item->psz_module; /* Ditto. */ log->meta.psz_header = item->psz_header ? strdup(item->psz_header) : NULL; + log->meta.file = item->file; + log->meta.line = item->line; + log->meta.func = item->func; int canc = vlc_savecancel(); /* XXX: needed for vasprintf() ? */ if (vasprintf(&log->msg, format, ap) == -1) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
