-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy path0007-Python-Make-Logging-Filtering-global-31944.patch
186 lines (174 loc) · 6.71 KB
/
0007-Python-Make-Logging-Filtering-global-31944.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
From bf8ce26830a60e0d247f37f3b26d2f2244cb986d Mon Sep 17 00:00:00 2001
From: Stefan Agner <stefan@agner.ch>
Date: Wed, 14 Feb 2024 15:11:44 +0100
Subject: [PATCH] [Python] Make Logging Filtering global (#31944)
Log filtering is a global affair, so move the filtering functions to a
global context too. This allows to setup logging before creating any
device controller. It aligns with how the SDK treats logging.
Also enable log filtering for the Linux platform to make the
functionality useful on Linux.
---
src/controller/python/BUILD.gn | 1 +
.../ChipDeviceController-ScriptBinding.cpp | 20 ----------
src/controller/python/chip/ChipDeviceCtrl.py | 17 ---------
.../python/chip/logging/LoggingFilter.cpp | 37 +++++++++++++++++++
.../python/chip/logging/__init__.py | 13 +++++++
src/platform/Linux/CHIPPlatformConfig.h | 2 +-
6 files changed, 52 insertions(+), 38 deletions(-)
create mode 100644 src/controller/python/chip/logging/LoggingFilter.cpp
diff --git a/src/controller/python/BUILD.gn b/src/controller/python/BUILD.gn
index 140ef1e08d..5fc2212098 100644
--- a/src/controller/python/BUILD.gn
+++ b/src/controller/python/BUILD.gn
@@ -81,6 +81,7 @@ shared_library("ChipDeviceCtrl") {
"chip/internal/ChipThreadWork.cpp",
"chip/internal/ChipThreadWork.h",
"chip/internal/CommissionerImpl.cpp",
+ "chip/logging/LoggingFilter.cpp",
"chip/logging/LoggingRedirect.cpp",
"chip/native/ChipMainLoopWork.h",
"chip/native/PyChipError.cpp",
diff --git a/src/controller/python/ChipDeviceController-ScriptBinding.cpp b/src/controller/python/ChipDeviceController-ScriptBinding.cpp
index 2576a36030..b4f2edb295 100644
--- a/src/controller/python/ChipDeviceController-ScriptBinding.cpp
+++ b/src/controller/python/ChipDeviceController-ScriptBinding.cpp
@@ -71,7 +71,6 @@
#include <lib/support/CodeUtils.h>
#include <lib/support/DLLUtil.h>
#include <lib/support/ScopedBuffer.h>
-#include <lib/support/logging/CHIPLogging.h>
#include <platform/CHIPDeviceLayer.h>
#include <setup_payload/QRCodeSetupPayloadParser.h>
#include <system/SystemClock.h>
@@ -200,9 +199,6 @@ PyChipError pychip_ScriptDevicePairingDelegate_SetOpenWindowCompleteCallback(
// BLE
PyChipError pychip_DeviceCommissioner_CloseBleConnection(chip::Controller::DeviceCommissioner * devCtrl);
-uint8_t pychip_DeviceController_GetLogFilter();
-void pychip_DeviceController_SetLogFilter(uint8_t category);
-
const char * pychip_Stack_ErrorToString(ChipError::StorageType err);
const char * pychip_Stack_StatusReportToString(uint32_t profileId, uint16_t statusCode);
void pychip_Stack_SetLogFunct(LogMessageFunct logFunct);
@@ -353,22 +349,6 @@ const char * pychip_DeviceController_StatusReportToString(uint32_t profileId, ui
return nullptr;
}
-uint8_t pychip_DeviceController_GetLogFilter()
-{
-#if _CHIP_USE_LOGGING
- return chip::Logging::GetLogFilter();
-#else
- return chip::Logging::kLogCategory_None;
-#endif
-}
-
-void pychip_DeviceController_SetLogFilter(uint8_t category)
-{
-#if _CHIP_USE_LOGGING
- chip::Logging::SetLogFilter(category);
-#endif
-}
-
PyChipError pychip_DeviceController_ConnectBLE(chip::Controller::DeviceCommissioner * devCtrl, uint16_t discriminator,
uint32_t setupPINCode, chip::NodeId nodeid)
{
diff --git a/src/controller/python/chip/ChipDeviceCtrl.py b/src/controller/python/chip/ChipDeviceCtrl.py
index 2297dfff30..2400d543f6 100644
--- a/src/controller/python/chip/ChipDeviceCtrl.py
+++ b/src/controller/python/chip/ChipDeviceCtrl.py
@@ -1480,23 +1480,6 @@ class ChipDeviceControllerBase():
return self._Cluster.ListClusterAttributes()
- def SetLogFilter(self, category):
- self.CheckIsActive()
-
- if category < 0 or category > pow(2, 8):
- raise ValueError("category must be an unsigned 8-bit integer")
-
- self._ChipStack.Call(
- lambda: self._dmLib.pychip_DeviceController_SetLogFilter(category)
- )
-
- def GetLogFilter(self):
- self.CheckIsActive()
-
- self._ChipStack.Call(
- lambda: self._dmLib.pychip_DeviceController_GetLogFilter()
- )
-
def SetBlockingCB(self, blockingCB):
self.CheckIsActive()
diff --git a/src/controller/python/chip/logging/LoggingFilter.cpp b/src/controller/python/chip/logging/LoggingFilter.cpp
new file mode 100644
index 0000000000..52271dc3ae
--- /dev/null
+++ b/src/controller/python/chip/logging/LoggingFilter.cpp
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 2024 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <lib/support/logging/CHIPLogging.h>
+
+extern "C" {
+
+uint8_t pychip_logging_GetLogFilter()
+{
+#if _CHIP_USE_LOGGING
+ return chip::Logging::GetLogFilter();
+#else
+ return chip::Logging::kLogCategory_None;
+#endif
+}
+
+void pychip_logging_SetLogFilter(uint8_t category)
+{
+#if _CHIP_USE_LOGGING
+ chip::Logging::SetLogFilter(category);
+#endif
+}
+}
diff --git a/src/controller/python/chip/logging/__init__.py b/src/controller/python/chip/logging/__init__.py
index 6916c8b272..047d3f4f8e 100644
--- a/src/controller/python/chip/logging/__init__.py
+++ b/src/controller/python/chip/logging/__init__.py
@@ -51,3 +51,16 @@ def RedirectToPythonLogging():
handle = _GetLoggingLibraryHandle()
handle.pychip_logging_set_callback(_RedirectToPythonLogging)
+
+
+def SetLogFilter(category):
+ if category < 0 or category > pow(2, 8):
+ raise ValueError("category must be an unsigned 8-bit integer")
+
+ handle = _GetLoggingLibraryHandle()
+ handle.pychip_logging_SetLogFilter(category)
+
+
+def GetLogFilter():
+ handle = _GetLoggingLibraryHandle()
+ return handle.pychip_logging_GetLogFilter()
diff --git a/src/platform/Linux/CHIPPlatformConfig.h b/src/platform/Linux/CHIPPlatformConfig.h
index 788fe9b80c..9e2832307f 100644
--- a/src/platform/Linux/CHIPPlatformConfig.h
+++ b/src/platform/Linux/CHIPPlatformConfig.h
@@ -57,7 +57,7 @@ using CHIP_CONFIG_PERSISTED_STORAGE_KEY_TYPE = const char *;
#endif // CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS
#ifndef CHIP_LOG_FILTERING
-#define CHIP_LOG_FILTERING 0
+#define CHIP_LOG_FILTERING 1
#endif // CHIP_LOG_FILTERING
#ifndef CHIP_CONFIG_BDX_MAX_NUM_TRANSFERS
--
2.43.0