Provide RP_LOG_BATCH_SIZE variable

Related-Prod: PRODX-53429
Change-Id: Ief51411146c3f0780302405bccc870bc059fcb18
diff --git a/rp_reporter/rp_reporter/report_from_xml.py b/rp_reporter/rp_reporter/report_from_xml.py
index 5493938..652f90f 100644
--- a/rp_reporter/rp_reporter/report_from_xml.py
+++ b/rp_reporter/rp_reporter/report_from_xml.py
@@ -2,6 +2,8 @@
 import click
 import ipdb
 import urllib
+
+import urllib3
 import xunitparser
 import logging
 import pathlib
@@ -17,7 +19,7 @@
 from reportportal_client import RPClient
 from reportportal_client.helpers import timestamp
 
-from .settings import RP_ENDPOINT, RP_APIKEY, RP_PROJECT
+from .settings import RP_ENDPOINT, RP_APIKEY, RP_PROJECT, RP_LOG_BATCH_SIZE
 
 LOG = logging.getLogger("rp_reporter")
 
@@ -93,6 +95,7 @@
                 endpoint=RP_ENDPOINT,
                 project=RP_PROJECT,
                 api_key=RP_APIKEY,
+                log_batch_size=RP_LOG_BATCH_SIZE,
                 is_skipped_an_issue=False,
                 truncate_attributes=False,
                 retries=15,
@@ -287,7 +290,6 @@
                         stats.add_error()
                     case _:
                         raise BaseException(f"Unknown {tc.result=} in xml")
-
                 if tc.message:
                     self.client.log(
                         time=timestamp(), message=tc.message, item_id=item_id
diff --git a/rp_reporter/rp_reporter/settings.py b/rp_reporter/rp_reporter/settings.py
index 9a3ef56..ddd2314 100644
--- a/rp_reporter/rp_reporter/settings.py
+++ b/rp_reporter/rp_reporter/settings.py
@@ -6,12 +6,32 @@
 
 LOG = logging.getLogger("rp_reporter")
 
+class AnsiColorFormatter(logging.Formatter):
+    def format(self, record: logging.LogRecord):
+        no_style = '\033[0m'
+        bold = '\033[91m'
+        grey = '\033[90m'
+        yellow = '\033[93m'
+        red = '\033[31m'
+        red_light = '\033[91m'
+        start_style = {
+            'DEBUG': grey,
+            'INFO': no_style,
+            'WARNING': yellow,
+            'ERROR': red,
+            'CRITICAL': red_light + bold,
+        }.get(record.levelname, no_style)
+        end_style = no_style
+        return f'{start_style}{super().format(record)}{end_style}'
+
+
+
 RP_CONFIG_FILE = environ.get("RP_CONFIG_FILE") or (Path.home() / ".reportportal_config")
 
 
 def from_conf(key_name):
     if not Path(RP_CONFIG_FILE).exists():
-        LOG.info(
+        LOG.debug(
             f"Can't get {key_name} because config file " f"not found: {RP_CONFIG_FILE}"
         )
         return None
@@ -19,26 +39,25 @@
         yaml_config = yaml.safe_load(f)
         value = yaml_config.get(key_name)
         if value is None:
-            LOG.info(f"Can't get {key_name} because it's absent in {RP_CONFIG_FILE}")
+            LOG.debug(f"Can't get {key_name} because it's absent in {RP_CONFIG_FILE}")
         return value
 
-
 def call_error(key_name):
     raise Exception(
         f"{key_name} should be defined in {RP_CONFIG_FILE} or "
         f"by environment variable"
     )
 
-
 RP_LOGGING = environ.get("RP_LOGGING") or from_conf("RP_LOGGING") or logging.WARNING
 RP_LOG_FILE = environ.get("RP_LOG_FILE") or from_conf("RP_LOG_FILE")
 
-logging.basicConfig(
-    level=RP_LOGGING,
-    format="%(asctime)s %(levelname)s - %(filename)s:%(lineno)d (%(funcName)s) - %(message)s",
-    filename=RP_LOG_FILE,
-    filemode="w",
-)
+logger = logging.getLogger()
+handler = logging.StreamHandler()
+handler.setLevel(RP_LOGGING) # DEBUG INFO WARNING ERROR CRITICAL
+formatter = AnsiColorFormatter('{asctime} | {levelname:<8s} | {name:<20s} | {message}', style='{')
+handler.setFormatter(formatter)
+logger.addHandler(handler)
+logger.setLevel(RP_LOGGING) # DEBUG INFO WARNING ERROR CRITICAL
 
 RP_APIKEY = (
     environ.get("RP_APIKEY") or from_conf("RP_APIKEY") or call_error("RP_APIKEY")
@@ -50,6 +69,10 @@
     environ.get("RP_PROJECT") or from_conf("RP_PROJECT") or call_error("RP_PROJECT")
 )
 
+RP_LOG_BATCH_SIZE = int(
+    environ.get("RP_LOG_BATCH_SIZE") or from_conf("RP_LOG_BATCH_SIZE") or 20
+)
+
 JENKINS_USER = (
     environ.get('JENKINS_USER') or from_conf("JENKINS_USER")
 )