|
13 | 13 | from codebasin import CodeBase, config, finder, report, util
|
14 | 14 | from codebasin.walkers.platform_mapper import PlatformMapper
|
15 | 15 |
|
| 16 | +log = logging.getLogger("codebasin") |
16 | 17 | version = "1.2.0"
|
17 | 18 |
|
18 | 19 |
|
@@ -144,12 +145,28 @@ def main():
|
144 | 145 |
|
145 | 146 | args = parser.parse_args()
|
146 | 147 |
|
147 |
| - stdout_log = logging.StreamHandler(sys.stdout) |
148 |
| - stdout_log.setFormatter(logging.Formatter("[%(levelname)-8s] %(message)s")) |
149 |
| - logging.getLogger("codebasin").addHandler(stdout_log) |
150 |
| - logging.getLogger("codebasin").setLevel( |
151 |
| - max(1, logging.WARNING - 10 * (args.verbose - args.quiet)), |
152 |
| - ) |
| 148 | + # Configure logging such that: |
| 149 | + # - All messages are written to a log file |
| 150 | + # - Only errors are written to the terminal by default |
| 151 | + # - Messages written to terminal are based on -q and -v flags |
| 152 | + formatter = logging.Formatter("[%(levelname)-8s] %(message)s") |
| 153 | + log.setLevel(logging.DEBUG) |
| 154 | + |
| 155 | + file_handler = logging.FileHandler("cbi.log", mode="w") |
| 156 | + file_handler.setLevel(logging.INFO) |
| 157 | + file_handler.setFormatter(formatter) |
| 158 | + log.addHandler(file_handler) |
| 159 | + |
| 160 | + # Inform the user that a log file has been created. |
| 161 | + # 'print' instead of 'log' to ensure the message is visible in the output. |
| 162 | + log_path = os.path.abspath("cbi.log") |
| 163 | + print(f"Log file created at {log_path}") |
| 164 | + |
| 165 | + log_level = max(1, logging.ERROR - 10 * (args.verbose - args.quiet)) |
| 166 | + stdout_handler = logging.StreamHandler(sys.stdout) |
| 167 | + stdout_handler.setLevel(log_level) |
| 168 | + stdout_handler.setFormatter(formatter) |
| 169 | + log.addHandler(stdout_handler) |
153 | 170 |
|
154 | 171 | # If no specific report was specified, generate all reports.
|
155 | 172 | # Handled here to prevent "all" always being in the list.
|
@@ -243,5 +260,5 @@ def report_enabled(name):
|
243 | 260 | sys.argv[0] = "codebasin"
|
244 | 261 | main()
|
245 | 262 | except Exception as e:
|
246 |
| - logging.getLogger("codebasin").error(str(e)) |
| 263 | + log.error(str(e)) |
247 | 264 | sys.exit(1)
|
0 commit comments