>

단일 로그 파일에 예외를 추가하고 싶습니다. 소스 코드에서 다음 코드는 여러 번 사용됩니다 ... 모든 예외를 단일 파일에 저장하고 싶지만 exception.log, exception.log와 같은 여러 파일을 만듭니다. .1, exception.log.1.lck, exception.log.2 등 ...

Date dir1 = new java.util.Date(System.currentTimeMillis());
String baseDir1 = "/home/gaurav/usr/logs/ESBegin/";
String newDir1 = createDateBasedDirectory(baseDir1, dir1);
System.out.println("Exception :: " + e.getMessage());
Logger logger = Logger.getLogger("MyLog");  
FileHandler fh;  
try {  
    // This block configure the logger with handler and formatter  
    fh = new FileHandler(newDir1+"/exception.log");  
    logger.addHandler(fh);
    SimpleFormatter formatter = new SimpleFormatter();
    fh.setFormatter(formatter);  
    // the following statement is used to log any messages  
    logger.info(e.getMessage()); 
} catch (SecurityException ex) {  
    ex.printStackTrace();  
} catch (IOException ex) {  
    ex.printStackTrace();  
} 

  • 답변 # 1

    해당 메소드를 호출 할 때마다 새 FileHandler를 작성하고 대신 클래스 인스턴스 변수로 작성하기 때문입니다. 나는 그것을 테스트하고 작동합니다 :

    import java.io.IOException;
    import java.util.Date;
    import java.util.logging.FileHandler;
    import java.util.logging.Logger;
    import java.util.logging.SimpleFormatter;
    public class Main {
        private static String newDir1 = "C:\\Users\\pavel.orekhov\\Desktop";
        private static FileHandler fh;
        static {
            try {
                fh = new FileHandler(newDir1 + "\\exception.log", 0, 1, true);
            } catch (IOException | SecurityException e) {
            }
        }
        static void test() {
            Date dir1 = new java.util.Date(System.currentTimeMillis());
            Logger logger = Logger.getLogger("MyLog");
            logger.addHandler(fh);
            SimpleFormatter formatter = new SimpleFormatter();
            fh.setFormatter(formatter);
            logger.info("test");
        }
        public static void main(String[] args) {
            // all these write to the same file
            test();
            test();
            test();
            test();
        }
    }
    
    

    내가 작성한 코드는 다음과 같습니다.

    import java.io.IOException;
    import java.util.Date;
    import java.util.logging.FileHandler;
    import java.util.logging.Logger;
    import java.util.logging.SimpleFormatter;
    public class Main {
        static void test() {
            Date dir1 = new java.util.Date(System.currentTimeMillis());
            String newDir1 = "C:\\Users\\pavel.orekhov\\Desktop";
            Logger logger = Logger.getLogger("MyLog");
            FileHandler fh;
            try {
                fh = new FileHandler(newDir1 + "\\exception.log", 0, 1, true);
                logger.addHandler(fh);
                SimpleFormatter formatter = new SimpleFormatter();
                fh.setFormatter(formatter);
                logger.info("test");
            } catch (SecurityException | IOException ex) {
                ex.printStackTrace();
            }
        }
        public static void main(String[] args) {
            test(); // creates file 1
            test(); // creates file 2
            test(); // creates file 3
            test(); // creates file 4
        }
    }
    
    

    이것은 test() 에 대한 호출만큼 많은 파일을 생성합니다  방법.

관련 자료

  • 이전 sql server - SQL 정의 테이블 열 대 행
  • 다음 NA 삭제시 R 문제 | NA가 감지되지 않아 isna에서 찾을 수 없습니다