[AMBARI-23787] Log rotation for ambari metrics monitor log (#1204)

* AMBARI-23787 Log rotation for ambari metrics monitor log

* AMBARI-23787 log and out file config improvement
diff --git a/ambari-metrics-host-monitoring/src/main/python/amhm_service.py b/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
index a23226f..91ec81b 100644
--- a/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
+++ b/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
@@ -26,10 +26,10 @@
 from ambari_commons.exceptions import FatalException, NonFatalException
 from ambari_commons.logging_utils import print_warning_msg, print_error_msg
 from ambari_commons.os_windows import SvcStatusCallback
-from core.config_reader import SERVER_OUT_FILE, SERVICE_USERNAME_KEY, SERVICE_PASSWORD_KEY, \
+from core.config_reader import SERVICE_USERNAME_KEY, SERVICE_PASSWORD_KEY, \
   SETUP_ACTION, START_ACTION, STOP_ACTION, RESTART_ACTION, STATUS_ACTION
 from core.stop_handler import bind_signal_handlers, StopHandler
-from main import server_process_main
+from main import server_process_main, main_config
 
 
 #
@@ -64,7 +64,7 @@
     return init_options_parser()
 
   def redirect_output_streams(self):
-    self._RedirectOutputStreamsToFile(SERVER_OUT_FILE)
+    self._RedirectOutputStreamsToFile(main_config.ams_monitor_out_file())
     pass
 
 
diff --git a/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py b/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py
index 7cc9fb8..940d11c 100644
--- a/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py
+++ b/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py
@@ -83,10 +83,6 @@
 METRIC_FILE_PATH = configDefaults.get_metric_file_path()
 CA_CERTS_FILE_PATH = configDefaults.get_ca_certs_file_path()
 
-OUT_DIR = os.path.join(os.sep, "var", "log", "ambari-metrics-host-monitoring")
-SERVER_OUT_FILE = OUT_DIR + os.sep + "ambari-metrics-host-monitoring.out"
-SERVER_LOG_FILE = OUT_DIR + os.sep + "ambari-metrics-host-monitoring.log"
-
 PID_DIR = os.path.join(os.sep, "var", "run", "ambari-metrics-host-monitoring")
 PID_OUT_FILE = PID_DIR + os.sep + "ambari-metrics-host-monitoring.pid"
 EXITCODE_OUT_FILE = PID_DIR + os.sep + "ambari-metrics-host-monitoring.exitcode"
@@ -281,6 +277,18 @@
     hosts = self.get("aggregation", "ams_monitor_log_dir", "/var/log/ambari-metrics-monitor")
     return hosts
 
+  def ams_monitor_log_file(self):
+    """
+    :returns the log file
+    """
+    return self.ams_monitor_log_dir() + os.sep + "ambari-metrics-monitor.log"
+
+  def ams_monitor_out_file(self):
+    """
+    :returns the out file
+    """
+    return self.ams_monitor_log_dir() + os.sep + "ambari-metrics-monitor.out"
+
   def is_set_instanceid(self):
     return "true" == str(self.get("default", "set.instanceId", 'false')).lower()
 
diff --git a/ambari-metrics-host-monitoring/src/main/python/main.py b/ambari-metrics-host-monitoring/src/main/python/main.py
index 53d27f8..cab6a04 100644
--- a/ambari-metrics-host-monitoring/src/main/python/main.py
+++ b/ambari-metrics-host-monitoring/src/main/python/main.py
@@ -19,18 +19,20 @@
 '''
 
 import logging
+import logging.handlers
 import os
 import sys
 import signal
 from ambari_commons.os_utils import remove_file
 
 from core.controller import Controller
-from core.config_reader import Configuration, PID_OUT_FILE, SERVER_LOG_FILE, SERVER_OUT_FILE
+from core.config_reader import Configuration, PID_OUT_FILE
 from core.stop_handler import bind_signal_handlers
 
 
 logger = logging.getLogger()
 
+main_config = Configuration()
 
 def save_pid(pid, pidfile):
   """
@@ -58,15 +60,14 @@
   if scmStatus is not None:
     scmStatus.reportStartPending()
 
-  config = Configuration()
-  _init_logging(config)
-  controller = Controller(config, stop_handler)
+  _init_logging(main_config)
+  controller = Controller(main_config, stop_handler)
 
   logger.info('Starting Server RPC Thread: %s' % ' '.join(sys.argv))
   controller.start()
 
-  print "Server out at: " + SERVER_OUT_FILE
-  print "Server log at: " + SERVER_LOG_FILE
+  print "Server out at: " + main_config.ams_monitor_out_file()
+  print "Server log at: " + main_config.ams_monitor_log_file()
 
   save_pid(os.getpid(), PID_OUT_FILE)
 
@@ -97,9 +98,9 @@
     level = _levels.get(config.get_log_level())
   logger.setLevel(level)
   formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s")
-  stream_handler = logging.StreamHandler()
-  stream_handler.setFormatter(formatter)
-  logger.addHandler(stream_handler)
+  rotateLog = logging.handlers.RotatingFileHandler(config.ams_monitor_log_file(), "a", 10000000, 25)
+  rotateLog.setFormatter(formatter)
+  logger.addHandler(rotateLog)
   
 
 if __name__ == '__main__':