logging模块
logging日志模块:是用来记录日志的模块,一般记录用户在软件中的操作
使用方法:模板直接拿来用,手动修改
<span style="font-family:"><span>#</span><span> logging的配置信息(模板)</span> <span>import</span><span> os </span><span>import</span><span> logging.config </span><span>#</span><span> 定义三种日志输出格式 开始(模板,不用配置,直接拿来用)</span> standard_format = <span>"</span><span>[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]</span><span>"</span><span> </span><span>"</span><span>[%(levelname)s][%(message)s]</span><span>"</span> <span>#</span><span> 其中name为get_logger中指定的名字</span><span> simple_format </span>= <span>"</span><span>[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s</span><span>"</span><span> id_simple_format </span>= <span>"</span><span>[%(levelname)s][%(asctime)s] %(message)s</span><span>"</span> <span>#</span><span> 定义日志输出格式 结束</span> <strong><span>#</span><span> (*****)注意1: log文件的目录(手动修改)</span></strong> BASE_PATH = os.path.dirname(os.path.dirname(<span>__file__</span>)) <span>#</span><span> 获取项目路径</span> logfile_dir = os.path.join(BASE_PATH, <span>"</span><span>log</span><span>"</span>) <span>#</span><span> 存放log文件的目录</span><strong><span> #</span><span> (*****)注意2: log文件名(手动修改)</span></strong> logfile_name = <span>"</span><span>user.log</span><span>"</span> <span>#</span><span> 如果不存在定义的日志目录就创建一个</span> <span>if</span> <span>not</span><span> os.path.isdir(logfile_dir): os.mkdir(logfile_dir) </span><span>#</span><span> log文件的全路径</span> logfile_path =<span> os.path.join(logfile_dir, logfile_name) </span><strong><span>#</span><span> (*****)注意3: log配置字典(模板,不用配置,直接拿来用)</span></strong> LOGGING_DIC =<span> { </span><span>"</span><span>version</span><span>"</span>: 1<span>, </span><span>"</span><span>disable_existing_loggers</span><span>"</span><span>: False, </span><span>"</span><span>formatters</span><span>"</span><span>: { </span><span>"</span><span>standard</span><span>"</span><span>: { </span><span>"</span><span>format</span><span>"</span><span>: standard_format }, </span><span>"</span><span>simple</span><span>"</span><span>: { </span><span>"</span><span>format</span><span>"</span><span>: simple_format }, }, </span><span>"</span><span>filters</span><span>"</span><span>: {}, </span><span>"</span><span>handlers</span><span>"</span><span>: { </span><span>#</span><span> 打印到终端的日志</span> <span>"</span><span>console</span><span>"</span><span>: { </span><span>"</span><span>level</span><span>"</span>: <span>"</span><span>DEBUG</span><span>"</span><span>, </span><span>"</span><span>class</span><span>"</span>: <span>"</span><span>logging.StreamHandler</span><span>"</span>, <span>#</span><span> 打印到屏幕</span> <span>"</span><span>formatter</span><span>"</span>: <span>"</span><span>simple</span><span>"</span><span> }, </span><span>#</span><span> 打印到文件的日志,收集info及以上的日志</span> <span>"</span><span>default</span><span>"</span><span>: { </span><span>"</span><span>level</span><span>"</span>: <span>"</span><span>DEBUG</span><span>"</span><span>, </span><span>"</span><span>class</span><span>"</span>: <span>"</span><span>logging.handlers.RotatingFileHandler</span><span>"</span>, <span>#</span><span> 保存到文件</span> <span>"</span><span>formatter</span><span>"</span>: <span>"</span><span>standard</span><span>"</span><span>, </span><span>"</span><span>filename</span><span>"</span>: logfile_path, <span>#</span><span> 日志文件</span> <span>"</span><span>maxBytes</span><span>"</span>: 1024 * 1024 * 5, <span>#</span><span> 日志大小 5M</span> <span>"</span><span>backupCount</span><span>"</span>: 5<span>, </span><span>"</span><span>encoding</span><span>"</span>: <span>"</span><span>utf-8</span><span>"</span>, <span>#</span><span> 日志文件的编码,再也不用担心中文log乱码了</span> <span> }, }, </span><span>"</span><span>loggers</span><span>"</span><span>: { </span><span>#</span><span> logging.getLogger(__name__)拿到的logger配置</span> <span>""</span><span>: { </span><span>"</span><span>handlers</span><span>"</span>: [<span>"</span><span>default</span><span>"</span>, <span>"</span><span>console</span><span>"</span>], <span>#</span><span> 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕</span> <span>"</span><span>level</span><span>"</span>: <span>"</span><span>DEBUG</span><span>"</span><span>, </span><span>"</span><span>propagate</span><span>"</span>: True, <span>#</span><span> 向上(更高level的logger)传递</span> <span> }, }, } </span><strong><span>#</span><span> (*****)注意4:定义日志函数,传入的参数可以是日志信息中的"用户id"或者"用户名字",也可以是某一类型的统称</span></strong> <span>def</span><span> get_logger(user_type): </span><span>#</span><span> 1.加载log配置字典到logging模块的配置中</span> <span> logging.config.dictConfig(LOGGING_DIC) </span><span>#</span><span> 2.获取日志对象</span> <span>#</span><span> logger = logging.getLogger("user")</span> <span>#</span><span> logger = logging.getLogger("bank")</span> <span>#</span><span> logger = logging.getLogger("shop")</span> logger =<span> logging.getLogger(user_type) </span><span>return</span><span> logger <br></span><span># 调用函数,记录日志<br>#</span><span> 通过logger日志对象,调用内部的日志打印</span> logger = get_logger(<span>"</span><span>user</span><span>"</span>) <span>#</span><span> 这里的参数为日志信息中的"用户id"或者"用户名字"</span><span> #</span><span> 调用获取日志函数的日志对象</span><span> #</span><span> logger.debug("学习不要浮躁,一步一个脚印!")</span> logger.info(<span>"</span><span>学习不要浮躁,一步一个脚印!</span><span>"</span>) <span>#</span><span> debug和info均为日志等级,用info即可,<strong>info后面传入的内容就是需要记录日志的内容</strong></span></span>
www#gaodaima.com来源[email protected]搞@^&代*@码网搞代码
注意:前三个注意点可以根据情况修改设置,第四个注意点是log的配置字典,无需修改,只需留意即可。
执行结果:
[INFO][2020-10-22 20:23:07,405][04 logging模块.py:100]学习不要浮躁,一步一个脚印!
logging模块应用输出示例: