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 selenium自动化网页抓取器
Jan 20 Python
Python中常用信号signal类型实例
Jan 25 Python
python实现比较文件内容异同
Jun 22 Python
Python格式化日期时间操作示例
Jun 28 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
对python中的装包与解包实例详解
Aug 24 Python
Django项目中使用JWT的实现代码
Nov 04 Python
Python读取csv文件实例解析
Dec 30 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
聊天室php&amp;mysql(二)
2006/10/09 PHP
动态生成gif格式的图像要注意?
2006/10/09 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
js的2种继承方式详解
2014/03/04 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
python如何使用unittest测试接口
2018/04/04 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Opencv求取连通区域重心实例
2020/06/04 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
历史专业毕业生的自我鉴定
2013/11/15 职场文书
专科文秘应届生求职信
2013/11/18 职场文书
给民警的表扬信
2014/01/08 职场文书
道路施工安全责任书
2014/07/24 职场文书
出纳工作检讨书
2014/10/18 职场文书
个人德育工作总结
2015/03/05 职场文书
2015年电工工作总结
2015/04/10 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
python基础之错误和异常处理
2021/10/24 Python
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL