Django 日作 12/3 ---日志模块封装(loguru)

发布时间 2023-12-03 15:33:21作者: 拆尼斯、帕丁顿

#1 python loguru 如何用,如何把日志写到文件中,日志级别有哪些

https://loguru.readthedocs.io/en/stable/resources/recipes.html#compatibility-with-multiprocessing-using-enqueue-argument   官方 loguru

不需要配置, 输出到文件的话——先导入 loguru包, from loguru import logger  (不同等级的有不同的区分)

最低的等级是 debug    输出的一些信息都会显示出来 

info  正常的print一些信息提示  

warning  警告

error 错误

critical  非常严重的错误

 

如何做格式化的输出(与python 的 format语句基本一样)

在其内添加一个大括号 可以在后面继续传一个参数 代表其内容    (不限于字符串 任何可以转换字符串的东西)

 如何输出到日志文件里去呢?

先导入 loguru包, from loguru import logger

直接 logger add (一个文件路径 )

 

from loguru imoport logger

from config.demo import case_log     #文件是通过 config下 demo下的  case_log
通过源代码我们可以知道 case_log也是动态区获得的文件路径 其root_dir 会在 根目录生成一个case_log的目录; 下面会有一个 case_log.log的文件

def get_log(file):   #(file)传入参数文件  将传入的日志信息 放到的 哪个文件里
      logger.add(sink=file,encoding='utf-8')
        
        return logger

get_log =get_log(case_log)   #定义变量   将case_log传进去后 就可以用get_log.xxxx

if__name__=='__main__'

    get_log.info('测试正在执行')
    get_log.debug('调试')
    get_log.warnning('警告')
    get_log.error('错误')    
执行完之后 会在项目的根目录 生成一个 case_log文件 在文件下会有一个case_log文档

 

  

 

 

 如果想对此文件做一个滚动;比方说   限制每一个日志文件的大小 ----

   (通常不会以 10KB  [太小])

 达到10KB后会把它改个名字,继续在文件里  清空再打

 

单进程

 

   

该库似乎在多线程的多场景下是有问题的,那么如何在多线程下使

假如两个进程同时在写日志,当他们同时触发了这个条件,

假设A稍微快一些,那么A过来走流程时,会发现系统中不存在这个文件,所以他会把  file.log 该名成这个文件---创建了一个新文件。

而B呢 由于它晚了一些,他去检查时 已经存在这个文件了,那么b就要把这个文件删掉 于是 再去重命名再去创建;  b的删除操作 就把已经有的日志给删掉了。

loguru怎么处理呢(多进程):

 假设我们现在有多个进程,之前他们是自己去写日志,各自去访问日志的文件;

问题在于 :可能同时在写日志文件,而“我”再写是 不知道是否有其他人也在写。。

所以现在 不是直接与[日志文件] 进行一个交互

而用到了 一个中间人------相当于一个服务的提供者,需要取得它的服务就要 排队。

A---( )   B---( )    C--( )   那他们就分别去 这排队

然后由 这个人  (中间人) 再依次的把 这些要写的日志  写到这个日志文件里,包括日志的rotation  也是由 这个人来完成的  [此时和日志交互的只有这一个人] ------而由于这个排队的数据结构叫做队列, 所以参数叫 encoque   

而  enque   ---当一个进程相要写日志的时候,他需要把他的日志丢到这个队列里,所以有了这个参数

----github  --(issure)

---documentation


# 2 扩写auth的user表,给这个表加一个手机号字段
使用bootstrap画出好看页面
实现注册登录,使用cookie和session、