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")
 )
