软编码
logging.basicConfig() 只读取一次配置
from logging.config import fileConfig
from app_manager.service.reuse import get_home import os if __name__ == '__main__': if os.path.exists(os.path.join(get_home(), 'logging.ini')): fileConfig(os.path.join(get_home(), 'logging.ini'))
[loggers] keys=root [handlers] keys=defaultHandler [formatters] keys=defaultFormatter [logger_root] level=ERROR handlers=defaultHandler qualname=root [handler_defaultHandler] class=FileHandler formatter=defaultFormatter args=('error.log', 'a') [formatter_defaultFormatter] format=%(asctime)s--文件:%(filename)s--方法:%(funcName)s--行号:%(lineno)s--%(message)s
硬编码
logger.py 文件
- #!/usr/bin/python
- # coding: utf-8
- import logging
- import logging.handlers
- from logging import *
- from datetime import *
- logger = logging.getLogger()
- logger.setLevel(logging.DEBUG)
- rht = logging.handlers.TimedRotatingFileHandler("reindex_out.log", 'D')
- fmt = logging.Formatter("%(asctime)s %(pathname)s %(filename)s %(funcName)s %(lineno)s \
- %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S")
- rht.setFormatter(fmt)
- logger.addHandler(rht)
- debug = logger.debug
- info = logger.info
- warning = logger.warn
- error = logger.error
- critical = logger.critical
测试脚本
- #!/usr/bin/env python
- # coding utf-8
- from logger import *
- import sys
- import os
- info("log from logger info")
- debug("this is from test.py")
- print 'current dir is ' + os.getcwd()
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
- %(levelno)s: 打印日志级别的数值
- %(levelname)s: 打印日志级别名称
- %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
- %(filename)s: 打印当前执行程序名
- %(funcName)s: 打印日志的当前函数
- %(lineno)d: 打印日志的当前行号
- %(asctime)s: 打印日志的时间
- %(thread)d: 打印线程ID
- %(threadName)s: 打印线程名称
- %(process)d: 打印进程ID
- %(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
CRITICAL | 50 |
ERROR | 40 |
WARNING | 30 |
INFO | 20 |
DEBUG | 10 |
NOTSET | 0 |
可以给日志对象(Logger Instance)设置日志级别,低于该级别的日志消息将会被忽略,也可以给Hanlder设置日志级别,对于低于该级别的日志消息, Handler也会忽略。
相关推荐
2. **参数化配置**:为了提高代码的可维护性和灵活性,可以考虑将硬编码的路径、起始坐标等作为参数传入,这样更方便调整。 3. **多线程/多进程处理**:如果需要处理大量图片,可以考虑使用多线程或多进程技术来加速...
在函数传递中,我们可以定义一个函数,然后在另一个函数内部使用它,而不是硬编码具体的计算逻辑。这种技术通常在函数式编程中非常常见,它可以减少代码重复,提高代码的可复用性和可读性。下面我们将深入探讨这个...
03 文件归档与两种压缩方式 04 vim编辑器 05 系统启动流程 06 grub加密 07 bios加密 08 top命令 09 free命令 10 进程管理 第6章 01 上节课复习 02 磁盘分区 03 文件系统与挂载 04 挂载信息讲解 05 磁盘用满的两种...
这在模板中尤其有用,可以避免硬编码URL,提高代码可维护性。 3. **命名URL**:为了方便反向解析和代码阅读,推荐为每个URL模式指定一个唯一的名称。 **二、视图** 1. **视图函数**:视图是处理HTTP请求并返回...
此外,出于安全考虑,建议不要将真实的用户名和密码直接硬编码到配置文件中,而是使用环境变量或其他更安全的方式来管理敏感信息。 #### 五、总结 本文详细介绍了如何使用Python进行API自动化测试,并给出了具体的...
- **日志输出**:通过文件和控制台两种方式输出日志信息,确保程序运行状态得到充分监控。 ##### 3. 爬虫核心模块 (`BaseTySpider` 类) - **类定义**:`class BaseTySpider:` 是爬虫的核心类,负责执行具体的爬虫...
通过这种方式,我们可以将复杂的配置参数存储在JSON文件中,使得脚本更易于维护,同时避免了硬编码参数。此外,docopt还支持更多的命令行选项和参数,如短选项、长选项、默认值等,这使得它成为一个非常灵活和强大的...
关键词方式和PO(Page Object)模型是Selenium测试中的两种常见设计模式。关键词方式提倡将测试步骤抽象为独立的函数或方法,使得测试代码更易于理解和维护。而PO模型是一种最佳实践,它将网页的每个界面元素封装成...
在IT行业中,配置管理和日志记录是至关重要的两个方面,特别是在使用编程语言如Python进行软件开发时。"config_and_logging"这个主题涵盖了如何在Python应用中有效地管理配置以及记录和处理日志信息。 配置管理: ...
依赖注入(Dependency Injection, DI)是一种设计模式,它允许代码在运行时动态地获取依赖关系,而不是在代码内部硬编码这些依赖。通过这种方式,我们可以更容易地替换或修改组件,提高了代码的灵活性、可测试性和可...
在软件开发过程中,尤其是使用C++、C#、Java等编程语言时,通常会构建两种不同的版本:Debug和Release。这两个目录是编译器在编译项目时自动生成的,各自对应于不同的编译模式。 Debug目录包含了调试版本的可执行...
4. 可维护性:保持代码简洁,避免硬编码路径或值,提高脚本的可移植性和可扩展性。 在Linux环境中,"cron"是负责执行定时任务的工具。在crontab文件中,可以设置"a.bat"和"b.bat"的等效脚本(bash、sh等)的运行...
管理系统java sal源码 storage 本库说明: 本库主要包含存储相关的内容, 如:磁盘,卷,目录,文件,流,硬链接,...8.代码尽量不使用硬编码。 9.代码开启静态的语法检查(启用Microsoft Code Analysis, 关闭Clang-
在分布式环境中,服务发现可以帮助客户端找到他们需要调用的服务实例,避免了硬编码服务地址的问题。Nacos提供了基于DNS和HTTP的两种服务发现模式,使得服务之间的通信更加灵活和可靠。 **配置管理** Nacos也提供了...
1. **服务发现**:mServices可能包含一种服务注册和发现机制,允许微服务之间自动找到彼此,而无需硬编码依赖关系。 2. **API Gateway**:作为系统的入口点,API Gateway可以路由请求到适当的微服务,同时提供负载...
这个过程可以通过修改系统配置文件(如Java的properties文件)或者代码中的硬编码实现。为了提高安全性,密码应遵循复杂性规则,并定期更换,同时采用加密存储,避免明文泄露。 三、系统功能模块 1. 图书录入:...
依赖注入使得对象之间的依赖关系可以通过外部配置文件来定义而不是硬编码在代码中,这大大提高了代码的可测试性和可维护性。AOP允许开发者将一些横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来,以便在...
17. **Python ( hely Ӿ Monty Python's Flying Circus)**:一种高级编程语言,以其简洁的语法和丰富的库支持而闻名。 18. **Tcl (Tool Command Language)**:一种脚本语言,主要用于快速开发图形用户界面和网络应用...
- **含义**:先进先出原则的一种实现方式。 - **用途**:管道通信机制,用于进程间通信。 2. **GRUB=GRand Unified Bootloader** - **含义**:一种通用启动加载程序。 - **用途**:管理多操作系统启动。 3. **...
Python是一种高级编程语言,名称来源于创始人Guido van Rossum喜欢的一个英国喜剧团体“Monty Python’s Flying Circus”。 #### Tcl=ToolCommandLanguage Tcl(Tool Command Language)是一种脚本语言,常用于快速...