Python记录日志——在终端输出并保存到本地文件

本文介绍了一个Python脚本,该脚本用于初始化日志模块并设置日志记录的基本配置。通过使用logging模块,可以方便地记录不同级别的日志信息,并且支持文件输出和控制台输出两种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import logging
def initLogging(logFilename):
  """Init for logging
  """
  logging.basicConfig(
                    level    = logging.DEBUG,
                    format='%(asctime)s-%(levelname)s-%(message)s',
                    datefmt  = '%y-%m-%d %H:%M',
                    filename = logFilename,
                    filemode = 'w');
  console = logging.StreamHandler()
  console.setLevel(logging.INFO)
  formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(message)s')
  console.setFormatter(formatter)
  logging.getLogger('').addHandler(console)

initLogging('test.log')
logging.info('just play')
### 如何在 Linux 中将日志重定向到特定文件 在 Linux 系统中,可以通过多种方式实现将日志或其他输出信息重定向到特定文件的功能。以下是几种常见的方法及其具体操作: #### 方法一:使用 Shell 的标准输出和错误流重定向 通过简单的命令可以将程序的标准输出(stdout)以及错误输出(stderr)重定向至目标文件。例如,在编译过程中捕获所有的输出信息将其存储在一个文件中[^5]。 ```bash gcc file1.c > output.log 2>&1 ``` 此命令的作用是将 `gcc` 编译器运行时产生的所有正常输出和错误消息都记录到名为 `output.log` 的文件中。其中: - `>` 表示将标准输出重定向到指定文件; - `2>&1` 则表示将错误输出也合到标准输出中。 #### 方法二:利用 tee 命令同时打印屏幕与保存日志 如果希望既能在终端显示实时反馈又能够同步保留一份副本,则可采用 `tee` 工具来完成这一需求[^4]。 ```bash dmesg | tee system_log.txt ``` 这里展示了如何把内核缓冲区的消息传递给 `system_log.txt` 同时还在当前会话窗口呈现出来。 #### 方法三:配置 syslog 或 rsyslog 来管理服务日志 对于更复杂的场景比如长期监控或者跨设备传输数据而言,设置专门的日志管理系统如 Syslog 是更好的解决方案之一。它允许定义不同的设施类别(facility),优先级(level)等参数从而精确控制哪些类型的事件应该被记录下来且存放到哪里去[^1]。 假设要创建一个新的应用程序专用日志文件 `/var/log/myapp.log` ,可以在 `/etc/rsyslog.conf` 添加如下行: ```plaintext local0.* /var/log/myapp.log ``` 接着重启 Rsyslog 服务使更改生效: ```bash sudo systemctl restart rsyslog ``` 最后确保您的应用发送适当标记的日志条目, 使用 logger 实用程序测试一下: ```bash logger -p local0.info "This is a test message from my app" ``` 以上三种途径分别适用于不同层次的需求——从小型脚本调试直至企业级大规模部署均可找到合适的方案加以运用。 ```python import subprocess def run_command_and_save_output(command, log_file_path): result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) with open(log_file_path, 'wb') as f: f.write(result.stdout) run_command_and_save_output('ls -la', '/tmp/command_output.log') ``` 上述 Python 脚本片段演示了另一种自动化处理的方式,即调用外部命令将结果写入本地磁盘上的某个路径下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值