在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,复杂场景优先使用配置文件方式。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1394941.html