⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filelogwriter.java.svn-base

📁 日志组件,添加到应用中,可在数据库中查询日志
💻 SVN-BASE
字号:
package com.gisinfo.common.log;

import com.gisinfo.common.util.CommonUtil;

import java.util.List;
import java.io.*;

/**
 * User: Ken
 * Date: 2008-5-21
 * Time: 17:14:58
 */
public class FileLogWriter extends LogWriter {
    private File logFile = null;
    private double maxFileSize = 5;          //5M
    private boolean settingIsRight = true;
    private int count = 0;

    private static boolean makeDir(File dir) {
        if (dir == null) return false;
        if (dir.exists()) return true;
        if(!makeDir(dir.getParentFile())) return false;
        /*File parent = dir.getParentFile();
        if (parent == null) return false;
        if (parent.exists()) return true;
        if (!makeDir(parent)) return false;
        if (!parent.exists() && !parent.mkdir()) return false;*/
        return dir.mkdir();

    }

    protected void init() {
        String file = (String) this.getProperties().get("file");
        maxFileSize = CommonUtil.getDouble(this.getProperties().get("maxFileSize"), 5);
        logFile = new File(file);
        if (!logFile.exists())
            try {
                if (!logFile.getParentFile().exists()) {
                    logFile.getParentFile().mkdir();
                }
                settingIsRight = makeDir(logFile.getParentFile()) && logFile.createNewFile();
            } catch (IOException e) {
                settingIsRight = false;
                LoggerConfig.writeInfo(e);
            }
        if (!logFile.exists()) {
            LoggerConfig.writeInfo("无法创建日志文件!");
        } else if (!logFile.isFile()) {
            settingIsRight = false;
            LoggerConfig.writeInfo("日志文件不能是目录!");
        }
        if (!settingIsRight)
            LoggerConfig.writeInfo("请检查日志文件配置是否正确!");


    }

    protected void writeLog(List<LogEvent> event) throws LogException {
        if (!settingIsRight) return;
        checkLogFile(logFile);
        doRealWriteFile(event, logFile);

        //To change body of implemented methods use File | Settings | File Templates.

    }

    protected void doRealWriteFile(List<LogEvent> event, File logFile) {
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(logFile, true));
            for (LogEvent e : event) {
                bw.append(String.valueOf(e));
                bw.newLine();
            }
            bw.close();
        } catch (IOException e) {
            LoggerConfig.writeInfo(e);
        }
    }

    private void checkLogFile(File logFile) {
        long length = logFile.length();
        if (length < this.maxFileSize * 1024 * 1024) return;

        String fileName = logFile.getName();
        File f = new File(logFile.getParent(), getBakFileName(fileName));
        while (f.exists()) {
            f = new File(logFile.getParent(), getBakFileName(fileName));
        }
        if (!logFile.renameTo(f)) return;
        logFile = new File(logFile.getParent(), fileName);


    }

    public String getBakFileName(String fileName) {
        int pos = fileName.lastIndexOf(".");
        if (pos == -1) return fileName + "_bak_" + (++count);
        else return fileName.substring(0, pos) + "_bak_" + (++count) + fileName.substring(pos);
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -