| 17 logfmt="%(asctime)s:%(levelname)s:%(name)s:%(message)s" |
20 logfmt="%(asctime)s:%(levelname)s:%(name)s:%(message)s" |
| 18 fifolog_capacity=1000 |
21 fifolog_capacity=1000 |
| 19 fifolog_fmt="%(asctime)s:%(levelname)s:%(message)s" |
22 fifolog_fmt="%(asctime)s:%(levelname)s:%(message)s" |
| 20 |
23 |
| 21 # |
24 # |
| 22 # Setup logger |
25 # Setup logger, needed by the config module to be loaded next |
| 23 # |
26 # |
| 24 |
27 |
| 25 logger=logging.getLogger(appname) |
28 logger=logging.getLogger(appname) |
| 26 logger.setLevel(loglevel) |
29 logger.setLevel(loglevel) |
| 27 logger.propagate=True |
30 logger.propagate=True |
| |
31 |
| |
32 # |
| |
33 # Argument processing |
| |
34 # |
| |
35 |
| |
36 import config |
| |
37 |
| |
38 def do_args(): |
| |
39 parser=argparse.ArgumentParser( |
| |
40 description=appname_stylised + ': BorgBackup scheduler and tray icon.', |
| |
41 epilog='Configuration file location:\n\n %s\n ' % config.cfgfile, |
| |
42 formatter_class=argparse.RawDescriptionHelpFormatter) |
| |
43 |
| |
44 parser.add_argument( |
| |
45 '--no-tray', |
| |
46 dest='notray', |
| |
47 action='store_true', |
| |
48 help='Do not show the tray icon') |
| |
49 |
| |
50 return parser.parse_args() |
| |
51 |
| |
52 # |
| |
53 # Main routine |
| |
54 # |
| |
55 |
| |
56 # First, setup our own logging handlers |
| 28 fifolog=FIFOHandler(fifolog_capacity) |
57 fifolog=FIFOHandler(fifolog_capacity) |
| 29 logger.addHandler(fifolog) |
58 logger.addHandler(fifolog) |
| 30 fifolog.setFormatter(logging.Formatter(fifolog_fmt)) |
59 fifolog.setFormatter(logging.Formatter(fifolog_fmt)) |
| 31 |
60 |
| 32 if __name__=="__main__": |
61 if __name__=="__main__": |
| |
62 # Parse args. Let argparse handle errors/exit if there are any |
| |
63 args= do_args() |
| 33 |
64 |
| 34 try: |
65 try: |
| 35 import logging.handlers |
66 args=do_args() |
| 36 import os |
|
| 37 import config |
|
| 38 |
67 |
| 39 if not os.path.isdir(config.logs_dir): |
68 if not os.path.isdir(config.logs_dir): |
| 40 os.makedirs(config.logs_dir) |
69 os.makedirs(config.logs_dir) |
| 41 |
70 |
| 42 handler=logging.handlers.TimedRotatingFileHandler( |
71 handler=logging.handlers.TimedRotatingFileHandler( |
| 46 logger.addHandler(handler) |
75 logger.addHandler(handler) |
| 47 |
76 |
| 48 from threading import Thread |
77 from threading import Thread |
| 49 from backup import Backup |
78 from backup import Backup |
| 50 from queue import Queue |
79 from queue import Queue |
| 51 from ui import BorgendTray |
|
| 52 import signal, os |
80 import signal, os |
| 53 |
81 |
| 54 backupconfigs=config.settings['backups'] |
82 backupconfigs=config.settings['backups'] |
| 55 backups=[None]*len(backupconfigs); |
83 backups=[None]*len(backupconfigs); |
| 56 |
84 |
| 57 for i in range(len(backupconfigs)): |
85 for i in range(len(backupconfigs)): |
| 58 logger.info('Setting up backup set %d' % i) |
86 logger.info('Setting up backup set %d' % i) |
| 59 backups[i]=Backup(i, backupconfigs[i]) |
87 backups[i]=Backup(i, backupconfigs[i]) |
| 60 backups[i].schedule() |
88 backups[i].schedule() |
| 61 |
89 |
| 62 tray=BorgendTray(backups); |
90 if args.notray: |
| 63 tray.run() |
91 pass |
| |
92 else: |
| |
93 from ui import BorgendTray |
| |
94 tray=BorgendTray(backups); |
| |
95 tray.run() |
| |
96 |
| 64 except Exception as err: |
97 except Exception as err: |
| 65 utils.log_exception(logger, err, detail='Exiting') |
98 utils.log_exception(logger, err, detail='Exiting') |
| 66 logging.shutdown() |
99 logging.shutdown() |
| 67 |
100 |
| 68 # |
101 # |