|
26 | 26 | from javsp.cropper import Cropper, get_cropper |
27 | 27 |
|
28 | 28 |
|
29 | | -# 将StreamHandler的stream修改为TqdmOut,以与Tqdm协同工作 |
30 | | -root_logger = logging.getLogger() |
31 | | -for handler in root_logger.handlers: |
32 | | - if type(handler) == logging.StreamHandler: |
33 | | - handler.stream = TqdmOut |
| 29 | +def setup_logging(): |
| 30 | + """配置日志系统,同时输出到控制台和文件""" |
| 31 | + from javsp.lib import resource_path |
| 32 | + |
| 33 | + # 清除现有的handlers,避免重复 |
| 34 | + root_logger = logging.getLogger() |
| 35 | + root_logger.handlers.clear() |
| 36 | + |
| 37 | + # 设置日志级别 |
| 38 | + root_logger.setLevel(logging.INFO) |
| 39 | + |
| 40 | + # 创建日志格式 |
| 41 | + formatter = logging.Formatter( |
| 42 | + '%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
| 43 | + datefmt='%Y-%m-%d %H:%M:%S' |
| 44 | + ) |
| 45 | + |
| 46 | + # 配置控制台输出(重定向到TqdmOut) |
| 47 | + console_handler = logging.StreamHandler(TqdmOut) |
| 48 | + console_handler.setLevel(logging.INFO) # 控制台只显示INFO及以上级别 |
| 49 | + console_handler.setFormatter(formatter) |
| 50 | + root_logger.addHandler(console_handler) |
| 51 | + |
| 52 | + # 配置文件输出到JavSP.log |
| 53 | + log_file = os.path.join(resource_path('.'), 'JavSP.log') |
| 54 | + file_handler = logging.FileHandler(log_file, encoding='utf-8') |
| 55 | + file_handler.setLevel(logging.DEBUG) # 文件记录DEBUG及以上所有级别 |
| 56 | + file_handler.setFormatter(formatter) |
| 57 | + root_logger.addHandler(file_handler) |
| 58 | + |
| 59 | + # 为filemove logger配置独立的文件处理器 |
| 60 | + filemove_handler = logging.FileHandler( |
| 61 | + os.path.join(resource_path('.'), 'FileMove.log'), |
| 62 | + encoding='utf-8' |
| 63 | + ) |
| 64 | + filemove_handler.setLevel(logging.DEBUG) |
| 65 | + filemove_handler.setFormatter(formatter) |
| 66 | + |
| 67 | + filemove_logger = logging.getLogger('filemove') |
| 68 | + filemove_logger.addHandler(filemove_handler) |
| 69 | + filemove_logger.setLevel(logging.DEBUG) |
| 70 | + # 防止日志向上传播到root logger造成重复 |
| 71 | + filemove_logger.propagate = False |
| 72 | + |
| 73 | + print(f"日志配置完成: 控制台输出 + 文件输出到 {log_file}") |
| 74 | + |
| 75 | +# 设置日志系统 |
| 76 | +setup_logging() |
34 | 77 |
|
| 78 | +# 获取主logger |
35 | 79 | logger = logging.getLogger('main') |
36 | 80 |
|
37 | 81 |
|
|
45 | 89 | from javsp.web.exceptions import * |
46 | 90 | from javsp.web.translate import translate_movie_info |
47 | 91 |
|
48 | | -from javsp.config import Cfg, CrawlerID |
| 92 | +from javsp.config import Cfg, CrawlerID, UseJavDBCover |
49 | 93 | from javsp.prompt import prompt |
50 | 94 |
|
51 | 95 | actressAliasMap = {} |
@@ -523,9 +567,9 @@ def check_step(result, msg='步骤错误'): |
523 | 567 | if movie != all_movies[-1] and Cfg().crawler.sleep_after_scraping > Duration(0): |
524 | 568 | time.sleep(Cfg().crawler.sleep_after_scraping.total_seconds()) |
525 | 569 | return_movies.append(movie) |
526 | | - # except Exception as e: |
527 | | - # logger.debug(e, exc_info=True) |
528 | | - # logger.error(f'整理失败: {e}') |
| 570 | + except Exception as e: |
| 571 | + # logger.debug(e, exc_info=True) |
| 572 | + logger.error(f'整理失败: {e}') |
529 | 573 | finally: |
530 | 574 | inner_bar.close() |
531 | 575 | return return_movies |
|
0 commit comments