Skip to content

Commit e51d6d5

Browse files
committed
conan-io#279 Add logging level for conan-center hook
Signed-off-by: Uilian Ries <[email protected]>
1 parent 8f4a73a commit e51d6d5

File tree

3 files changed

+61
-5
lines changed

3 files changed

+61
-5
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,16 @@ variable ``CONAN_HOOK_ERROR_LEVEL``:
8888
- ``CONAN_HOOK_ERROR_LEVEL=40`` it will raise if any error happen.
8989
- ``CONAN_HOOK_ERROR_LEVEL=30`` it will raise if any error or warning happen.
9090

91+
If you want to decrease logging level, you can adjust it by the environment variable
92+
``CONAN_HOOK_LOGGING_LEVEL``:
9193

94+
- ``CONAN_HOOK_LOGGING_LEVEL=40`` it will print out only error messages
95+
- ``CONAN_HOOK_LOGGING_LEVEL=WARNING`` it will print out only warning and error messages
96+
97+
It accepts both logging level names and logging level code:
98+
- ERROR: 40
99+
- WARNING/WARN: 30
100+
- INFO: 20
92101

93102
### [Attribute checker](hooks/attribute_checker.py)
94103

hooks/conan-center.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import inspect
33
import os
44
import re
5-
from logging import WARNING, ERROR, INFO, DEBUG, NOTSET
5+
from logging import WARNING, ERROR, INFO, DEBUG, NOTSET, _nameToLevel
66

77
import yaml
88
from conans import tools, Settings
@@ -67,6 +67,11 @@ def __init__(self, output, kb_id=None):
6767
if self.kb_id:
6868
self.kb_url = kb_url(self.kb_id)
6969
self._error_level = int(os.getenv("CONAN_HOOK_ERROR_LEVEL", str(NOTSET)))
70+
self._set_logging_level()
71+
72+
def _set_logging_level(self):
73+
level = os.getenv("CONAN_HOOK_LOGGING_LEVEL", str(NOTSET))
74+
self._logging_level = int(level) if level.isdigit() else _nameToLevel[level.upper()]
7075

7176
def _get_message(self, message):
7277
if self._test_name:
@@ -76,22 +81,26 @@ def _get_message(self, message):
7681
return message
7782

7883
def success(self, message):
79-
self._output.success(self._get_message(message))
84+
if self._logging_level < WARNING:
85+
self._output.success(self._get_message(message))
8086

8187
def debug(self, message):
8288
if self._error_level and self._error_level <= DEBUG:
8389
self._error = True
84-
self._output.debug(self._get_message(message))
90+
if self._logging_level < INFO:
91+
self._output.debug(self._get_message(message))
8592

8693
def info(self, message):
8794
if self._error_level and self._error_level <= INFO:
8895
self._error = True
89-
self._output.info(self._get_message(message))
96+
if self._logging_level < WARNING:
97+
self._output.info(self._get_message(message))
9098

9199
def warn(self, message):
92100
if self._error_level and self._error_level <= WARNING:
93101
self._error = True
94-
self._output.warn(self._get_message(message))
102+
if self._logging_level < ERROR:
103+
self._output.warn(self._get_message(message))
95104

96105
def error(self, message):
97106
self._error = True

tests/test_hooks/conan-center/test_conan-center.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,3 +1035,41 @@ def package_info(self):
10351035
output = self.conan(['create', '.', 'name/version@user/test'])
10361036
self.assertIn("[LIBRARY DOES NOT EXIST (KB-H054)] OK", output)
10371037
self.assertNotIn('does not contain any library', output)
1038+
1039+
def test_logging_level(self):
1040+
conanfile = textwrap.dedent("""\
1041+
from conans import ConanFile
1042+
import os
1043+
1044+
class FoobarConan(ConanFile):
1045+
author = "Foobar"
1046+
1047+
def package(self):
1048+
pass
1049+
""")
1050+
tools.save('conanfile.py', content=conanfile)
1051+
output = self.conan(['create', '.', 'name/version@user/test'])
1052+
self.assertIn("ERROR: [PACKAGE LICENSE (KB-H012)]", output)
1053+
self.assertIn("WARN: [HEADER_ONLY, NO COPY SOURCE (KB-H005)]", output)
1054+
self.assertIn("[FPIC MANAGEMENT (KB-H007)] OK", output)
1055+
1056+
for level in ["INFO", "20"]:
1057+
with tools.environment_append({"CONAN_HOOK_LOGGING_LEVEL": level}):
1058+
output = self.conan(['create', '.', 'name/version@user/test'])
1059+
self.assertIn("ERROR: [PACKAGE LICENSE (KB-H012)]", output)
1060+
self.assertIn("WARN: [HEADER_ONLY, NO COPY SOURCE (KB-H005)]", output)
1061+
self.assertIn("[FPIC MANAGEMENT (KB-H007)] OK", output)
1062+
1063+
for level in ["Warning", "30"]:
1064+
with tools.environment_append({"CONAN_HOOK_LOGGING_LEVEL": level}):
1065+
output = self.conan(['create', '.', 'name/version@user/test'])
1066+
self.assertIn("ERROR: [PACKAGE LICENSE (KB-H012)]", output)
1067+
self.assertIn("WARN: [HEADER_ONLY, NO COPY SOURCE (KB-H005)]", output)
1068+
self.assertNotIn("[FPIC MANAGEMENT (KB-H007)] OK", output)
1069+
1070+
for level in ["error", "40"]:
1071+
with tools.environment_append({"CONAN_HOOK_LOGGING_LEVEL": level}):
1072+
output = self.conan(['create', '.', 'name/version@user/test'])
1073+
self.assertIn("ERROR: [PACKAGE LICENSE (KB-H012)]", output)
1074+
self.assertNotIn("WARN: [HEADER_ONLY, NO COPY SOURCE (KB-H005)]", output)
1075+
self.assertNotIn("[FPIC MANAGEMENT (KB-H007)] OK", output)

0 commit comments

Comments
 (0)