实现一个日志(log)工具类

有时候用log4j或者slf4j,logback等框架直接使用不生效

决定写一个实现log4j日志工具类,写入日志到指定文件

完整代码如下

package com.esoon.zk20s.docgen.utils;

import com.esoon.zk20s.docgen.constants.LogConstants;
import com.mentor.chs.plugin.IXApplicationContext;
import com.mentor.chs.plugin.IXOutputWindow;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;

import java.io.*;
import java.util.Properties;

public class ChsLogger {

    private static IXOutputWindow out = null;
    private Logger logger = null;

    public static void initLogger(IXApplicationContext context) {
        out = context.getOutputWindow();
    }

    public static Properties logProperties = null;
    public static String logModel = null;

    static {
        try {
            {
                //获得日志等级
                String logPropertiesFilePath = PluginUtils.ConfigDir + File.separator + LogConstants.LogPropertiesFileName;
                logProperties = new Properties();
                logProperties.load(new FileInputStream(logPropertiesFilePath));
                logModel = logProperties.getProperty(LogConstants.LogProperties_Key_LogModelName);
            }
            // RollingFileAppender
            String logFilePath = PluginUtils.LogsDir + File.separator + LogConstants.LogFileName;
            RollingFileAppender rollingFileAppender = new RollingFileAppender(new PatternLayout("%d %p [%c] - %m%n"),
                    logFilePath, true);
            rollingFileAppender.setName("logfile");
            rollingFileAppender.setMaxFileSize("2048KB");
            rollingFileAppender.setMaxBackupIndex(8);
            Logger.getRootLogger().addAppender(rollingFileAppender);
        } catch (IOException e) {
        }
    }


    @SuppressWarnings("rawtypes")
    public static ChsLogger getLogger(Class className) {
        return new ChsLogger(className);
    }

    @SuppressWarnings("rawtypes")
    private ChsLogger(Class className) {
        logger = Logger.getLogger(className);
    }

    public void info(Object message) {
        logger.error(message);
        out.println(String.valueOf(message));
    }

    public void info(Object message, Throwable t) {
        logger.error(message, t);
        out.println(String.valueOf(message));
        out.println(t.toString());
    }

    public void debug(Object message) {
        debug(message, null);
    }

    public void debug(Object message, Throwable t) {
        if ("DEBUG".equalsIgnoreCase(logModel)) {
            out.println(String.valueOf(message));
            if (t != null) {
                logger.error(message, t);
                out.println(t.toString());
            } else {
                logger.error(message);
            }
        }
    }

    public void error(Object message) {
        logger.error(message);
        out.println(String.valueOf(message));
    }

    public void error(Object message, Throwable t) {
        logger.error(message, t);
        out.println(String.valueOf(message));
    }


    private String errInfo(Throwable t) {
        StringWriter sw = null;
        PrintWriter pw = null;
        try {
            sw = new StringWriter();
            pw = new PrintWriter(sw);
            t.printStackTrace(pw);
            pw.flush();
            sw.flush();
        } finally {
            if (sw != null) {
                try {
                    sw.close();
                } catch (IOException e) {
                }
            }

            if (pw != null) {
                try {
                    pw.close();
                } catch (Exception e) {
                }
            }

        }
        return sw.toString();
    }

    public Logger getLogger() {
        return logger;
    }

    public void setLogger(Logger logger) {
        this.logger = logger;
    }
}

猜你喜欢

转载自blog.csdn.net/zp357252539/article/details/129956932