阅读量:2
在Ubuntu上配置Python日志系统主要有以下两种方式:
一、使用Python内置logging模块
1. 基础配置(推荐)
通过logging.basicConfig()快速配置,适合简单场景:
import logging
logging.basicConfig(
level=logging.INFO, # 日志级别
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', # 日志格式
filename='app.log', # 日志文件路径
filemode='a' # 追加模式
)
logger = logging.getLogger(__name__)
logger.info('这是一条普通信息') # 记录日志
2. 配置文件方式(灵活)
通过INI格式配置文件(如logging.conf)实现复杂需求:
- 创建配置文件(示例):
[loggers] keys=root [handlers] keys=consoleHandler,fileHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=consoleHandler,fileHandler [handler_consoleHandler] class=StreamHandler level=DEBUG formatter=simpleFormatter args=(sys.stdout,) [handler_fileHandler] class=FileHandler level=DEBUG formatter=simpleFormatter args=('app.log', 'a') [formatter_simpleFormatter] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s datefmt=%Y-%m-%d %H:%M:%S - 加载配置:
import logging.config logging.config.fileConfig('logging.conf') logger = logging.getLogger(__name__) logger.debug('调试信息') # 会同时输出到控制台和文件
3. 多处理器配置
可同时输出到控制台和文件,且设置不同日志级别:
import logging
# 创建日志记录器
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# 控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_formatter = logging.Formatter('%(levelname)s - %(message)s')
console_handler.setFormatter(console_formatter)
logger.addHandler(console_handler)
# 文件处理器
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_formatter)
logger.addHandler(file_handler)
logger.info('信息会同时输出到控制台和文件')
logger.debug('仅输出到文件')
二、结合系统工具管理日志
1. 使用logrotate轮转日志
避免日志文件过大,安装并配置logrotate:
sudo apt update
sudo apt install logrotate
- 创建配置文件(如
/etc/logrotate.d/python_app):/var/log/python_app/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 root root postrotate # 可选:重启服务(需根据实际服务调整) # /bin/kill -HUP $(cat /var/run/python_app.pid 2>/dev/null) 2>/dev/null || true endscript } - 手动测试:
sudo logrotate -vf /etc/logrotate.d/python_app
三、进阶方案(ELK Stack)
适合大规模日志分析,需安装Elasticsearch、Logstash、Kibana,配置略复杂,可参考官方文档。
注意事项
- 配置文件路径需根据实际项目调整,建议放在项目根目录或
/etc下。 - 生产环境中建议使用
fileConfig或dictConfig,避免硬编码日志路径和级别。 - 若需记录中文,需在文件处理器中指定
encoding='utf-8'。
以上配置可根据项目需求选择,基础场景推荐basicConfig,复杂场景优先使用配置文件方式。
以上就是关于“Ubuntu如何配置Python的日志系统”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm