]> git.proxmox.com Git - ceph.git/blob - ceph/src/log/SubsystemMap.h
update sources to v12.1.2
[ceph.git] / ceph / src / log / SubsystemMap.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #ifndef CEPH_LOG_SUBSYSTEMS
5 #define CEPH_LOG_SUBSYSTEMS
6
7 #include <string>
8 #include <vector>
9
10 #include "include/assert.h"
11
12 namespace ceph {
13 namespace logging {
14
15 struct Subsystem {
16 int log_level, gather_level;
17 std::string name;
18
19 Subsystem() : log_level(0), gather_level(0) {}
20 };
21
22 class SubsystemMap {
23 std::vector<Subsystem> m_subsys;
24 unsigned m_max_name_len;
25
26 friend class Log;
27
28 public:
29 SubsystemMap() : m_max_name_len(0) {}
30
31 size_t get_num() const {
32 return m_subsys.size();
33 }
34
35 int get_max_subsys_len() const {
36 return m_max_name_len;
37 }
38
39 void add(unsigned subsys, std::string name, int log, int gather);
40 void set_log_level(unsigned subsys, int log);
41 void set_gather_level(unsigned subsys, int gather);
42
43 int get_log_level(unsigned subsys) const {
44 if (subsys >= m_subsys.size())
45 subsys = 0;
46 return m_subsys[subsys].log_level;
47 }
48
49 int get_gather_level(unsigned subsys) const {
50 if (subsys >= m_subsys.size())
51 subsys = 0;
52 return m_subsys[subsys].gather_level;
53 }
54
55 const std::string& get_name(unsigned subsys) const {
56 if (subsys >= m_subsys.size())
57 subsys = 0;
58 return m_subsys[subsys].name;
59 }
60
61 bool should_gather(unsigned sub, int level) {
62 assert(sub < m_subsys.size());
63 return level <= m_subsys[sub].gather_level ||
64 level <= m_subsys[sub].log_level;
65 }
66 };
67
68 }
69 }
70
71 #endif