django实现日志按日期分割


Posted in Python onMay 21, 2020

settings文件中配置:

LOGGING = {
  'version':1,
  'disable_existing_logger':False,
  'formatters':{
    'verbose':{
      'format':'%(asctime)s \"%(pathname)s:%(module)s:%(funcName)s:%(lineno)d\" [%(levelname)s]-%(message)s'
    },
  },
  # 处理器
  'handlers':{
    # 输出控制台
    'console':{
      'level':'INFO',
      'class':'logging.StreamHandler',
      'formatter':'verbose'
    },
    # 输出文件
    'file':{
      'level':'DEBUG',
      'class':'logging.handlers.TimedRotatingFileHandler',
      'filename':'logs/blog.log',
      'formatter':'verbose',
      # 每分钟切割一次日志
      'when':'M',
      # 时间间隔
      'interval':1,
      # 保留5份日志
      'backupCount':5,
      'encoding':'utf-8'
    },
  },
  # 记录器
  'loggers':{
    'django':{
      'handlers':['console','file'],
      'level':'INFO',
      'propagete':True,
    },
  }
}

项目启动时,win系统下,添加 --noreload :python manage.py runserver --noreload ,防止PermissionError报错;

pycharm使用时,在此添加参数

django实现日志按日期分割

补充知识:logback输出日志:时间分割(每天生成相同名称的log文件,旧文件以时间分类)

private final static Logger logger = LoggerFactory.getLogger(SyncIntegralService.class);

今天经理又提出了一个奇怪的需求,很是蛋疼,就是:每天生成相同名称的log文件,旧文件以时间分类

只有一个"log.log"的文件,7日(今天)生成的日志是以 “log.log”的形式存储的,当到8日(明天)的时候是把7日生成的log.log文件保存到log.log201400707.log,然后在创建一个8日的log.log文件,依次类推。

现在很清晰是什么需求了吧,先贴项目之前的logback文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 <encoder>
  <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
  </pattern>
 </encoder>
 </appender>
 
 <appender name="eventFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  <fileNamePattern>${catalina.base}/logs/EventAnalysis/EventAnalysis.%d{yyyy-MM-dd}.log</fileNamePattern>
  <maxHistory>30</maxHistory>
 </rollingPolicy>
 <encoder>
  <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
 </encoder>
 </appender>
 
 <logger name="com.travelsky.eventanalysis.dao" additivity="true">
 <level value="DEBUG" />
 </logger>
 
 <root level="info">
 <appender-ref ref="eventFile" />
 <appender-ref ref="STDOUT"/>
 </root> 
</configuration>

仔细看看还是很简单的,就是每天生成文件以时间分类,输出级别是debug,还有输出形式等。。具体是这样的

django实现日志按日期分割

好了,现在贴上需求大代码

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 <encoder>
  <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
  </pattern>
 </encoder>
 </appender>
 
 <!-- 日志生成位置 -->
 
 <appender name="eventFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <File>${catalina.base}/logs/BigeyeCenter/BigeyeCenter.log</File>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <!-- daily rollover 保存历史记录到这个文件夹一日起为后缀 -->
   <FileNamePattern>${catalina.base}/logs/BigeyeCenter/BigeyeCenter.%d{yyyy-MM-dd}.log</FileNamePattern>
   <!-- keep 30 days' worth of history -->
   <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
   <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
   <charset>UTF-8</charset> <!-- 此处设置字符集 -->
  </encoder>
 </appender>
 
 <logger name="com.travelsky.updateDatabase.dao" additivity="true">
 <level value="DEBUG" />
 </logger>
 
 <!-- 打印 日志级别-->
 <root level="info">
 <appender-ref ref="eventFile" />
 <appender-ref ref="STDOUT"/>
 </root> 
</configuration>

呵呵,其实就是加上了一行代码,这就浪费了一天的时间。。。,其实刚开始想写一个文件的覆盖,用java代码控制。后来才发现资源一直被占用,因为tomcat一直在占用相同的log文件,这里就不贴码了

看一下效果

django实现日志按日期分割

看一下修改日期和生成日期你就看懂了。。。

希望能给小伙伴们帮助,别学我~

以上这篇django实现日志按日期分割就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python根据文件大小打log日志
Oct 09 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
python实现智能语音天气预报
Dec 02 Python
Python datetime模块使用方法小结
Jun 18 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
Django之富文本(获取内容,设置内容方式)
May 21 #Python
使用Python防止SQL注入攻击的实现示例
May 21 #Python
Django的ListView超详细用法(含分页paginate)
May 21 #Python
Django中FilePathField字段的用法
May 21 #Python
Django 解决上传文件时,request.FILES为空的问题
May 20 #Python
使用 django orm 写 exists 条件过滤实例
May 20 #Python
django 解决自定义序列化返回处理数据为null的问题
May 20 #Python
You might like
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
PHP导入导出Excel代码
2015/07/07 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Python sys.argv用法实例
2015/05/28 Python
Python的time模块中的常用方法整理
2015/06/18 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
空指针到底是什么
2012/08/07 面试题
运动会800米加油稿
2014/02/22 职场文书
自我鉴定书
2014/03/24 职场文书
工地标语大全
2014/06/18 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书