import logging import os from logging.handlers import RotatingFileHandler def log(log_file="zabbix.log", max_bytes=10 * 1024 * 1024, backup_count=5): """ 配置日志记录器,输出到/home/zabbix目录且不显示在控制台 参数: log_file: 日志文件名 (默认: zabbix.log) max_bytes: 单个日志文件最大字节 (默认: 10MB) backup_count: 保留的备份文件数 (默认: 5) """ # 创建日志目录 log_dir = "/home/zabbix" os.makedirs(log_dir, exist_ok=True) # 自动创建目录[1,4](@ref) # 完整的日志文件路径 log_path = os.path.join(log_dir, log_file) # 创建记录器 logger = logging.getLogger("ZabbixLogger") logger.setLevel(logging.DEBUG) # 设置最低日志级别 # 配置日志格式 formatter = logging.Formatter( '%(asctime)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # 创建文件处理器(带日志轮转功能)[1,3](@ref) file_handler = RotatingFileHandler( log_path, maxBytes=max_bytes, backupCount=backup_count, encoding='utf-8' ) file_handler.setFormatter(formatter) file_handler.setLevel(logging.INFO) # 文件日志级别 # 移除所有现有处理器(避免重复) if logger.hasHandlers(): logger.handlers.clear() # 添加文件处理器(不添加StreamHandler避免控制台输出)[6,8](@ref) logger.addHandler(file_handler) # 禁用向父logger传播(避免root logger输出到控制台)[9](@ref) logger.propagate = False return logger # 使用示例 if __name__ == "__main__": # 初始化日志记录器 zabbix_logger = setup_zabbix_logger() # 记录不同级别日志 zabbix_logger.debug("调试信息(不会出现在文件)") zabbix_logger.info("服务启动") zabbix_logger.warning("磁盘空间不足") zabbix_logger.error("数据库连接失败")