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实现检测服务器是否可以ping通的2种方法
Jan 01 Python
星球大战与Python之间的那些事
Jan 07 Python
python fabric实现远程部署
Jan 05 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
详解使用Python下载文件的几种方法
Oct 13 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
Python文件操作基础流程解析
Mar 19 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
解决Pytorch中关于model.eval的问题
May 22 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
深入php常用函数的使用汇总
2013/06/08 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
培养自己的php编码规范
2015/09/28 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
武汉高蓝德国际.net机试
2016/06/24 面试题
市场专员岗位职责
2014/02/14 职场文书
优秀部门获奖感言
2014/02/14 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
MySQL慢查询的坑
2021/04/28 MySQL