• 我的JAVA工具方法常用类


    package com.citic.util.comm;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.PrintStream;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    import com.citic.util.comm.ConfigFileUtil;
    
    /**
     * Java实现类似C/C++中的__FILE__、__FUNC__、__LINE__等,主要用于日志等功能中。
     * 
     * @version 1.0 2011-07-13
     * 未使用log4j,没月认真研究 张明伟20170518
     */
    public class CommFun implements IConstants{
        /**
         * 打印日志
         */
        private static String filepth = null;
        private static SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHmmSS");
        private static String[] logfiles=new String[LOGLEVEL.values().length]; //{"err","info","data","debug","all",null};
        private static FileOutputStream[] out=new FileOutputStream[LOGLEVEL.values().length];
        private static PrintStream[] ps=new PrintStream[LOGLEVEL.values().length];
        private static PrintStream stdps=new PrintStream(System.out);
        private static CommFun commfun=null,commfun1=null; 
        private CommFun() {
            filepth = ConfigFileUtil.getInstance().getPathName("..");
            String day = ft.format(new Date());
            System.out.println("dt is " + day);
            File tfile = new File(filepth + "logs/");
            if (!tfile.exists()) {
                tfile.mkdir();
            }
    //        FileOutputStream out= new FileOutputStream(tfile.getPath()
    //                    + "/systemout" + day.substring(0, 8) + ".log", true);
    //        FileOutputStream errout = new FileOutputStream(tfile.getPath()
    //                + "/systemerrout" + day.substring(0, 8) + ".log", true);
    //        for(int i=0;i<logfiles.length;i++){
    //            try {
    //                String tmpstr = tfile.getPath() + File.separator +"SUPIS_" + LOGLEVEL.values()[i].name()
    //                        + day.substring(0, 8) + ".log";
    //                //System.out.println(tmpstr);
    //                out[i] = new FileOutputStream(tmpstr, true);
    //            } catch (FileNotFoundException e) {
    //                e.printStackTrace();
    //            }
    //            ps[i] = new PrintStream(out[i]);
    //        }
        }
        
        private CommFun(int debuglevel){
            if (debuglevel == 0) {
                return;
            }
            
            if (debuglevel >= ALL || debuglevel <= 0) {
                debuglevel = ALL;
            }
            
            if (commfun == null) {
                commfun = new CommFun();
            }
            
            if(ps[debuglevel-1]!=null){
                return;
            }
            
            File tfile = new File(filepth + "logs/");
            String day = ft.format(new Date());
            try {
                String tmpstr = tfile.getPath() + File.separator + "SUPIS_"
                        + LOGLEVEL.values()[debuglevel-1].name() + day.substring(0, 8)
                        + ".log";
                //System.out.println(tmpstr);
                out[debuglevel-1] = new FileOutputStream(tmpstr, true);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            ps[debuglevel-1] = new PrintStream(out[debuglevel-1]);
        }
        
        public static void log() {
            System.setOut(stdps);
            System.out.println(getFileLineMethod());
        }
    
        public static void log(int debuglevel, String... parms) {
            if (debuglevel == 0) {
                return;
            }
            new CommFun(debuglevel);
            new CommFun(ALL);
            StringBuffer stb = null;
            if (parms == null || "".equals(parms)) {
                stb = new StringBuffer("");
            } else {
                stb = new StringBuffer(parms.length);
                for (int i = 0; i < parms.length; i++) {
                    stb.append(parms[i] == null ? "" : parms[i]);
                }
            }
            String messge = getFileLineMethod() + "[" + _TIME_() + "]"
                    + stb.toString();
            
            if (debuglevel >= logfiles.length) {
                debuglevel=ALL;
            }
            System.setOut(ps[debuglevel - 1]);
            System.out.println(messge);
            if (debuglevel != ALL) {
                System.setOut(ps[ALL-1]);
                System.out.println(messge);
            }
        }
        
        public static void log(String... parms) {
            new CommFun(ALL);
            StringBuffer stb=null;
            if(parms==null||"".equals(parms)){
                stb=new StringBuffer("");
            }else{
                stb = new StringBuffer(parms.length);    
                for(int i=0;i<parms.length;i++){
                    stb.append(parms[i]==null?"":parms[i]);
                }
            }
            String messge=getFileLineMethod()+ "["+_TIME_()+"]"+ stb.toString();
            System.setOut(ps[ALL-1]);
            System.out.println(messge);
        }
    
        /**
         * 打印日志时获取当前的程序文件名、行号、方法名 输出格式为:[FileName | LineNumber | MethodName]
         * 
         * @return
         */
        public static String getFileLineMethod() {
            StackTraceElement traceElement = ((new Exception()).getStackTrace())[2];
            StringBuffer toStringBuffer = new StringBuffer("[")
                    .append(traceElement.getFileName()).append(":")
                    .append(traceElement.getLineNumber()).append(":")
                    .append(traceElement.getMethodName()).append("]");
            return toStringBuffer.toString();
        }
    
        // 当前文件名
        public static String _FILE_() {
            StackTraceElement traceElement = ((new Exception()).getStackTrace())[2];
            return traceElement.getFileName();
        }
    
        // 当前方法名
        public static String _FUNC_() {
            StackTraceElement traceElement = ((new Exception()).getStackTrace())[2];
            return traceElement.getMethodName();
        }
    
        // 当前行号
        public static int _LINE_() {
            StackTraceElement traceElement = ((new Exception()).getStackTrace())[2];
            return traceElement.getLineNumber();
        }
    
        // 当前时间
        public static String _TIME_() {
            Date now = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
            return sdf.format(now);
        }
    
        // 把string转换成date
        public static Date stringToDate(String date, String pattan) {
            DateFormat sf1 = new SimpleDateFormat("yyyyMMdd");
            DateFormat sf2 = new SimpleDateFormat(pattan);
            String sfstr = "";
            try {
                // sfstr = sf2.format(sf1.parse(date));
                sfstr = sf2.format(sf2.parse(date));
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
            DateFormat df = new SimpleDateFormat(pattan);
            Date d1;
            try {
                d1 = df.parse(sfstr);
                Calendar g = Calendar.getInstance();
                g.setTime(d1);
                return g.getTime();
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
            return null;
        }
        
        public static String strNow(){
            return new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
        }
        
        public static String strNowRand(){
            SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            Date dt = new Date();
            Integer i = (int) (100000000 + Math.random() * 100000000);
            return ft.format(dt) + String.format("%010d", i);
        }
        
        public static void log2file(String filepth){
            try {
                File tfile = new File(filepth + "logs/");
                if (!tfile.exists()) {
                    tfile.mkdir();
                }
    
                FileOutputStream out = new FileOutputStream(tfile.getPath()
                        + "/systemout" + strNow().substring(0, 8) + ".txt", true);
                FileOutputStream errout = new FileOutputStream(tfile.getPath()
                        + "/systemerrout" + strNow().substring(0, 8) + ".txt", true);
                
                PrintStream ps = new PrintStream(out);
                PrintStream pserr = new PrintStream(errout);
                System.setOut(ps);
                System.setErr(pserr);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
        
    }
  • 相关阅读:
    【C/C++开发】c++ 工具库 (zz)
    【机器学习】半监督学习
    【Python开发】Pycharm下的Anaconda配置
    【C/C++开发】emplace_back() 和 push_back 的区别
    【C/C++开发】容器set和multiset,C++11对vector成员函数的扩展(cbegin()、cend()、crbegin()、crend()、emplace()、data())
    【C/C++开发】C++11 并发指南三(std::mutex 详解)
    【C/C++开发】C++11 并发指南二(std::thread 详解)
    【C/C++开发】C++11 并发指南一(C++11 多线程初探)
    【C/C++开发】STL内嵌数据类型: value_type
    个股实时监控之综述
  • 原文地址:https://www.cnblogs.com/silencemaker/p/12632197.html
Copyright © 2020-2023  润新知