1.在程序里面寫(xiě)死需要哪些log級(jí)別,使用哪些subscribe
import java.util.logging.*;
public class LoggingProgramSetPubSubpro
{
public static void main(String[] args)
{
Logger logger = Logger.getLogger("loggingTest");
logger.setLevel(Level.INFO);//這個(gè)設(shè)定最重要
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.OFF);//這個(gè)好像不起作用
logger.addHandler(consoleHandler);
logger.severe("嚴(yán)重訊息");
logger.warning("警示訊息");
logger.info("一般訊息");
logger.config("設(shè)定方面的訊息");
logger.fine("細(xì)微的訊息");
logger.finer("更細(xì)微的訊息");
logger.finest("最細(xì)微的訊息");
}
}
2.如何在配置文件里面改,好處是不用重新編譯原文件
import java.util.logging.*;
/**
說(shuō)明:我們可以在C:\Documents and Settings\yay目錄下面找到j(luò)ava0.log文件
它是一個(gè)xml格式的,
我們可以在${jdk}\jar\lib下面找到logging.properties文件,你可以在這里面修改
*/
public class LoggingPropertiesFile
{
public static void main(String[] args)
{
Logger logger = Logger.getLogger("loggingTest");
logger.severe("嚴(yán)重的信息");
logger.warning("警告信息");
logger.info("一般信息");
logger.config("設(shè)定方面的信息");
logger.fine("細(xì)微的信息");
logger.finer("更細(xì)微的信息");
logger.finest("最細(xì)微的信息");
}
}
3.使用log方法,使用自定義的Formatter
import java.util.logging.*;
/**
輸出格式是由java.util.logging.Formatter決定的
注意這里說(shuō)得這個(gè)Formatter是屬于哪里包里面的,不要搞混了
*/
public class LoggingLogMethod
{
public static void main(String[] args)
{
Logger logger = Logger.getLogger("loggingTest");
logger.setLevel(Level.ALL);
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.ALL);
logger.addHandler(consoleHandler);
try
{
//%h代表用戶主目錄
//%g代表自動(dòng)編號(hào)
FileHandler fileHandler=new FileHandler("%h/loggingHome%g.log");
fileHandler.setLevel(Level.ALL);
fileHandler.setFormatter(new YAYFormatter());
logger.addHandler(fileHandler);
}
catch (Exception e)
{
e.printStackTrace();
}
logger.log(Level.SEVERE, "嚴(yán)重訊息");
logger.log(Level.WARNING, "警示訊息");
logger.log(Level.CONFIG, "一般訊息");
logger.log(Level.CONFIG, "設(shè)定方面的訊息");
logger.log(Level.FINE, "細(xì)微的訊息");
logger.log(Level.FINER, "更細(xì)微的訊息");
logger.log(Level.FINEST, "最細(xì)微的訊息");
}
}
4.如何自定義java.util.logging.Formatter
import java.util.logging.*;
public class YAYFormatter extends Formatter
{
public String format(LogRecord logRecord)
{
return "LogRecord info: " + logRecord.getSourceClassName() +//就是哪個(gè)類里面用的了你
"\n" +"Level\t|\tLoggerName\t|\tMessage\t|\n" +
logRecord.getLevel() + //是SEVERE還是WARNING還是別的
"\t|\t" +
logRecord.getLoggerName() +//這個(gè)logger發(fā)布者
"\t|\t" +
logRecord.getMessage() + //消息內(nèi)容
"\t|\n\n";
}
}