11.5.2 高级日志 日志等级:设置日志名称与包名类似,但是不存在约束实际的权限关系,它的作用在于属性共享。 比如setLevel: public class Main { public static void main ( String [] args ) { Main solu
11.5.2 高级日志
日志等级:设置日志名称与包名类似,但是不存在约束实际的权限关系,它的作用在于属性共享。
比如setLevel:
public class Main {public static void main(String[] args) {
Main solution = new Main();
Logger logger = Logger.getLogger("com.a.b");
Logger loggerParent = Logger.getLogger("com.a");
loggerParent.setLevel(Level.WARNING);
logger.info("123");
loggerParent.info("123");
}
}
修改一下,屏蔽INFO级别日志:
public class Main {public static void main(String[] args) {
Main solution = new Main();
Logger logger = Logger.getLogger("com.a.b");
Logger loggerParent = Logger.getLogger("com.a");
logger.setLevel(Level.WARNING);
logger.info("logger");
loggerParent.info("loggerParent");
}
}
父级别可以正常打印
setLevel 这个功能其实就是一种日志过滤的功能,它的作用是屏蔽它的等级以下的日志,日志级别如下:
严重:SEVERE
警告:WARING
消息:INFO
配置:CONFIG
好的:FINE
较好:FINER
最好:FINEST
另外,Level.OFF 表示关闭日志。通常只需要前3个级别(其实常见的其他框架级别是 error/warn/info/debug,类似,一般只用区分到这个程度),不改控制台就试试输出到文件:
public class Main {public static void main(String[] args) throws IOException {
Main solution = new Main();
solution.test(new String[]{"123","12345"});
}
private int test(String[] args) throws IOException {
Logger logger = Logger.getLogger(getClass().getName());
FileHandler handler
= new FileHandler("logs.txt");
handler.setFormatter(new SimpleFormatter());
logger.addHandler(handler);
logger.setLevel(Level.FINER);
String clazzName = getClass().getName();
String methodName = Thread.currentThread() .getStackTrace()[1].getMethodName();
Object[] arr = null;
if(args!=null){
arr = Arrays.copyOf(args,args.length);
}
logger.entering(clazzName,methodName, arr);
int c = 5;
logger.exiting(clazzName,methodName,c);
return c;
}
}
文本日志结果:
11.5.3 修改日志管理器配置
启动时修改配置文件:
Java -Djava.util.loggin.conf.file=configFile MainClass
进入路径 JAVA_HOME/jre/lib/找到 logging.properties
我们把这个日志随便拷贝到系统内任意一个路径,然后修改配置
包名.level=FINERjava.util.logging.ConsoleHandler.level = FINER
少量修改上一节的内容:为:
Logger logger = Logger.getLogger(getClass().getPackage().getName());这个位置修改一下配置:
-Djava.util.logging.config.file=路径\logging.propertiespublic class Main {public static void main(String[] args) throws IOException {
Main solution = new Main();
solution.test(new String[]{"123","12345"});
}
private int test(String[] args) throws IOException {
Logger logger = Logger.getLogger(getClass().getPackage().getName());
logger.setLevel(Level.FINER);
String clazzName = getClass().getName();
String methodName = Thread.currentThread() .getStackTrace()[1].getMethodName();
Object[] arr = null;
if(args!=null){
arr = Arrays.copyOf(args,args.length);
}
logger.entering(clazzName,methodName, arr);
int c = 5;
logger.exiting(clazzName,methodName,c);
return c;
}
}
运行:
可输出到控制台了
相关内容:选择 《Java核心技术 卷1》查找相关笔记
评论