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

📄 logger.java

📁 JAVA实现的一个类库
💻 JAVA
字号:
package cn.edu.nju.software.sd.cll;// <editor-fold defaultstate="collapsed" desc=" UML Marker "> import java.util.ArrayList; // #[regen=yes,id=DCE.328B2622-127B-E8D6-421A-545DF3CFBBD4] import java.io.FileInputStream;import java.io.IOException;import java.util.Properties;/** * class Logger. *  It  seemes like the most important class. *   *    Implements the interface "LogSubject" ,as the 'WeatherData' class in  *  the observer pattern * @author SuSE * */public class Logger implements LogSubject { 	// <editor-fold defaultstate="collapsed" desc=" UML Marker ">     // #[regen=yes,id=DCE.098E40EE-ADD0-3BCB-1CF7-9C697F2F665B]    // </editor-fold>     private String Name;    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">     // #[regen=yes,id=DCE.1E9D2E61-EEAD-C64B-2DF8-8F814FCC3C4E]    // </editor-fold>     private Level level;    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">     // #[regen=yes,id=DCE.8FF2E1FE-2F03-4320-3ECD-1901AC6EF89E]    // </editor-fold>     private ArrayList <Appender> Appenders;               private String Destination="";        private Layout layout;        // <editor-fold defaultstate="collapsed" desc=" UML Marker ">     // #[regen=yes,id=DCE.8796A190-B545-7789-48E3-20CA9E2C76F1]    // </editor-fold>     /**     * Construct.     */    public Logger () {        Appenders=new ArrayList <Appender> ();    }    /**     * Construct.     * @param Name     */        public Logger (String Name) {                       Appenders=new ArrayList <Appender> ();            this.Name=Name;            this.setLayout(new PatternLayout("%m-%n"));            this.setLevel(Level.TRACE);            //  System.out.println(this.getLevel().toInt()+this.getLevel().toString());                       this.setDestination("Console");        }         /**         *  Operates on setlayout, the Layout value hidden         */    public void setLayout(Layout layout){				this.layout=layout;		for(int i=0;i<Appenders.size();i++) 		{			Appender aappend=(Appender)Appenders.get(i);						aappend.setLayout(layout); }	    }   	   	/**   	 *  getlayout, the Layout value hidden   	 * @return   	 */	public Layout getLayout() {		return layout;	}  //           // <editor-fold defaultstate="collapsed" desc=" UML Marker ">     // #[regen=yes,regenBody=yes,id=DCE.D5937A74-FD15-4424-B7F2-04AA3846CBD9]    // </editor-fold> 	/**	 * getName ,the Name value hidden	 */    public String getName () {        return Name;    }/** * setName ,the Name value hidden * @param val */    public void setName (String val) {        this.Name = val;    }       /**   * getLevel ,the Level value hidden   * @return   */    public Level getLevel () {        return level;    }    /**     * setLevel ,the Level value hidden     * @param level     */    public void setLevel (Level  level) {        this.level= level;    }     /**     * log function, call the method of Notify in the pattern of Observer pattern.     * @param mslevel     * @param message     */    public void log(Level mslevel,String message){    	     	     if(mslevel.toInt()<this.level.toInt())                {// System.out.println("No Rights to write!");		       return;                }            Notify(this,message);		 	}	/**	 * copy ,copy the value of Logger.	 * Some use of Default value	 * @param logger	 */	 	public void copy(Logger logger) {		 this.setLevel(logger.getLevel());		 this.setDestination(logger.getDestination());		 this.setLayout(logger.getLayout());	}  	 /**	  * setDestination function	  * to find the real Destination from the String in the file.	  * Something is hidden.	  * @param destination	  */          public void setDestination(String destination) {			// TODO Auto-generated method stub	    	 	    	 	this.clearAppenders();	    	 	seperateDestination(destination);        }                private void seperateDestination(String destination){        		    		this.Destination=destination;	    			    		String temp=destination;	    	//	this.destinationChanged=true;	    		 int i=temp.lastIndexOf(','); 	    	 	    			 if (i==-1)	    			 {	    				 setRealDestination(temp);	    				// System.out.println();	    				// System.out.println("a"+temp+"b");	    				// System.out.println();	    				 return;	    			 }	    			 else	    			 {	    				 seperateDestination(temp.substring(i+1));	    				 seperateDestination(temp.substring(0,i));	    			 }	    		         }			                 private void setRealDestination(String RealDestination){        	if (RealDestination.equalsIgnoreCase("Console"))        	{        		Register(new ConsoleAppender(this.getLayout()));        		//System.out.println(RealDestination);        	}        	else        		//System.out.println(RealDestination);        		Register(new FileAppender(this.getLayout(),RealDestination));        }    	private void clearAppenders() {		// TODO Auto-generated method stub		Appenders.clear();	}/** * getDestination,the Destination value hidden. * @return */	public String getDestination() {		// TODO Auto-generated method stub		return Destination;	}          @SuppressWarnings("unchecked")    private void AddAppender(Appender a){        Appenders.add(a);    }       /**    * ^To appender an object of Appender^    *     */    public void Register (Appender a) {      AddAppender(a);    }    /**     * To remove an object of Appender     */    public void Remove (Appender a) {        int i=Appenders.indexOf(a);        if (i>=0){            Appenders.remove(i);        }             }  /**   * Notify function ,to  traversal the AppayList.   */    public void Notify (Logger logger,String message) {        for (int i=0;i<Appenders.size();i++){        	//Weather station mode.            Appender appender=(Appender) Appenders.get(i);            appender.update(logger,message);                     }    }   /**   * getLogger function   * the entrance of the factory pattern.   * @param clazz   * @return   */    public static Logger getLogger (Class<?> clazz) {        return LoggerFactory.getLogger(clazz.getName());    }   /**    * getLogger function    * the entrance of the factory pattern.    * @param STRname    * @return    */    public static Logger getLogger (String STRname) {         return LoggerFactory.getLogger(STRname);    }  /**   * read the configuration file(s);   * the inputfile dir can be changed here.   *   * @return   */    protected boolean readConfig(){        String a="src/conf/parentLogger.properties";        String b="src/conf/implChildLogger.properties" ;                return (read(a)||read(b)) ;           }        @SuppressWarnings("static-access")	private boolean read(String fileLocation ){                Properties prop=new Properties();          //   dir.add("src/conf/parentLogger.conf" );               //  dir.add("src/conf/implChildLogger.conf" );              //   dir.          try{                        FileInputStream in=new FileInputStream(fileLocation);          prop.load(in);          in.close();                           //  System.out.println("a"+prop.getProperty("name"));         //  System.out.println("b"+this.getName());          if(prop.getProperty("name").equalsIgnoreCase(this.getName() ))            {                    	this.setName(prop.getProperty("name"))  ;        	//  System.out.println(this.getName());            String Str=prop.getProperty("level");                        this.setLevel(level.toLevel(Str));            //  System.out.println(this.getLevel().toInt()+this.getLevel().toString());                       this.setDestination(prop.getProperty("destination"));            //  System.out.println(this.getDestination());           this.setLayout(new PatternLayout(prop.getProperty("format")));          // System.out.println(prop.getProperty("format"));           //   System.out.println(this.getLayout().getSign());            prop.clear();          }          else              throw new IOException();                    // System.out.println( Name);         // System.out.println( Destination);           		 		} catch (Exception e) {                         			//System.out.println("Read Failed!");                        return false;		}		return true;                 	}    }

⌨️ 快捷键说明

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