<copy file="project1.jar" todir="복사할 디렉토리의 위치"/>그럼 이제 관리자에게 이메일을 자동전송 하도록 해보자. Ant에서 이를 수행하기 위해서는 JavaMail API가 있어야 한다.
<project name="TestProject" default="dist" basedir=".">Ant 프로젝트 페이지의 매뉴얼을 보면 사용할 수 있는 task들의 리스트를 볼 수 있다. 다만 mail 과 같은 몇몇 기능들은 추가적인 라이브러리가 필요하므로, 추가적인 세팅이 필요하다.
<description>
test project for ant example
</description>
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<target name="init">
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init" description="compile the source.">
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile" description="generate the distribution">
<mkdir dir="${dist}/lib"/>
<jar jarfile="${dist}/lib/TestProj.jar" basedir="${build}"/>
<copy file="${dist}/lib/TestProj.jar" todir="${dist}"/>
<mail mailhost="localhost" mailport="25" subject="Test Project distribiton generated.">
<from address="coder@bbb.com"/>
<to address="projmanager@ddd.net"/>
<message>JAR file generated at ${dist}.</message>
</mail>
</target>
<target name="clean" description="clean up">
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
"Logger 는 Appender 가 지정한 곳에 Layout 형식으로 로그를 기록한다"Logger
logger.setLevel(Level.INFO);코드내에 지정되어 있다면, 다음의 세 코드 중
logger.debug("debug 로그");debug 로그는 남지 않고 info 와 warn 로그만 남는다. 자바에서는 C와 같이 전처리기의 기능이 없기 때문에 #ifdef DEBUG와 같은 형태와 같이 디버깅 때와 릴리즈 때의 디버깅코드를 각각 별도로 생성할 수가 없다. 따라서 log4j의 이러한 기능은 로그관리에 있어서 상당히 편리하다.
logger.info("info 로그");
logger.warn("warning 로그");
'.'yyyy-MM: 매달 첫번째날에 로그파일을 변경한다.보다 자세한 내용은 아파치 api 문서를 참고하기 바란다.
'.'yyyy-ww: 매주의 시작싱 로그파일을 변경한다.
'.'yyyy-MM-dd: 매일 자정에 로그파일을 변경한다. (필자는 주로 이 옵션을 이용한다)
'.'yyyy-MM-dd-a: 자정과 정오에 로그파일을 변경한다.
'.'yyyy-MM-dd-HH: 매 시간의 시작마다 로그파일을 변경한다.
'.'yyyy-MM-dd-HH-mm: 매분마다 로그파일을 변경한다.
import java.io.*;참고자료
import org.apache.log4j.*;
public class Test {
public Test(){
initLog();
}
public void initLog(){
/////////////////////////////////////////
// log4j 설정
logger.setLevel(Level.INFO);
DailyRollingFileAppender appender = null;
Appender consoleAppender = null;
try {
String logPattern = "%r [%t] %-5p %c %x - %m %d{yyyy MMM dd HH:mm:ss, SSS} \n";
appender = new DailyRollingFileAppender( new PatternLayout(logPattern), "syslog.log", "'.'yyyy-MM-dd-HH-mm" );
consoleAppender = new ConsoleAppender(new PatternLayout(logPattern));
}
catch(IOException e){
e.printStackTrace();
System.out.println("로그설정에 문제가 있습니다. 실행권한 체크등을 해보길 바랍니다.");
System.exit(-1);
}
logger.addAppender(appender);
logger.addAppender(consoleAppender);
logger = Logger.getRootLogger();
logger.debug("LBSGateway 객체 생성");
/////////////////////////////////////////
}
public static Logger logger = Logger.getRootLogger();
public void go(){
for ( int I = 0; I < 3; I++)
new testThread().start();
}
public static void main(String[] args){
Test t = new Test();
t.go();
}
}
class testThread extends Thread {
public void run(){
while ( true )
{Test.logger.debug("Hello, DEBUG");
Test.logger.info("Hello, INFO");
Test.logger.warn("Hello, WARN");
Thread.sleep(5000);
}
}
}
[출처] [본문스크랩] ANT와 Log4J 활용|작성자 메멘토