经常只是使用log4,没有对java的log进行深入研究,趁着今日整理source的机会,把java log这方面整理一下。
找到位于jre/lib下的logging.properties
############################################################
# Default Logging Configuration File
#
# You can use a different file by specifying a filename
# with the java.util.logging.config.file system property.
# For example java -Djava.util.logging.config.file=myfile
############################################################
############################################################
# Global properties
############################################################
# "handlers" specifies a comma separated list of log Handler
# classes. These handlers will be installed during VM startup.
# Note that these classes must be on the system classpath.
# By default we only configure a ConsoleHandler, which will only
# show messages at the INFO and above levels.
handlers= java.util.logging.ConsoleHandler
# To also add the FileHandler, use the following line instead.
#handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers. For any given facility this global level
# can be overriden by a facility specific level
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.
.level= INFO
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
# default file output is in user's home directory.
#java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.pattern = %h/%s.log//文件名字和路径,默认为用户的根目录
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
com.xyz.foo.level = SEVERE
测试:
import java.io.IOException;
import java.util.Locale;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class testMain {
public static void main(String[] args) {
try {
// testGetPropertyUtil
//testMain.testGetPropertyUtil();
testMain.testLog();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testLog() throws SecurityException, IOException {
Logger loger =Logger.getLogger("test.Test");
FileHandler fh = new FileHandler("c:/test.log",true);//方法返回日志文件存放的路径
loger.addHandler(fh);
loger.setLevel(Level.ALL);
SimpleFormatter sf = new SimpleFormatter();
fh.setFormatter(sf);
loger.log(Level.INFO, "这是一个消息");
loger.log(Level.WARNING, "这是一个警告");
loger.log(Level.SEVERE, "这是一个服务器消息");
}
}
运行后再控制台打印如下信息:
2012-2-15 16:45:44 testMain testLog
信息: 这是一个消息
2012-2-15 16:45:44 testLog
警告: 这是一个警告
2012-2-15 16:45:44 testMain testLog
严重: 这是一个服务器消息
同时在生产c:/test.log文件,里面是同样的内容。
2: 使用Jakarta Commons Logging(JCL)
JCL是所有的Java日志提供一个统一的接口,开发人员可以自己实现该接口,或者调用Log4J,AvalonLogKit JDK1.4来实现。同时本身也提供一个简单的SimpleLog实现类。配置文件为commons-logging.properties
在该配置文件中指定具体的实现类。比如,使用log4J的时候可以如下配置:
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
具体如何使用,google 百度可以找出一大堆。