간단하게... 로그파일 남기는  클래스를 만들어 보자.



작성할 로그파일기록 클래스는....
아래의 3가지 원칙을 지키는 것으로 하자.

1. 날짜별 로그파일 생성 : 로그파일은 1일 1건으로 생성시킨다.
2. 로그가 기록되는 시간을 표시한다.
3. 멀티쓰레드 환경에서 안전하게 동작한다.

1. 파일명은...
예를 들어 오늘이 2012년01월13일 이니까
"20120113_Log.Log"
뭐 이런식으로 생성하기로 하자.

2. 파일속 로그내용은...
"무궁화 꽃이 피었습니다."라는 내용을 로그에 남길때는
"[2012-01-13 17:04:59]:무궁화 꽃이 피었습니다."라고 남기면 되겠다.

3. 멀티쓰레드환경에서 안전하게 작동해야 하니까
대충 함수를 static synchronized로 만들어버리자.



이렇게 해서 클래스를 짜보면....
이렇게 나오겠네

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class FileLog {
    public static synchronized void writelog(String sLog)
    {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat formatter2 = new SimpleDateFormat("yyyyMMdd");
        String sToday = formatter.format(cal.getTime()); //for log-time
        String sDate = formatter2.format(cal.getTime()); //for file-name

        String sFileName = sDate +"_Log.Log";
        sLog = "[" + sToday + "]:" + sLog;

        try
        {
            BufferedWriter bw = new BufferedWriter(new FileWriter(sFileName, true));
            bw.write(sLog);
            bw.newLine();
            bw.close();
        }
        catch(IOException ie)
        {
            ie.printStackTrace();
        }
    }
}



추가적으로 고려할게 있는데...
현재는 하루1건의 로그파일만 생성하는데,
경우에 따라 하루에 로그가 100MB이상도 쌓이는 프로그램이 있다.
그럴때는 파일용량이 일정수준을 넘으면 새로은 로그파일을 만들어 쓰는게 좋다.
하루에 100MB가 쌓인다면 10MB정도로 잘라서 10개 정도를 생성시키는 것이 좋지 않겠는가~

그렇게 할려면 아래의 2가지 정도를 추가해주면 되겠다.
첫째, 마지막에 생성된 파일의 용량을 체크하는 로직 추가
둘째, 파일이름에 시간이나 순번을 넣어서 파일명이 겹치지 않게 처리하는 구문 추가

하지만 귀찮아서 그냥 여기까지.... ㅡ,.ㅡ;;
Google AdSense

+ Recent posts