|
4 | 4 | import logging
|
5 | 5 | import logging.config
|
6 | 6 | import sys
|
| 7 | + |
7 | 8 | from . import language_server
|
8 | 9 | from .python_ls import PythonLanguageServer
|
9 | 10 |
|
@@ -47,22 +48,7 @@ def main():
|
47 | 48 | parser = argparse.ArgumentParser()
|
48 | 49 | add_arguments(parser)
|
49 | 50 | args = parser.parse_args()
|
50 |
| - |
51 |
| - if args.log_config: |
52 |
| - with open(args.log_config, 'r') as f: |
53 |
| - logging.config.dictConfig(json.load(f)) |
54 |
| - elif args.log_file: |
55 |
| - logging.basicConfig(filename=args.log_file, format=LOG_FORMAT) |
56 |
| - else: |
57 |
| - logging.basicConfig(format=LOG_FORMAT) |
58 |
| - |
59 |
| - if args.verbose == 0: |
60 |
| - level = logging.WARNING |
61 |
| - elif args.verbose == 1: |
62 |
| - level = logging.INFO |
63 |
| - elif args.verbose >= 2: |
64 |
| - level = logging.DEBUG |
65 |
| - logging.getLogger().setLevel(level) |
| 51 | + _configure_logger(args) |
66 | 52 |
|
67 | 53 | if args.tcp:
|
68 | 54 | language_server.start_tcp_lang_server(args.host, args.port, PythonLanguageServer)
|
@@ -95,3 +81,31 @@ def _binary_stdio():
|
95 | 81 | stdin, stdout = sys.stdin, sys.stdout
|
96 | 82 |
|
97 | 83 | return stdin, stdout
|
| 84 | + |
| 85 | + |
| 86 | +def _configure_logger(verbose=0, log_config=None, log_file=None): |
| 87 | + root_logger = logging.root |
| 88 | + |
| 89 | + if log_config: |
| 90 | + with open(log_config, 'r') as f: |
| 91 | + logging.config.dictConfig(json.load(f)) |
| 92 | + else: |
| 93 | + formatter = logging.Formatter(LOG_FORMAT) |
| 94 | + if log_file: |
| 95 | + log_handler = logging.handlers.RotatingFileHandler( |
| 96 | + log_file, mode='a', maxBytes=50*1024*1024, |
| 97 | + backupCount=10, encoding=None, delay=0 |
| 98 | + ) |
| 99 | + else: |
| 100 | + log_handler = logging.StreamHandler() |
| 101 | + log_handler.setFormatter(formatter) |
| 102 | + root_logger.addHandler(log_handler) |
| 103 | + |
| 104 | + if verbose == 0: |
| 105 | + level = logging.WARNING |
| 106 | + elif verbose == 1: |
| 107 | + level = logging.INFO |
| 108 | + elif verbose >= 2: |
| 109 | + level = logging.DEBUG |
| 110 | + |
| 111 | + root_logger.setLevel(level) |
0 commit comments