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. 浏览器扩展开发-Firefox临时载入附加组件(图)

    科普:[FE] Quasar BEX 热加载区别: Chrome vs Firefox 1. 2.  3. Thats all. Refer:Firefox扩展开发 Link:https://www. ...

  2. WPF 自定义控件入门 Focusable 与焦点

    自定义控件时,如果自定义的控件需要用来接收键盘消息或者是输入法的输入内容,那就需要关注到控件的焦点 默认情况下的自定义控件是没有带可获取焦点的功能的,例如编写一个继承 FrameworkElement ...

  3. dotnet 使用 XWT 构建跨平台客户端 入门篇

    本文告诉大家如何入门开始开发一个基于 mono 组织开源的 XWT 跨平台客户端 UI 框架的应用,本文的 xwt 是在 GitHub 上完全开源的,基于 MIT 协议的,底层采用 GTK# 的 UI ...

  4. .NET静态代码织入——肉夹馍(Rougamo)发布3.0

    肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...

  5. ansible系列(31)--ansible实战之部署WEB集群架构(1)

    目录 1. WEB集群环境说明 2. ansible部署WEB集群实现思路 3. ansible基础环境部署 1. WEB集群环境说明 WEB集群环境说明如下: 客户端:模拟外网主机,地址:192.1 ...

  6. 4G EPS 中的小区选择

    目录 文章目录 目录 前文列表 小区选择 RSRP(参考信号接收功率) RSRQ(参考信号接收质量) RSSI(接收信号强度指示) SINR(信号与干扰加噪声比) 前文列表 <4G EPS 中的 ...

  7. 智能勘探 | AIRIOT智慧油田管理解决方案

      石油勘探和开采地处偏远地区,涉及面广且生产规模大.特殊的作业环境下,使得工作人员作业条件艰苦,仅靠人工值守难度很大,不可避免的遇到一系列硬核挑战: 1.设备维护难度较高: 2.采油厂分布地域广.分 ...

  8. 深度学习项目-MobileNetV2水果识别模型

    FruitRecognition DeepLearning深度学习小项目,利用CNN和MobileNetV2搭建的水果识别模型. github地址 fruit为本次大作业使用的数据集. geneFru ...

  9. Itext PDF 编辑 合并 图片转PDF以及表单域

    Itext PDF 编辑 合并 图片转PDF以及表单域 编辑PDF       ​x         import com.itextpdf.text.pdf.BaseFont; import com ...

  10. Java8新特性default关键字,引出Java多继承问题

    概述 最近在看JDK集合的源码时,在Collection接口中发现了default关键字,并且惊奇的发现接口中的方法居然包含方法体,这顿时让我产生兴趣,为此我也稍微研究了一下default关键字. 很 ...