Python - 日志管理

# os:操作系统接口
import os
# result = os.getenv('path')    # getenv()获取环境变量
# print(result)

# os.path.split() 把路径分为2部分 1个是目录路径 1个文件名
# os.path.dirname() 分割的第一个元素
# os.path.basename()  分割的第二个元素
# print(os.path.split('D:/Wilia/1.py'))  # ('D:/Wilia', '1.py')
# print(os.path.dirname(r'D:\Wilia\1.py'))  # D:\Wilia
# print(os.path.basename(r'D:\Wilia\1.py')) # 1.py

# os.path.exists() 判断路径是否存在,存在为True,不存在False
# print(os.path.exists(r'D:\Wilia\1.py'))  # True

# print(os.path.isabs(r'D:\Wilia\1.py')) # True  绝对路径:完整路径
# print(os.path.isfile(r'D:\Wilia\1.py'))  # True   isfile是否是文件

# print(os.path.abspath('.'))   # 返回当前路径的绝对路径   D:\Wilia\25.内置模块
# print(os.path.abspath('../'))    # D:\Wilia
print(os.path.isdir(r'D:\Wilia'))  # True





import sys

"""
“函数和功能”:主要是对python解释器系统进行各种操作		

1. sys.getdefaultencoding(): 获取系统当前编码
2. sys.path:返回环境变量的路径
3. sys.platform:返回当前系统平台
4. sys.version:查看目前系统python的版本

"""

# print(sys.argv)     # ['D:/python/untitled/基础/内置模块/sys模块.py']
# print(sys.getdefaultencoding())     # utf-8
# print(sys.path)     # 返回环境变量的路径
# print(sys.platform)     # win32 当前系统平台
# print(sys.version)      # python version





"""
“函数和功能”:主要是用来处理python中时间的内置模块
1. time.time():获取的是一个时间戳
2. time.localtime():将时间戳转换为数组格式的时间
3. time.asctime():把表示时间的元组简化
4. time.strftime():选择性简化
5. time.strptime():将格式字符串转化成struct_time
"""
import time

# t1 = time.time()
# print(t1)       # 1619613244.2331262
#
# t2 = time.localtime(t1)
# print(t2)
# # time.struct_time(tm_year=2021, tm_mon=4, tm_mday=28, tm_hour=20, tm_min=34, tm_sec=30, tm_wday=2, tm_yday=118, tm_isdst=0)
# # print(t2.tm_hour)
# # print(t2.tm_year)
#
#
# t3 = time.strftime('%Y-%m-%d %H:%M:%S', t2)     # str 字符串, f 代表format格式化
# print(t3)   # 返回字符串的当地时间
# # 2021-04-28 20:39:32
#
#
# # 反向转换
#
# t4 = time.strptime(t3, '%Y-%m-%d %H:%M:%S')
# print(t4)
# # time.struct_time(tm_year=2021, tm_mon=4, tm_mday=28, tm_hour=20, tm_min=41, tm_sec=30, tm_wday=2, tm_yday=118, tm_isdst=-1)
#
#
# t5 = time.mktime(t4)
# print(t5)       # 1619613690.0
#


print(time.asctime())       # Wed Apr 28 20:44:39 2021









"""
python日志处理的方式:
1. print()
2. logging模块:能够查看所有运行相关的记录,按需设置日志级别后,来显示日志内容


“功能”:主要是用来在控制台输出日志

“日志”:是一种可以追踪某些软件运行时所发生事件的方法

“作用”:
1.  程序调试
2.  了解软件程序运行情况,是否正常
3.  软件程序运行故障分析与问题定位

“日志等级”:
DEBUG	      调试信息
INFO	      普通信息
WARNING	      警告信息
ERROR	      错误信息
CRITICAL      危险信息

"""



import logging
# # 1> 创建log文件
# logging.basicConfig(filename='test.log', level=logging.DEBUG)
#
# # 2> 在log文件中写入相关日志信息
# # 调试信息
# logging.debug("this is debug message !")
# # 普通信息
# logging.info("this is info !")
# # 警告信息
# logging.warning("this is warning !")
# # 错误信息
# logging.error("this is error !")
# # 危险信息
# logging.critical("this is critical !")


# %(levelname)s 日志级别
# %(msg)s or %(message)s 日志内容

# logging.basicConfig(format="日志级别: %(levelname)s \n 日志内容: %(msg)s", level=logging.DEBUG)
# logging.basicConfig(format="日志级别: %(levelname)s \n 日志内容: %(message)s", level=logging.DEBUG)
# #
# # # 调试信息
# # logging.debug("this is debug message !")
# # # 普通信息
# # logging.info("this is info !")
# # # 警告信息
# # logging.warning("this is warning !")
# # # 错误信息
# # logging.error("this is error !")
# # # 危险信息
# # logging.critical("this is critical !")
# #
# #
# # logging.basicConfig()





"""
配置日志管理器
步骤:
1. 初始化对象
2. 设置级别
3. 定义handler(主要是控制显示方式:控制台显示;在日志文件中显示)
4. 格式化输出

模块组件:
日志器:Logger      应用程序调用接口
处理器:Handler     把日志发送到指定的位置
过滤器:Filter      过滤日志信息(可选)
格式器:Formatter   格式化输出日志
"""

import logging

# 1. 创建一个logger日志管理器

l1 = logging.getLogger()

# 设置级别, 达到什么级别才能输出到控制台
l1.setLevel(logging.DEBUG)


# 2. 定义handler
# 在控制台输出,需要用到StreamHandler()
sh = logging.StreamHandler()

sh.setLevel(logging.DEBUG)

# 在文件输出,FilerHandler()
fh = logging.FileHandler('fileHandler.log', encoding='utf-8')

fh.setLevel(logging.WARNING)

# 3. 定义输出的格式 -- 格式化

fm = logging.Formatter(
    'Time : %(asctime)s'
    'level: %(levelname)s'
    'msg  : %(message)s'
)

# 4. 告诉哪些处理器要以上面的格式来进行输出

sh.setFormatter(fm)
fh.setFormatter(fm)

# 5. 将控制台处理对象sh和文件处理对象fh添加到logger日志管理器Handler中去 addHandler()
l1.addHandler(sh)
l1.addHandler(fh)

# 6. 设置每个级别的日志内容
l1.debug("debug")
l1.info("info")
l1.error("error")
l1.warning("warning")
l1.critical("critical")


### 结果 - file只有大于WARNING的日志,控制台有DEBUG的日志

  

上一篇:mysql 不要用int来存放时间


下一篇:模块-时间管理:time 和 datetime