当前位置: 首页 > news >正文

网站建设來选宙斯站长网站开发包括哪些工作

网站建设來选宙斯站长,网站开发包括哪些工作,网站被清空了怎么办,去招聘网站做顾问logback无法删除太久远的日志文件#xff1f;logback删除日志文件源码分析 最近发现logback配置滚动日志#xff0c;但是本地日志文件甚至还有2年前的日志文件#xff0c;服务器是却是正常的#xff01; 网上搜索了一波没有发现#xff0c;只找到说不能删除太久远的旧日志…logback无法删除太久远的日志文件logback删除日志文件源码分析 最近发现logback配置滚动日志但是本地日志文件甚至还有2年前的日志文件服务器是却是正常的 网上搜索了一波没有发现只找到说不能删除太久远的旧日志文件 我的配置 !-- 基于时间和空间的滚动日志单个文件最大10MB保留天数最大30天所以日志保留最大空间是20GB -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern/root/demo/logs/hornet_%d{yyyyMMdd}.%i.log/fileNamePatternmaxFileSize10mb/maxFileSizemaxHistory30/maxHistorytotalSizeCap20GB/totalSizeCap /rollingPolicy下面是源码分析 从配置可以看出可以从 SizeAndTimeBasedRollingPolicy.class 着手 package ch.qos.logback.core.rolling;import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP.Usage; import ch.qos.logback.core.util.FileSize;public class SizeAndTimeBasedRollingPolicyE extends TimeBasedRollingPolicyE {FileSize maxFileSize;Overridepublic void start() {SizeAndTimeBasedFNATPE sizeAndTimeBasedFNATP new SizeAndTimeBasedFNATPE(Usage.EMBEDDED); if(maxFileSize null) {addError(maxFileSize property is mandatory.);return;} else {addInfo(Archive files will be limited to [maxFileSize] each.);}sizeAndTimeBasedFNATP.setMaxFileSize(maxFileSize);timeBasedFileNamingAndTriggeringPolicy sizeAndTimeBasedFNATP;if(!isUnboundedTotalSizeCap() totalSizeCap.getSize() maxFileSize.getSize()) {addError(totalSizeCap of [totalSizeCap] is smaller than maxFileSize [maxFileSize] which is non-sensical);return;}// most work is done by the parentsuper.start();}public void setMaxFileSize(FileSize aMaxFileSize) {this.maxFileSize aMaxFileSize;}Overridepublic String toString() {return c.q.l.core.rolling.SizeAndTimeBasedRollingPolicythis.hashCode();} }这个类什么也没写那逻辑肯定在父类 TimeBasedRollingPolicy.class public void start() {// set the LR for our utility objectrenameUtil.setContext(this.context);// find out period from the filename patternif (fileNamePatternStr ! null) {fileNamePattern new FileNamePattern(fileNamePatternStr, this.context);determineCompressionMode();} else {addWarn(FNP_NOT_SET);addWarn(CoreConstants.SEE_FNP_NOT_SET);throw new IllegalStateException(FNP_NOT_SET CoreConstants.SEE_FNP_NOT_SET);}compressor new Compressor(compressionMode);compressor.setContext(context);// wcs : without compression suffixfileNamePatternWithoutCompSuffix new FileNamePattern(Compressor.computeFileNameStrWithoutCompSuffix(fileNamePatternStr, compressionMode), this.context);addInfo(Will use the pattern fileNamePatternWithoutCompSuffix for the active file);if (compressionMode CompressionMode.ZIP) {String zipEntryFileNamePatternStr transformFileNamePattern2ZipEntry(fileNamePatternStr);zipEntryFileNamePattern new FileNamePattern(zipEntryFileNamePatternStr, context);}if (timeBasedFileNamingAndTriggeringPolicy null) {timeBasedFileNamingAndTriggeringPolicy new DefaultTimeBasedFileNamingAndTriggeringPolicyE();}timeBasedFileNamingAndTriggeringPolicy.setContext(context);timeBasedFileNamingAndTriggeringPolicy.setTimeBasedRollingPolicy(this);timeBasedFileNamingAndTriggeringPolicy.start();if (!timeBasedFileNamingAndTriggeringPolicy.isStarted()) {addWarn(Subcomponent did not start. TimeBasedRollingPolicy will not start.);return;}//*********** 可以看到这里有 maxHistory也就是最大保留天数//*********** 可以看到这里有 maxHistory也就是最大保留天数//*********** 可以看到这里有 maxHistory也就是最大保留天数//*********** 大概意思就是判断是否初始化然后把参数设置到archiveRemover中//*********** 后面调用archiveRemover.cleanAsynchronously方法进行清理 // the maxHistory property is given to TimeBasedRollingPolicy instead of to// the TimeBasedFileNamingAndTriggeringPolicy. This makes it more convenient// for the user at the cost of inconsistency here.if (maxHistory ! UNBOUND_HISTORY) {archiveRemover timeBasedFileNamingAndTriggeringPolicy.getArchiveRemover();archiveRemover.setMaxHistory(maxHistory);archiveRemover.setTotalSizeCap(totalSizeCap.getSize());if (cleanHistoryOnStart) {addInfo(Cleaning on start up);Date now new Date(timeBasedFileNamingAndTriggeringPolicy.getCurrentTime());cleanUpFuture archiveRemover.cleanAsynchronously(now);}} else if (!isUnboundedTotalSizeCap()) {addWarn(maxHistory is not set, ignoring totalSizeCap option with value [totalSizeCap]);}super.start();}进入 TimeBasedArchiveRemover.class,可以看到这是一个异步任务重点在 clean() public Future? cleanAsynchronously(Date now) {ArhiveRemoverRunnable runnable new ArhiveRemoverRunnable(now);ExecutorService executorService context.getScheduledExecutorService();Future? future executorService.submit(runnable);return future;}public class ArhiveRemoverRunnable implements Runnable {Date now;ArhiveRemoverRunnable(Date now) {this.now now;}Overridepublic void run() {clean(now);if (totalSizeCap ! UNBOUNDED_TOTAL_SIZE_CAP totalSizeCap 0) {capTotalSize(now);}}}重点在 clean() 清理得到 periodsElapsed 天数然后遍历清理 (-maxHistory1)i 天 public void clean(Date now) {long nowInMillis now.getTime();// for a live appender periodsElapsed is expected to be 1int periodsElapsed computeElapsedPeriodsSinceLastClean(nowInMillis);lastHeartBeat nowInMillis;if (periodsElapsed 1) {addInfo(Multiple periods, i.e. periodsElapsed periods, seem to have elapsed. This is expected at application start.);}for (int i 0; i periodsElapsed; i) {int offset getPeriodOffsetForDeletionTarget() - i;Date dateOfPeriodToClean rc.getEndOfNextNthPeriod(now, offset);cleanPeriod(dateOfPeriodToClean);}}重要 computeElapsedPeriodsSinceLastClean() 计算 periodsElapsed 天数 UNINITIALIZED 先判断是否初始化 periodBarriersCrossed 计算过期出天数 INACTIVITY_TOLERANCE_IN_MILLIS 默认是32天不知道为什么 int computeElapsedPeriodsSinceLastClean(long nowInMillis) {long periodsElapsed 0;if (lastHeartBeat UNINITIALIZED) {addInfo(first clean up after appender initialization);periodsElapsed rc.periodBarriersCrossed(nowInMillis, nowInMillis INACTIVITY_TOLERANCE_IN_MILLIS);periodsElapsed Math.min(periodsElapsed, MAX_VALUE_FOR_INACTIVITY_PERIODS);} else {periodsElapsed rc.periodBarriersCrossed(lastHeartBeat, nowInMillis);// periodsElapsed of zero is possible for size and time based policies}return (int) periodsElapsed;} 所以得出结论logback只能删除最近-maxHistory天到-maxHistory-32天的日志文件 补充 logback默认不会在项目启动时清理旧日志文件如果需要启动执行则需配置 cleanHistoryOnStarttrue/cleanHistoryOnStart
http://www.hkea.cn/news/14538553/

相关文章:

  • 衡水移动网站建设报价济南免费建站
  • 怎么免费开网站数商云网络科技
  • 长沙公司网站高端网站建设wordpress破解文章密码
  • 辽宁鞍山建设工程信息网站网站创意策划方案
  • 成都建设规划网站济南哪有做网站的
  • 休闲咖啡厅网站开发目标网络公司名字四个字
  • 品牌微信网站建设网络及it维护外包
  • 建设网站的目的饮食类计算机网站开发项目
  • 微信引流推广网站建设挂马网站教程
  • 免费建造网站商城网站建设怎么建设
  • 网站找到后台了 如何破解账号 密码wordpress数据改网址
  • 网站制作和app制作wordpress标题设置方法
  • 邯郸网站建设费用做菠菜网站有没有被骗的
  • 郑州铭功路网站建设企业做什么需要有网站
  • 四川省建设厅的注册中心网站如何做彗聪网站呢
  • 呼和浩特可以做网站的公司免费wordpress 模板
  • 中文域名做的网站综合管理平台系统
  • 深圳seo网站建设顺义青岛网站建设
  • 自己做网站要学前端和后端域名注册备案
  • 手机站建设页面设计感想
  • 代刷网站推广链接快手wordpress生成静态html页面
  • 做网站用那一种语言最好网站 文章 keywords 和主页keywords
  • 建设工程质量管理条例网站vps搭建网站是什么意思
  • 网站建设规划面试技巧建设一个商城网站
  • 补习吧 一家专门做家教的网站个人简历在线填写电子版
  • 企业网站建设参考资料建设厅官网查询
  • 厦门手机网站制作二维码转链接
  • 企业网站的建设与管理论文常用网站推广方式有哪些
  • 企业网站开发是什么集团公司中英文网站模板
  • 江西网站建设平台创意网站建设价格多少