import logging
import os '''
格式符 含义
%(levername)s 日志级别名称
%(pathname)s 当前执行程序的路径(即脚本所在的位置)
%(filename)s 执行脚本程序名
%(lineno)d 日志当前的行号
%(asctime)s 打印日志的时间
%(message)s 日志信息 常用的日志 fromat 常用方案:fromat = '%(asctime)s %(filename)s[line:%(lineno)d] %(levername)s %(message)s'
'''
# fmt = "%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s: %(message)s %(pathname)s" '''
参数名 作用 举例
lever 日志输出的最低等级 lever=logging.DEBUG
format 日志输出格式 见下文的 format 具体格式
filename 存储位置 filename=‘d://debug.log’
filemode 输入模式 filemode=“w” 'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件
'''
# logging.basicConfig(
# level=logging.DEBUG,
# format=fmt,
# filename="D:\logs-220817.txt",
# filemode="w",
# datefmt="%a, %d %b %Y %H:%M:%S"
# ) '''
debug:可以帮助我们在平时的开发过程中,帮助我们查看一些输出的信息是否正确。它可以替代我们平时使用的 print() 函数。
info:它代表了一般的消息类信息,只是为了记录一些程序的行为,比如程序执行到了某个位置,进行一些简单的记录。
warnning:该等级是一种警告,一般来说程序不会出错,但是可能存在一定的潜在风险。
error:一般对应业务中出现了重大问题。比如异常或者业务逻辑不应该执行到某种情况。我们都可以通过error来进行记录。
critical:比 error 更严重的级别,不过一般来说 error 级别已经很严重了,所以 critical 很少使用。
''' def init_log(path):
if os.path.exists(path):
mode = 'a'
else:
mode = 'w'
logging.basicConfig( # 针对 basicConfig 进行配置(basicConfig 其实就是对 logging 模块进行动态的调整,之后可以直接使用)
level=logging.INFO, # INFO 等级以下的日志不会被记录
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', # 日志输出格式
filename='back.log', # 日志存放路径(存放在当前相对路径)
filemode=mode, # 输入模式;如果当前我们文件已经存在,可以使用 'a' 模式替代 'w' 模式
# 与文件写入的模式相似,'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件
) return logging current_path = os.getcwd()
path = os.path.join(current_path, 'back.log') log = init_log(path) # 初始化返回的 init_log() 函数 , 其实就是 return logging logging.debug("this is debug logger2")
logging.info("this is info logger2") logging.warn("this is warn logger2")
logging.error("this is error logger2")
logging.critical("this is critical logger2") # 文件输出
# 2022-08-30 16:20:50,738 testlogger2.py[line:68] INFO this is info logger
# 2022-08-30 16:20:50,738 testlogger2.py[line:70] WARNING this is warn logger
# 2022-08-30 16:20:50,739 testlogger2.py[line:71] ERROR this is error logger
# 2022-08-30 16:20:50,739 testlogger2.py[line:72] CRITICAL this is critical logger
# 2022-08-30 16:22:21,908 testlogger2.py[line:68] INFO this is info logger2
# 2022-08-30 16:22:21,909 testlogger2.py[line:70] WARNING this is warn logger2
# 2022-08-30 16:22:21,909 testlogger2.py[line:71] ERROR this is error logger2
# 2022-08-30 16:22:21,909 testlogger2.py[line:72] CRITICAL this is critical logger2

python 日志写入文件,参数说明及动态判断文件是创建还是追加的更多相关文章

  1. python 判断文件是否存在和删除文件的api (其中判断文件在不在让想起这个可以强兼容jenkins工作目录那个问题)

    判断文件在不在的api: os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作. os.path模块主要用于文件的属性获取,exists是“存在” ...

  2. python 获取中文拼音首字母;判断文件夹是否存在

    1.如何获取中文字符串的首字母 import pinyin #输入name def get_pinyin_first_alpha(name): return "".join([i[ ...

  3. UNIX环境编程学习笔记(6)——文件I/O之判断文件类型

    lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: ...

  4. ajaxFileUpload+struts2多文件上传(动态添加文件上传框)

    上一篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但仅仅是固定的文件个数 ...

  5. ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框)

    上篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但只是固定的文件个数,如 ...

  6. winform展示Unity3D文件(支持动态改变文件路径)

    winform下展示Unity3D文件可以支持对Unity3D实现的模块进行包装,以及在其他的项目中需要展示Unity3D的界面时候,恰到适宜地进行打开展示,这里我展示如何使用winform打开Uni ...

  7. [Java] 03 String获取文件后缀名,判断文件是否合法

    package test.string; import java.util.Arrays; import java.util.List; public class GetFileType { priv ...

  8. Python 判断文件是否存在的三种方法

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

  9. Python判断文件是否存在的三种方法

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

  10. Python判断文件是否存在的三种方法【转】

    转:http://www.cnblogs.com/jhao/p/7243043.html 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先 ...

随机推荐

  1. Cloudera CDP 企业数据云测试开通指导

    ​简介:基于阿里云部署的 Cloudera CDP 企业数据云平台已经进入公测阶段,本文详细介绍了相关试用/试用流程. 基于阿里云部署的 Cloudera CDP 企业数据云平台已经进入公测阶段,如对 ...

  2. WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来

    本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸消息提升而来 大家都知道,在不开启 W ...

  3. Solution Set - 贪心和数据结构

    感觉自己好菜啊,这个专题真的不太会. CF1439C Greedy Shopping Link&Submission. 容易发现,当此人连续买了一段物品之后,他的钱数至少减半.所以他最多只会买 ...

  4. 视频讲解如何构建surging微服务调用

    surging 是一款优秀的微服务引擎,包括了社区版,标准版,异构版,平台版本来解决公司的业务场景需求,如果你是初学者,或者是技术狂热者,社区版完全可以符合你们的要求来学习或者构建起微服务体系的引擎框 ...

  5. Go-Zero自定义goctl实战:定制化模板,加速你的微服务开发效率(四)

    前言 上一篇文章带你实现了Go-Zero和goctl:解锁微服务开发的神器,快速上手指南,本文将继续深入探讨Go-Zero的强大之处,并介绍如何使用goctl工具实现模板定制化,并根据实际项目业务需求 ...

  6. 纯JavaScript制作动态增加的网页数字

    看到别的网页上打开,会显示一个动态的数字,感觉这个效果增加了网页的灵动感.就尝试着写代码,最终实现的方法: 会从0增加到一个数值,实现的代码: <!-- html 部分 --> <d ...

  7. xFormers

    xFormers可以加快图像生成速度(几乎快两倍)并使用更少的 GPU 内存.它被广泛使用并且工作得很好,但与您之前生成的图像相比,它有时会生成不同的图像(对于相同的提示+设置). 重要的!!xFor ...

  8. 部署Zabbix

    https://blog.csdn.net/qq_57414752/article/details/125819822

  9. Vue——计算属性和侦听属性

    一.计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如,有一个嵌套数组对象:我们想根据 author 是否已经有一些书来显示不同的 ...

  10. C# wpf 实现截屏框实时截屏功能

    wpf截屏系列第一章 使用GDI+实现截屏第二章 使用DockPanel制作截屏框第三章 实现截屏框实时截屏(本章)第四章 使用ffmpeg命令行实现录屏 文章目录wpf截屏系列前言一.实现步骤1.获 ...