반응형
https://myhappyman.tistory.com/138
1장에 이어 이번엔 스케줄러에 로그처리를 위해 log4j
설정을 진행해보겠습니다.
로그는 실제로 서버나 프로세스를 운용을 하면서 많은 정보를 남겨두어 버그나 문제가 발생하였을때, 원인을 분석할 수 있는 아주 유용한 정보가 될 수 있기에 설정과 처리에 따라 아주 유용한 데이터가 될 수도 있지만, 필요없는 모든 출력문구를 다 찍게해놓으면 분석도 힘들뿐더러 용량만 잔득 차지하는 데이터가 될 수도 있습니다.
로그 설정(log4j)
pom.xml
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
먼저 log4j
를 추가합니다.
log4j.properties
log4j에 사용할 설정파일을 java디렉토리에 생성하고 설정합니다.(패키지 안에 생성이 아닙니다.)
# Root logger option
#log4j.rootLogger=debug, stdout, logfile
log4j.rootLogger=info, stdout, logfile
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p (%C{2}:%L) - %m%n
# Direct log message to log file
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.File=C:/test/scheduler.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %5p (%C{2} - %M:%L) - %m%n
log4j.appender.logfile.Append=true
많은 옵션들 중에 log4j.appender.logfile.File
부분에 시스템에 출력할 위치를 지정합니다.
저는 C드라이브/test디렉토리에 출력되도록 설정하였습니다.
이후 App.java에 log를 찍어봅니다.
App.java
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import org.apache.log4j.Logger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import com.psw.exScheduler.scheduler.SchedulerTest;
public class App {
private static final Logger logger = Logger.getLogger(App.class);
public static void main(String[] args) {
logger.info("Applcation Start!!!");
// SchedulerFactory Create
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
try {
Scheduler scheduler = schedulerFactory.getScheduler();
JobDetail job = newJob(SchedulerTest.class)
.withIdentity("jobName", Scheduler.DEFAULT_GROUP)
.build();
// 5 seconds action
Trigger trigger = newTrigger()
.withIdentity("trggerName", Scheduler.DEFAULT_GROUP)
.withSchedule(cronSchedule("0/5 * * * * ?"))
.build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
} catch (Exception e) {
logger.error(e);
}
}
}
이클립스 콘솔창에 정상적으로 출력되는 모습을 볼 수 있습니다.
해당 디렉토리에도 log파일이 생성되었고 열어보면 이클립스 콘솔창에 찍었던 로그가 정상적으로 쌓인 모습을 볼 수 있습니다.
반응형
'JAVA' 카테고리의 다른 글
JAVA - Socket 통신( 메시지 주고 받기, 단순 문자열 ) (0) | 2020.05.27 |
---|---|
JAVA - Maven 프로젝트에서 스케줄러 구성하기(Mybatis 연결) - 3 (0) | 2020.05.26 |
JAVA - Maven 프로젝트에서 스케줄러 구성하기(Quartz) - 1 (0) | 2020.05.26 |
jstl - forEach를 사용하면서 스크립틀릿 사용하기(pageContext) (0) | 2020.05.18 |
JAVA - 두 날짜의 차이 일자 구하기 (2) | 2020.05.11 |