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__':
