首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >脚本日志记录问题:脚本日志记录不完整,难以诊断问题

脚本日志记录问题:脚本日志记录不完整,难以诊断问题

原创
作者头像
是山河呀
发布2025-02-07 11:56:42
发布2025-02-07 11:56:42
3160
举报
文章被收录于专栏:linux运维linux运维
1. 统一日志输出方式

为了避免日志丢失或分散,建议将所有日志输出到一个文件中,同时捕获标准输出和标准错误流。

Bash 示例:

代码语言:javascript
复制
#!/bin/bash
 
# 将 stdout 和 stderr 同时重定向到日志文件
exec > >(tee -a script.log)  2>&1 
 
# 脚本逻辑
echo "脚本开始运行"
ls /nonexistent_directory 

2. 增加详细的日志记录

在脚本的关键步骤中增加日志记录,确保每一步的操作都能被追踪。

Python 示例:

代码语言:javascript
复制
import logging
 
# 配置日志
logging.basicConfig( 
    filename='script.log', 
    level=logging.DEBUG,
    format='%(asctime)s - %(levelname)s - %(message)s'
)
 
# 示例日志记录
logging.info(" 脚本开始运行")
logging.debug(" 变量 x 的值为 10")
 
try:
    # 模拟可能出错的操作
    with open('nonexistent_file.txt',  'r') as f:
        data = f.read() 
except Exception as e:
    logging.error(f" 发生异常: {e}", exc_info=True)

3. 捕获异常并记录

确保脚本在出现异常时不会直接退出,而是捕获异常并记录详细信息。

Bash 示例:

代码语言:javascript
复制
#!/bin/bash
 
# 设置 trap 捕获错误
trap 'echo "Error occurred at line $LINENO" >> error.log'  ERR 
 
# 脚本逻辑
echo "脚本开始运行"
ls /nonexistent_directory 

Python 示例:

代码语言:javascript
复制
try:
    # 可能出错的代码
    risky_operation()
except Exception as e:
    logging.error(f" 发生异常: {e}", exc_info=True)

4. 使用日志轮转工具

如果日志文件过大导致丢失或难以管理,可以使用 logrotate 定期归档和清理日志。

Logrotate 配置示例:

代码语言:javascript
复制
# /etc/logrotate.d/your_script
/path/to/script.log  {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

5. 检查系统资源限制

日志记录不完整可能与系统资源限制有关。以下是检查和调整资源限制的方法。

检查磁盘空间:

代码语言:javascript
复制
df -h

检查文件描述符限制:

代码语言:javascript
复制
ulimit -n

临时调整文件描述符限制:

代码语言:javascript
复制
ulimit -n 65535

6. 监控脚本运行状态

结合 systemdcron 确保脚本持续运行,并在异常退出时触发告警。

Systemd 服务文件示例:

代码语言:javascript
复制
[Unit]
Description=Your Script Service
After=network.target 
 
[Service]
ExecStart=/path/to/your_script.sh  
Restart=always 
StandardOutput=append:/var/log/your_script.log  
StandardError=append:/var/log/your_script_error.log 
 
[Install]
WantedBy=multi-user.target  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 统一日志输出方式
  • 2. 增加详细的日志记录
  • 3. 捕获异常并记录
  • 4. 使用日志轮转工具
  • 5. 检查系统资源限制
  • 6. 监控脚本运行状态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档