1# 2# config.py 3# 4# Default config values and basic wrapper for ConfigParser. New config options 5# should be added to the dictionary below, along with appropriate defaults. 6# 7# Runtime configuration is done through /etc/logparse/logparse.conf (default) 8# or the path specified in the "--config" argument. The file uses the INI 9# syntax, with general options being declared in the [logparse] section and 10# parser-specific options declared in their own sections. 11# 12 13from configparser import ConfigParser 14from pkg_resources import Requirement, resource_filename 15 16import logparse 17import logging 18logger = logging.getLogger(__name__) 19 20global prefs 21prefs =None 22 23defaults = { 24'logparse': { 25'output':'', 26'overwrite':False, 27'title': logparse.__name__, 28'maxlist':10, 29'maxcmd':6, 30'resolve-domains':'fqdn', 31'rotate':False, 32'verbose':False, 33'quiet':False, 34'hostname-path':'/etc/hostname', 35'parsers':'', 36'ignore-parsers':'' 37}, 38'html': { 39'header':'/etc/logparse/header.html', 40'css':'/etc/logparse/main.css', 41'embed-styles':False, 42'css-relpath':True 43}, 44'plain': { 45'plain':False, 46'linewidth':80 47}, 48'logs': { 49'auth':'/var/log/auth.log', 50'cron':'/var/log/cron.log', 51'cpuinfo':'/proc/cpuinfo', 52'meminfo':'/proc/meminfo', 53'sys':'/var/log/syslog', 54'smbd':'/var/log/samba', 55'zfs':'/var/log/zpool.log', 56'alloc':'/var/log/du.log', 57'postfix':'/var/log/mail.log', 58'httpd-access':'/var/log/apache2/access.log', 59'httpd-error':'/var/log/apache2/error.log' 60}, 61'mail': { 62'to':'', 63'from':'', 64'subject':'logparse from $hostname', 65'mailbin':'/usr/bin/mail' 66}, 67'temperatures': { 68'drives': ['/dev/sda'], 69'host':'127.0.0.1', 70'separator':'|', 71'timeout':10, 72'port':7634, 73'show-model':False, 74}, 75'sshd': { 76'sshd-resolve-domains':'' 77}, 78'smbd': { 79'smbd-resolve-domains':'' 80}, 81'httpd': { 82'httpd-resolve-domains':'' 83}, 84'du': { 85'paths': ['/','/etc','/home'], 86'force-write':False 87} 88} 89 90deflocate(filename): 91""" 92 DEPRECATED: draft method for what is now parsers/load_parsers.py. Kept here 93 for historical purposes. 94 """ 95 logger.debug("Searching for{0}".format(filename)) 96 loc =resource_filename(Requirement.parse(__package__), filename) 97 logger.debug("Found{0}".format(loc)) 98return loc 99 100defloadconf(configpaths): 101""" 102 Initial setup for a ConfigParser object. `configpaths` should be a list of 103 configuration files to load (typically only one). To use the generated 104 ConfigParser, use `import logparse.config` and then `config.prefs.get(..)`. 105 The prefs object is returned after creation as a convenience but this method 106 should only be called once per runtime. 107 """ 108 prefs=ConfigParser() 109 prefs.read_dict(defaults) 110try: 111 success = prefs.read(configpaths) 112 logger.debug("Loaded{0}config file(s):{1}".format(str(len(success)),str(success))) 113exceptExceptionas e: 114 logger.warning("Error processing config: "+str(e)) 115return prefs