直接上代码,自定义输出格式、自定义输出地址、自定义输出模块化
import logging
def setup_logging(log_name):
log_file_path = 'C:/app/cxxx' / f'{log_name}.log'
# 配置日志
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
force=True,
handlers=[
logging.FileHandler(log_file_path),
logging.StreamHandler()
]
)
调用
logging_config.setup_logging(log_name)
# 获取日志处理器
logger = logging.getLogger(__name__)
logger.info('程序开始运行')
文档解析
格式 | 描述 |
---|---|
filename | 使用指定的文件名创建一个 FileHandler,而不是 StreamHandler。 |
filemode | 如果指定了 filename,则用此 模式 打开该文件。 默认模式为 ‘a’。 |
format | 使用指定的格式字符串作为处理器。 默认为属性以冒号分隔的 levelname, name 和 message。 |
datefmt | 使用指定的日期/时间格式,与 time.strftime() 所接受的格式相同。 |
style | 如果指定了 format,将为格式字符串使用此风格。 ‘%’, ‘{’ 或 ‘$’ 分别对应于 printf 风格, str.format() 或 string.Template。 默认为 ‘%’。 |
level | 设置根记录器级别为指定的 level. |
stream | 使用指定的流初始化 StreamHandler。 请注意此参数与 filename 不兼容 —— 如果两者同时存在,则会引发 ValueError。 |
handlers | 如果指定,这应为一个包含要加入根日志记录器的已创建处理器的可迭代对象。 任何尚未设置格式描述符的处理器将被设置为在此函数中创建的默认格式描述符。 请注意此参数与 filename 或 stream 不兼容 —— 如果两者同时存在,则会引发 ValueError。 |
force | 如果将此关键字参数指定为 true,则在执行其他参数指定的配置之前,将移除并关闭附加到根记录器的所有现有处理器。 |
encoding | 如果此关键字参数与 filename 一同被指定,则其值会在创建 FileHandler 时被使用,因而也会在打开输出文件时被使用。 |
errors | 如果此关键字参数与 filename 一同被指定,则其值会在创建 FileHandler 时被使用,因而也会在打开输出文件时被使用。 如果未指定,则会使用值 ‘backslashreplace’。 请注意如果指定为 None,它将被原样传给 open(),这意味着它将会当作传入 ‘errors’ 一样处理。 |