// 4. 생성자 구현 privateMyLog(){ try { // 4-1. 인스턴스 생성 (파일이름, append 여부) logFile = new FileHandler(errorLog, true); warningFile = new FileHandler(warningLog, true); fineFile = new FileHandler(fineLog, true); } catch (IOException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } // 4-2. Log기록의 형식 지정 (SimpleFormatter : 기본 형식) logFile.setFormatter(new SimpleFormatter()); warningFile.setFormatter(new SimpleFormatter()); fineFile.setFormatter(new SimpleFormatter());
// 4-3. 로그 레벨 설정 // 모든 로그 레벨 기록 logger.setLevel(Level.ALL); // FileHandler마다 레벨을 다르게 설정할 수 있다. warningFile.setLevel(Level.WARNING); fineFile.setLevel(Level.FINE);;
// 4-4. 4-1에서 생성한 Handler 추가 logger.addHandler(logFile); logger.addHandler(warningFile); logger.addHandler(fineFile); }
// 4-5. getter 생성 publicstatic MyLog getLog(){ return instance; }
// 5. 로그 기록 남기는 함수 // logger에 설정한 레벨에 해당하는 log만 사용가능 publicvoidlog(String msg){ // logger가 finest level을 handle 할 수 있도록 addHandler를 해주었으므로 가능하다. logger.finest(msg); logger.finer(msg); logger.fine(msg); logger.config(msg); logger.info(msg); logger.warning(msg); logger.severe(msg); } // 5-1. fine level 메세지 출력함수 publicvoidfine(String msg){ logger.fine(msg); }
// 4. 생성자 구현 privateMyLog(){ try { // 4-1. 인스턴스 생성 (파일이름, append 여부) logFile = new FileHandler(errorLog, true); warningFile = new FileHandler(warningLog, true); fineFile = new FileHandler(fineLog, true); } catch (IOException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } // 4-2. Log기록의 형식 지정 (SimpleFormatter : 기본 형식) logFile.setFormatter(new SimpleFormatter()); warningFile.setFormatter(new SimpleFormatter()); fineFile.setFormatter(new SimpleFormatter());
// 4-3. 로그 레벨 설정 // 모든 로그 레벨 기록 logger.setLevel(Level.INFO); // FileHandler마다 레벨을 다르게 설정할 수 있다. warningFile.setLevel(Level.WARNING); fineFile.setLevel(Level.FINE);;
// 4-4. 4-1에서 생성한 Handler 추가 logger.addHandler(logFile); logger.addHandler(warningFile); logger.addHandler(fineFile); }
// 4-5. getter 생성 publicstatic MyLog getLog(){ return instance; }
// 5. 로그 기록 남기는 함수 // logger에 설정한 레벨에 해당하는 log만 사용가능 publicvoidlog(String msg){ // logger가 finest level을 handle 할 수 있도록 addHandler를 해주었으므로 가능하다. logger.finest(msg); logger.finer(msg); logger.fine(msg); logger.config(msg); logger.info(msg); logger.warning(msg); logger.severe(msg); } // 5-1. fine level 메세지 출력함수 publicvoidfine(String msg){ logger.fine(msg); }
############################################################ # Default Logging Configuration File # # You can use a different file by specifying a filename # with the java.util.logging.config.file system property. # For example java -Djava.util.logging.config.file=myfile ############################################################ ############################################################ # Global properties ############################################################ # "handlers" specifies a comma separated list of log Handler # classes. These handlers will be installed during VM startup. # Note that these classes must be on the system classpath. # By default we only configure a ConsoleHandler, which will only # show messages at the INFO and above levels. handlers= java.util.logging.ConsoleHandler # To also add the FileHandler, use the following line instead. #handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler # Default global logging level. # This specifies which kinds of events are logged across # all loggers. For any given facility this global level # can be overriden by a facility specific level # Note that the ConsoleHandler also has a separate level # setting to limit messages printed to the console. .level= INFO ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ # default file output is in user's home directory. java.util.logging.FileHandler.pattern = %h/java%u.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 # Default number of locks FileHandler can obtain synchronously. # This specifies maximum number of attempts to obtain lock file by FileHandler # implemented by incrementing the unique field %u as per FileHandler API documentation. java.util.logging.FileHandler.maxLocks = 100 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Limit the message that are printed on the console to INFO and above. java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # Example to customize the SimpleFormatter output format # to print one-line log message like this: # <level>: <log message> [<date/time>] # # java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n ############################################################ # Facility specific properties. # Provides extra control for each logger. ############################################################ # For example, set the com.xyz.foo logger to only log SEVERE # messages: # com.xyz.foo.level = SEVERE
if (studentName == null){ thrownew StudentNameFormatException("Name must not be null"); } if (studentName.split(" ").length > 3) { thrownew StudentNameFormatException("너무 긴 이름입니다."); }
this.studentName = studentName; }
public String getStudentName(){ myLog.fine("begin getStudentName"); return studentName; } }
생성자에는 Exception을 throws하지 않는다.
Custom Exception의 extends에 Exception이 아닌 IllegalArgumentException을 extends하여 핸들링할 수 있다.