mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 18:27:51 +00:00
Add option to rotate log file daily.
Adds a command line option to rotate the log daily at midnight and retain up to the specified amount of days.
This commit is contained in:
parent
6519e589b5
commit
2e636f598e
@ -90,6 +90,11 @@ def get_arguments():
|
|||||||
metavar='path_to_pid_file',
|
metavar='path_to_pid_file',
|
||||||
default=None,
|
default=None,
|
||||||
help='Path to PID file useful for running as daemon')
|
help='Path to PID file useful for running as daemon')
|
||||||
|
parser.add_argument(
|
||||||
|
'--log-rotate-days',
|
||||||
|
type=int,
|
||||||
|
default=None,
|
||||||
|
help='Enables daily log rotation and keeps up to the specified days')
|
||||||
if os.name != "nt":
|
if os.name != "nt":
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--daemon',
|
'--daemon',
|
||||||
@ -171,13 +176,14 @@ def main():
|
|||||||
}
|
}
|
||||||
hass = bootstrap.from_config_dict(
|
hass = bootstrap.from_config_dict(
|
||||||
config, config_dir=config_dir, daemon=args.daemon,
|
config, config_dir=config_dir, daemon=args.daemon,
|
||||||
verbose=args.verbose, skip_pip=args.skip_pip)
|
verbose=args.verbose, skip_pip=args.skip_pip,
|
||||||
|
log_rotate_days=args.log_rotate_days)
|
||||||
else:
|
else:
|
||||||
config_file = ensure_config_file(config_dir)
|
config_file = ensure_config_file(config_dir)
|
||||||
print('Config directory:', config_dir)
|
print('Config directory:', config_dir)
|
||||||
hass = bootstrap.from_config_file(
|
hass = bootstrap.from_config_file(
|
||||||
config_file, daemon=args.daemon, verbose=args.verbose,
|
config_file, daemon=args.daemon, verbose=args.verbose,
|
||||||
skip_pip=args.skip_pip)
|
skip_pip=args.skip_pip, log_rotate_days=args.log_rotate_days)
|
||||||
|
|
||||||
if args.open_ui:
|
if args.open_ui:
|
||||||
def open_browser(event):
|
def open_browser(event):
|
||||||
|
@ -12,6 +12,7 @@ start by calling homeassistant.start_home_assistant(bus)
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
import logging.handlers
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
import homeassistant.core as core
|
import homeassistant.core as core
|
||||||
@ -151,7 +152,8 @@ def mount_local_lib_path(config_dir):
|
|||||||
|
|
||||||
# pylint: disable=too-many-branches, too-many-statements, too-many-arguments
|
# pylint: disable=too-many-branches, too-many-statements, too-many-arguments
|
||||||
def from_config_dict(config, hass=None, config_dir=None, enable_log=True,
|
def from_config_dict(config, hass=None, config_dir=None, enable_log=True,
|
||||||
verbose=False, daemon=False, skip_pip=False):
|
verbose=False, daemon=False, skip_pip=False,
|
||||||
|
log_rotate_days=None):
|
||||||
"""
|
"""
|
||||||
Tries to configure Home Assistant from a config dict.
|
Tries to configure Home Assistant from a config dict.
|
||||||
|
|
||||||
@ -167,7 +169,7 @@ def from_config_dict(config, hass=None, config_dir=None, enable_log=True,
|
|||||||
process_ha_core_config(hass, config.get(core.DOMAIN, {}))
|
process_ha_core_config(hass, config.get(core.DOMAIN, {}))
|
||||||
|
|
||||||
if enable_log:
|
if enable_log:
|
||||||
enable_logging(hass, verbose, daemon)
|
enable_logging(hass, verbose, daemon, log_rotate_days)
|
||||||
|
|
||||||
hass.config.skip_pip = skip_pip
|
hass.config.skip_pip = skip_pip
|
||||||
if skip_pip:
|
if skip_pip:
|
||||||
@ -202,7 +204,7 @@ def from_config_dict(config, hass=None, config_dir=None, enable_log=True,
|
|||||||
|
|
||||||
|
|
||||||
def from_config_file(config_path, hass=None, verbose=False, daemon=False,
|
def from_config_file(config_path, hass=None, verbose=False, daemon=False,
|
||||||
skip_pip=True):
|
skip_pip=True, log_rotate_days=None):
|
||||||
"""
|
"""
|
||||||
Reads the configuration file and tries to start all the required
|
Reads the configuration file and tries to start all the required
|
||||||
functionality. Will add functionality to 'hass' parameter if given,
|
functionality. Will add functionality to 'hass' parameter if given,
|
||||||
@ -216,7 +218,7 @@ def from_config_file(config_path, hass=None, verbose=False, daemon=False,
|
|||||||
hass.config.config_dir = config_dir
|
hass.config.config_dir = config_dir
|
||||||
mount_local_lib_path(config_dir)
|
mount_local_lib_path(config_dir)
|
||||||
|
|
||||||
enable_logging(hass, verbose, daemon)
|
enable_logging(hass, verbose, daemon, log_rotate_days)
|
||||||
|
|
||||||
config_dict = config_util.load_config_file(config_path)
|
config_dict = config_util.load_config_file(config_path)
|
||||||
|
|
||||||
@ -224,7 +226,7 @@ def from_config_file(config_path, hass=None, verbose=False, daemon=False,
|
|||||||
skip_pip=skip_pip)
|
skip_pip=skip_pip)
|
||||||
|
|
||||||
|
|
||||||
def enable_logging(hass, verbose=False, daemon=False):
|
def enable_logging(hass, verbose=False, daemon=False, log_rotate_days=None):
|
||||||
""" Setup the logging for home assistant. """
|
""" Setup the logging for home assistant. """
|
||||||
if not daemon:
|
if not daemon:
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
@ -257,8 +259,12 @@ def enable_logging(hass, verbose=False, daemon=False):
|
|||||||
if (err_path_exists and os.access(err_log_path, os.W_OK)) or \
|
if (err_path_exists and os.access(err_log_path, os.W_OK)) or \
|
||||||
(not err_path_exists and os.access(hass.config.config_dir, os.W_OK)):
|
(not err_path_exists and os.access(hass.config.config_dir, os.W_OK)):
|
||||||
|
|
||||||
err_handler = logging.FileHandler(
|
if log_rotate_days:
|
||||||
err_log_path, mode='w', delay=True)
|
err_handler = logging.handlers.TimedRotatingFileHandler(
|
||||||
|
err_log_path, when='midnight', backupCount=log_rotate_days)
|
||||||
|
else:
|
||||||
|
err_handler = logging.FileHandler(
|
||||||
|
err_log_path, mode='w', delay=True)
|
||||||
|
|
||||||
err_handler.setLevel(logging.INFO if verbose else logging.WARNING)
|
err_handler.setLevel(logging.INFO if verbose else logging.WARNING)
|
||||||
err_handler.setFormatter(
|
err_handler.setFormatter(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user