8d1b21eb2065e1fe5bcedbb073c7c37bb3ebf9a0
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
90def locate(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))
98 return loc
99
100def loadconf(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)
110 try:
111 success = prefs.read(configpaths)
112 logger.debug("Loaded {0} config file(s): {1}".format(str(len(success)), str(success)))
113 except Exception as e:
114 logger.warning("Error processing config: " + str(e))
115 return prefs