source: trunk/libtransmission/log.h

Last change on this file was 14724, checked in by jordan, 5 years ago

use '#pragma once' instead of #ifndef..#define..#endif guards

  • Property svn:keywords set to Date Rev Author Id
File size: 3.1 KB
Line 
1/*
2 * This file Copyright (C) 2010-2014 Mnemosyne LLC
3 *
4 * It may be used under the GNU GPL versions 2 or 3
5 * or any future license endorsed by Mnemosyne LLC.
6 *
7 * $Id: log.h 14724 2016-03-29 16:37:21Z mikedld $
8 */
9
10#pragma once
11
12#include <stddef.h> /* size_t */
13
14#include "file.h" /* tr_sys_file_t */
15#include "utils.h" /* TR_GNUC_PRINTF, TR_GNUC_NONNULL */
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21#define TR_LOG_MAX_QUEUE_LENGTH 10000
22
23tr_log_level tr_logGetLevel (void);
24
25static inline bool
26tr_logLevelIsActive (tr_log_level level)
27{
28  return tr_logGetLevel () >= level;
29}
30
31void tr_logAddMessage (const char   * file,
32                       int            line,
33                       tr_log_level   level,
34                       const char   * torrent,
35                       const char   * fmt, ...) TR_GNUC_PRINTF (5, 6);
36
37#define tr_logAddNamedError(n, ...) \
38  do\
39    { \
40      if (tr_logLevelIsActive (TR_LOG_ERROR)) \
41        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_ERROR, n, __VA_ARGS__); \
42    } \
43  while (0)
44
45#define tr_logAddNamedInfo(n, ...) \
46  do \
47    { \
48      if (tr_logLevelIsActive (TR_LOG_INFO)) \
49        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_INFO, n, __VA_ARGS__); \
50    } \
51  while (0)
52
53#define tr_logAddNamedDbg(n, ...) \
54  do \
55    { \
56      if (tr_logLevelIsActive (TR_LOG_DEBUG)) \
57        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_DEBUG, n, __VA_ARGS__); \
58    } \
59  while (0)
60
61#define tr_logAddTorErr(tor, ...) \
62  do \
63    { \
64      if (tr_logLevelIsActive (TR_LOG_ERROR)) \
65        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_ERROR, tr_torrentName (tor), __VA_ARGS__); \
66    } \
67  while (0)
68
69#define tr_logAddTorInfo(tor, ...) \
70  do \
71    { \
72      if (tr_logLevelIsActive (TR_LOG_INFO)) \
73        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_INFO, tr_torrentName (tor), __VA_ARGS__); \
74    } \
75  while (0)
76
77#define tr_logAddTorDbg(tor, ...) \
78  do \
79    { \
80      if (tr_logLevelIsActive (TR_LOG_DEBUG)) \
81        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_DEBUG, tr_torrentName (tor), __VA_ARGS__); \
82    } \
83  while (0)
84
85#define tr_logAddError(...) \
86  do \
87    { \
88      if (tr_logLevelIsActive (TR_LOG_ERROR)) \
89        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_ERROR, NULL, __VA_ARGS__); \
90    } \
91  while (0)
92
93#define tr_logAddInfo(...) \
94  do \
95    { \
96      if (tr_logLevelIsActive (TR_LOG_INFO)) \
97        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_INFO, NULL, __VA_ARGS__); \
98    } \
99  while (0)
100
101#define tr_logAddDebug(...) \
102  do \
103    { \
104      if (tr_logLevelIsActive (TR_LOG_DEBUG)) \
105        tr_logAddMessage (__FILE__, __LINE__, TR_LOG_DEBUG, NULL, __VA_ARGS__); \
106    } \
107  while (0)
108
109
110
111tr_sys_file_t tr_logGetFile (void);
112
113/** @brief return true if deep logging has been enabled by the user; false otherwise */
114bool tr_logGetDeepEnabled (void);
115
116void tr_logAddDeep (const char * file,
117                    int          line,
118                    const char * name,
119                    const char * fmt,
120                    ...) TR_GNUC_PRINTF (4, 5) TR_GNUC_NONNULL (1,4);
121
122/** @brief set the buffer with the current time formatted for deep logging. */
123char* tr_logGetTimeStr (char * buf, size_t buflen) TR_GNUC_NONNULL (1);
124
125#ifdef __cplusplus
126}
127#endif
128
129/** @} */
130
Note: See TracBrowser for help on using the repository browser.