1 /*
2  *  Copyright (C) 2005-2018 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #define LOG_LEVEL_NONE         -1 // nothing at all is logged
12 #define LOG_LEVEL_NORMAL        0 // shows notice, error, severe and fatal
13 #define LOG_LEVEL_DEBUG         1 // shows all
14 #define LOG_LEVEL_DEBUG_FREEMEM 2 // shows all + shows freemem on screen
15 #define LOG_LEVEL_MAX           LOG_LEVEL_DEBUG_FREEMEM
16 
17 // ones we use in the code
18 #define LOGDEBUG   0
19 #define LOGINFO    1
20 #define LOGWARNING 2
21 #define LOGERROR   3
22 #define LOGFATAL   4
23 #define LOGNONE    5
24 
25 // extra masks - from bit 5
26 #define LOGMASKBIT    5
27 #define LOGMASK       ((1 << LOGMASKBIT) - 1)
28 
29 #define LOGSAMBA      (1 << (LOGMASKBIT + 0))
30 #define LOGCURL       (1 << (LOGMASKBIT + 1))
31 #define LOGFFMPEG     (1 << (LOGMASKBIT + 2))
32 #define LOGDBUS       (1 << (LOGMASKBIT + 4))
33 #define LOGJSONRPC    (1 << (LOGMASKBIT + 5))
34 #define LOGAUDIO      (1 << (LOGMASKBIT + 6))
35 #define LOGAIRTUNES   (1 << (LOGMASKBIT + 7))
36 #define LOGUPNP       (1 << (LOGMASKBIT + 8))
37 #define LOGCEC        (1 << (LOGMASKBIT + 9))
38 #define LOGVIDEO      (1 << (LOGMASKBIT + 10))
39 #define LOGWEBSERVER  (1 << (LOGMASKBIT + 11))
40 #define LOGDATABASE   (1 << (LOGMASKBIT + 12))
41 #define LOGAVTIMING   (1 << (LOGMASKBIT + 13))
42 #define LOGWINDOWING  (1 << (LOGMASKBIT + 14))
43 #define LOGPVR        (1 << (LOGMASKBIT + 15))
44 #define LOGEPG        (1 << (LOGMASKBIT + 16))
45 #define LOGANNOUNCE   (1 << (LOGMASKBIT + 17))
46 
47 #include "utils/params_check_macros.h"
48 
49 namespace XbmcCommons
50 {
51   class ILogger
52   {
53   public:
54     virtual ~ILogger() = default;
55     void Log(int loglevel, PRINTF_FORMAT_STRING const char *format, ...) PARAM3_PRINTF_FORMAT;
56 
57     virtual void log(int loglevel, IN_STRING const char* message) = 0;
58   };
59 }
60 
61