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列表list数组array用法实例解析
Oct 28 Python
python脚本内运行linux命令的方法
Jul 02 Python
python的else子句使用指南
Feb 27 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
python购物车程序简单代码
Apr 18 Python
解决python报错MemoryError的问题
Jun 26 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
Python中常用的内置方法
Jan 28 Python
Python从入门到精通之环境搭建教程图解
Sep 26 Python
Python如何使用turtle库绘制图形
Feb 26 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
Python项目打包成二进制的方法
Dec 30 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结合表单实现一些简单功能的例子
2011/06/04 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
php post换行的方法
2020/02/03 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
JavaScript中的this机制
2016/01/30 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
python采集微信公众号文章
2018/12/20 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
好邻里事迹材料
2014/01/16 职场文书
致800米运动员广播稿
2014/02/16 职场文书
2014年团支书工作总结
2014/11/14 职场文书
迎新生晚会主持词
2015/06/30 职场文书
如何写通讯稿
2015/07/22 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
初二物理教学反思
2016/02/19 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang