log4j日志设置保留天数 您所在的位置:网站首页 jboss日志只保存30天 log4j日志设置保留天数

log4j日志设置保留天数

2023-11-04 11:55| 来源: 网络整理| 查看: 265

当log4j使用DailyRollingFileAppender进行日志归档时,需要对日志的个数进行控制。

此时需要对DailyRollingFileAppender进行重写。

package org.apache.log4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.text.ParseException; import java.util.*; public class MyDailyRollingFileAppender extends DailyRollingFileAppender { private static Logger logger = LoggerFactory.getLogger(MyDailyRollingFileAppender.class); private int maxFileSize = 60; @Override void rollOver() throws IOException { super.rollOver(); List fileList = getAllLogs(); sortFiles(fileList); logger.debug(fileList.toString()); deleteOvermuch(fileList); } /** * 删除过多的文件 * @param fileList 所有日志文件 */ private void deleteOvermuch(List fileList) { if (fileList.size() > maxFileSize) { for (int i = 0;i < fileList.size() - maxFileSize;i++) { fileList.get(i).delete(); logger.debug("删除日志" + fileList.get(i)); } } } /** * 根据文件名称上的特定格式的时间排序日志文件 * @param fileList */ private void sortFiles(List fileList) { Collections.sort(fileList, new Comparator() { public int compare(File o1, File o2) { try { if (getDateStr(o1).isEmpty()) { return 1; } Date date1 = sdf.parse(getDateStr(o1)); if (getDateStr(o2).isEmpty()) { return -1; } Date date2 = sdf.parse(getDateStr(o2)); if (date1.getTime() > date2.getTime()) { return 1; } else if (date1.getTime() < date2.getTime()) { return -1; } } catch (ParseException e) { logger.error("", e); } return 0; } }); } private String getDateStr(File file) { if (file == null) { return "null"; } return file.getName().replaceAll(new File(fileName).getName(), ""); } /** * 获取所有日志文件,只有文件名符合DatePattern格式的才为日志文件 * @return */ private List getAllLogs() { final File file = new File(fileName); File logPath = file.getParentFile(); if (logPath == null) { logPath = new File("."); } File files[] = logPath.listFiles(new FileFilter() { public boolean accept(File pathname) { try { if (getDateStr(pathname).isEmpty()) { return true; } sdf.parse(getDateStr(pathname)); return true; } catch (ParseException e) { logger.error("", e); return false; } } }); return Arrays.asList(files); } public int getMaxFileSize() { return maxFileSize; } public void setMaxFileSize(int maxFileSize) { this.maxFileSize = maxFileSize; } }

然后在log4j的properties文件中添加

log4j.appender.R=org.apache.log4j.MyDailyRollingFileAppender log4j.appender.R.MaxFileSize=30

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有