原文地址:https://blog.csdn.net/yulei_qq/article/details/77620772
做项目的时候,经常需要给应用打印日志,LOG4J是我们的不二选择,项目管理使用maven构建时,pom.xml配置如下
-
<!--日志 start-->
-
<dependency>
-
<groupId>log4j</groupId>
-
<artifactId>log4j</artifactId>
-
<version>1.2.17</version>
-
</dependency>
-
<dependency>
-
<groupId>org.slf4j</groupId>
-
<artifactId>slf4j-api</artifactId>
-
<version>1.7.25</version>
-
</dependency>
-
<dependency>
-
<groupId>org.slf4j</groupId>
-
<artifactId>slf4j-log4j12</artifactId>
-
<version>1.7.25</version>
-
<scope>test</scope>
-
</dependency>
-
<dependency>
-
<groupId>org.slf4j</groupId>
-
<artifactId>slf4j-simple</artifactId>
-
<version>1.7.25</version>
-
<scope>test</scope>
-
</dependency>
-
<!--日志end-->
log4j.properties配置样例如下
-
### set log levels ###
-
log4j.rootLogger=DEBUG
-
### direct log messages to stdout ###
-
log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
log4j.appender.A1.Target=System.out
-
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-
log4j.appender.A1.layout.ConversionPattern=%-2p %m%n
-
### direct messages to file framework.log ###
-
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
-
##log4j.appender.A2.File=D:/logs/resmanm.log
-
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
-
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
-
log4j.appender.A2.layout.ConversionPattern=%-5p(%10c{1}) %m%n
-
### application log config ###
-
#log4j.logger.com.linkage=ERROR,A2
-
log4j.logger.com.ch1=DEBUG,A1,A2
-
##log4j.logger.org.quartz.impl.StdSchedulerFactory=DEBUG,A1,A2
最后,附上一段定时器的demo,作为日志打印样例。
-
package com.ch1;
-
import org.quartz.*;
-
import org.quartz.impl.StdSchedulerFactory;
-
import org.slf4j.Logger;
-
import org.slf4j.LoggerFactory;
-
import java.util.Date;
-
import static org.quartz.DateBuilder.evenMinuteDate;
-
public class SimpleExample {
-
public void run () throws SchedulerException {
-
Logger log = LoggerFactory.getLogger(SimpleExample.class);
-
log.info("------- Initializing ----------------------");
-
SchedulerFactory sf = new StdSchedulerFactory();
-
Scheduler sched = sf.getScheduler();
-
log.info("------- Initialization Complete -----------");
-
// computer a time that is on the next round minute
-
Date runTime = evenMinuteDate(new Date());
-
log.info("------- Scheduling Job -------------------");
-
// define the job and tie it to our HelloJob class
-
JobDetail job = JobBuilder.newJob(HelloJob.class)
-
.withIdentity("job1","group1").build();
-
// Trigger the job to run on the next round minute
-
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1")
-
.startAt(runTime).build();
-
// Start up the scheduler (nothing can actually run until the
-
// scheduler has been started)
-
sched.start();
-
log.info("------- Started Scheduler -----------------");
-
// wait long enough so that the scheduler as an opportunity to
-
// run the job!
-
log.info("------- Waiting 65 seconds... -------------");
-
try {
-
// wait 65 seconds to show job
-
Thread.sleep(65L * 1000L);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
// shut down the scheduler
-
log.info("------- Shutting Down ---------------------");
-
sched.shutdown(true);
-
log.info("------- Shutdown Complete -----------------");
-
}
-
public static void main(String[] args) throws SchedulerException {
-
SimpleExample example = new SimpleExample();
-
example.run();
-
}
-
}
开发工具使用的是Idea,日志输出:
-
C:\Java\jdk1.8.0_144\bin\java "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2017.2.1\lib\idea_rt.jar=56553:D:\Program Files\JetBrains\IntelliJ IDEA 2017.2.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Java\jdk1.8.0_144\jre\lib\deploy.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\access-bridge-64.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\cldrdata.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\dnsns.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\jaccess.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\jfxrt.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\localedata.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\nashorn.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunec.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunjce_provider.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunmscapi.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunpkcs11.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\zipfs.jar;C:\Java\jdk1.8.0_144\jre\lib\javaws.jar;C:\Java\jdk1.8.0_144\jre\lib\jce.jar;C:\Java\jdk1.8.0_144\jre\lib\jfr.jar;C:\Java\jdk1.8.0_144\jre\lib\jfxswt.jar;C:\Java\jdk1.8.0_144\jre\lib\jsse.jar;C:\Java\jdk1.8.0_144\jre\lib\management-agent.jar;C:\Java\jdk1.8.0_144\jre\lib\plugin.jar;C:\Java\jdk1.8.0_144\jre\lib\resources.jar;C:\Java\jdk1.8.0_144\jre\lib\rt.jar;E:\cBSS微服务\demo\quartz_test\target\classes;C:\Users\yulei\.m2\repository\org\quartz-scheduler\quartz\2.2.3\quartz-2.2.3.jar;C:\Users\yulei\.m2\repository\c3p0\c3p0\0.9.1.1\c3p0-0.9.1.1.jar;C:\Users\yulei\.m2\repository\org\quartz-scheduler\quartz-jobs\2.2.3\quartz-jobs-2.2.3.jar;C:\Users\yulei\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\Users\yulei\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\yulei\.m2\repository\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar com.ch1.SimpleExample
-
log4j:WARN File option not set for appender [A2].
-
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
-
log4j:ERROR Either File or DatePattern options are not set for appender [A2].
-
log4j:ERROR No output stream or file set for the appender named [A2].
-
INFO ------- Initializing ----------------------
-
log4j:WARN No appenders could be found for logger (org.quartz.impl.StdSchedulerFactory).
-
log4j:WARN Please initialize the log4j system properly.
-
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
-
INFO ------- Initialization Complete -----------
-
INFO ------- Scheduling Job -------------------
-
INFO ------- Started Scheduler -----------------
-
INFO ------- Waiting 65 seconds... -------------
-
INFO ------- Shutting Down ---------------------
-
INFO ------- Shutdown Complete -----------------
-
Process finished with exit code 0