:lol: 在实际项目中,一般会采用读取配置文件的方式进行log控制,最常用的是log4j.properties
第一步: 新建一个java工程,名字就叫: logExample1
第二步: 在src目录下新建log4j.properties文件
代码如下:
第三步:创建MyApp类,代码如下
第四步:创建Movie类, 代码如下
第五步: 结果在logExample1目录下生成out.log里面的内容是:
INFO [main] (MyApp.java:12) - application begin in main
WARN [main] (Movie.java:7) - Watch movie
INFO [main] (MyApp.java:17) - application end in main
如果要跟踪一个事件,单独为这个事件,设定日志。 那么需要一个Logger instance 穿插于各个class之间,这样在properites里如何去写呢?
log4j.properties:
MyApp.java
Movie.java
定义一个AppConstant.java
[code]package com.noodle.help;
public class AppConstant {
public final static String EVENT = "eventLogName";
}[/code]
这样,去运行以下,得到的结果是:
在out.log日志里输出:
INFO [main] (MyApp.java:12) - application begin in main
INFO [main] (MyApp.java:13) - this is the begin of the eventlog
WARN [main] (Movie.java:7) - Watch movie
INFO [main] (MyApp.java:16) - this is the end of the eventlog
INFO [main] (MyApp.java:17) - application end in main
而同时在控制台里输出了:
18-08-2009, 20:37:20, INFO , this is the begin of the eventlog
18-08-2009, 20:37:20, INFO , this is the end of the eventlog
:lol: Enjoy it!
第一步: 新建一个java工程,名字就叫: logExample1
第二步: 在src目录下新建log4j.properties文件
代码如下:
#define the root logger
#appender's name is file and the level is INFO
log4j.rootLogger = INFO, file
log4j.appender.file = org.apache.log4j.RollingFileAppender
#the output file's name and directory
log4j.appender.file.File = ./out.log
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
第三步:创建MyApp类,代码如下
package com.noodle.util;
import org.apache.log4j.Logger;
import com.noodle.pojo.Movie;
public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class);
public static void main(String[] args){
logger.info("application begin in main");
Movie movie = new Movie();
movie.watchIt();
logger.info("application end in main");
}
}
第四步:创建Movie类, 代码如下
package com.noodle.pojo;
public class Movie {
static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Movie.class);
public void watchIt(){
logger.warn("Watch movie");
}
}
第五步: 结果在logExample1目录下生成out.log里面的内容是:
INFO [main] (MyApp.java:12) - application begin in main
WARN [main] (Movie.java:7) - Watch movie
INFO [main] (MyApp.java:17) - application end in main
如果要跟踪一个事件,单独为这个事件,设定日志。 那么需要一个Logger instance 穿插于各个class之间,这样在properites里如何去写呢?
log4j.properties:
#define the root logger
#appender's name is file and the level is INFO
log4j.rootLogger = INFO, file
log4j.appender.file = org.apache.log4j.RollingFileAppender
#the output file's name and directory
log4j.appender.file.File = ./out.log
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.logger.eventLogName = INFO, eventlog
#Properties are case sensitive.
#log4j.logger.EVENTLOGNAME = INFO, eventlog
#that is unable to print the log messages in the console.
log4j.appender.eventlog = org.apache.log4j.ConsoleAppender
log4j.appender.eventlog.layout = org.apache.log4j.PatternLayout
log4j.appender.eventlog.layout.ConversionPattern = %d{dd-MM-yyyy}, %d{HH:mm:ss}, %-5.5p, %m %n
MyApp.java
package com.noodle.util;
import org.apache.log4j.Logger;
import com.noodle.help.AppConstant;
import com.noodle.pojo.Movie;
public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class);
static Logger eventlogger = Logger.getLogger(AppConstant.EVENT);
public static void main(String[] args){
logger.info("application begin in main");
eventlogger.info("this is the begin of the eventlog");
Movie movie = new Movie();
movie.watchIt();
eventlogger.info("this is the end of the eventlog");
logger.info("application end in main");
}
}
Movie.java
package com.noodle.pojo;
public class Movie {
static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Movie.class);
public void watchIt(){
logger.warn("Watch movie");
}
}
定义一个AppConstant.java
[code]package com.noodle.help;
public class AppConstant {
public final static String EVENT = "eventLogName";
}[/code]
这样,去运行以下,得到的结果是:
在out.log日志里输出:
INFO [main] (MyApp.java:12) - application begin in main
INFO [main] (MyApp.java:13) - this is the begin of the eventlog
WARN [main] (Movie.java:7) - Watch movie
INFO [main] (MyApp.java:16) - this is the end of the eventlog
INFO [main] (MyApp.java:17) - application end in main
而同时在控制台里输出了:
18-08-2009, 20:37:20, INFO , this is the begin of the eventlog
18-08-2009, 20:37:20, INFO , this is the end of the eventlog
:lol: Enjoy it!