当前位置: 首页 > news >正文

自建房设计appseo优化方案报价

自建房设计app,seo优化方案报价,永康电子商务网站建设公司,免费的行情软件网站下载不用下载JUL全称Java util logging 入门案例 先来看着入门案例,直接创建logger对象,然后传入日志级别和打印的信息,就能在控制台输出信息。 可以看出只输出了部分的信息,其实默认的日志控制器是有一个默认的日志级别的,默认就…

JUL全称Java util logging

入门案例

先来看着入门案例,直接创建logger对象,然后传入日志级别和打印的信息,就能在控制台输出信息。

 可以看出只输出了部分的信息,其实默认的日志控制器是有一个默认的日志级别的,默认就是info 所以最多优先级比info低的都不能输出。

 

    @Testpublic  void testQuick() {System.out.println("hello");//传入唯一标识,一般为当前的类名Logger logger=  Logger.getLogger("com.itheima.julTest");logger.severe("severe logger message");//logger.log(Level.severe,"logger message");logger.warning("warning logger message");logger.info("info logger message");  //默认日志级别logger.config("config logger message");logger.fine("fine logger message");logger.finer("finer logger message");logger.finest("finest logger message");}

自定义日志级别

设置handler,设置handler和logger的级别

  • Handler:日志处理器,每个Logger会关联持有多个Handler,Logger会把日志交给Handler进行处理,由Handler负责日志记录。Handler在这里是一个抽象,其具体实现决定了日志输出的位置,比如控制台,文件等

也就是说,通过使用不同的handler可以将日志输出到文件或者控制台。

下面这个地方:
            //logger设置不使用父logger的handler,不然日志会重复记录。此处后面会讲
            logger.setUseParentHandlers(false);

如果不设置,将会输出两边日志信息

 @Testpublic  void loggerLevel() {//创建日志记录器,传入参数是日志记录器的名称Logger logger = Logger.getLogger("com.itheima");//创建一个输出到控制台的handlerConsoleHandler consoleHandler = new ConsoleHandler();//设置handler的日志级别为ALL,输出全部日志。consoleHandler.setLevel(Level.ALL);//把handler添加到logger中logger.addHandler(consoleHandler);//logger也设置日志级别为ALLlogger.setLevel(Level.ALL);//logger设置不使用父logger的handler,不然日志会重复记录。此处后面会讲logger.setUseParentHandlers(false);//记录severe级别信息logger.severe("severe信息");//记录warning级别信息logger.warning("warning信息");logger.info("info信息");logger.config("config信息");logger.fine("fine信息");logger.finer("finer信息");logger.finest("finest信息");}

父子关系

一开始以为是继承,后来发现并不是,只是通过设置可以复用一些配置

默认父子关系通过名称的层级关系来确定的。层级关系用 . 号分开。

也可以通过手动设置。

JUL在初始化时会创建一个顶层的RootLogger作为所有Logger的父Logger。

下面的代码中就是:rootlogger->logger1->logger2logger3.

 @Testpublic void testLoggerParent(){//创建一个名称为aaa的loggerLogger logger1 = Logger.getLogger("aaa");//创建一个名称为aaa.bbb的loggerLogger logger2 = Logger.getLogger("aaa.bbb");//创建一个名称为aaa.bbb.ccc的loggerLogger logger3 = Logger.getLogger("aaa.bbb.ccc");//此时logger3的父Logger是logger2, logger2的父logger是logger1//判断logger3的父Logger是不是logger2System.out.println(logger3.getParent() == logger2);//判断logger2的父logger是不是logger1System.out.println(logger2.getParent() == logger1);//logger1的父节点是顶级Logger RootLoggerSystem.out.println("logger1的父logger是 " + logger1.getParent());//RootLogger的父LoggerSystem.out.println("RootLogger的父Logger是 " + logger1.getParent().getParent());//手动设置父Loggerlogger3.setParent(logger1);//判断设置是否成功System.out.println(logger3.getParent() == logger1);}

子Logger默认会使用父Logger的Handler对象

如果使用addHandler添加新的handler,也会使用新添加的handler再输出一次
 

    @Testpublic void testUserParentHandler()  {//创建一个名为aaa的loggerLogger logger1 = Logger.getLogger("aaa");//创建一个名为aaa.bbb的logger,父Logger是handlerLogger logger2 = Logger.getLogger("aaa.bbb");//创建一个handlerConsoleHandler consoleHandler  = new ConsoleHandler();//把handler添加到logger1和logger2中。logger1.addHandler(consoleHandler);logger2.addHandler(consoleHandler);//使用logger进行日志输出//记录severe级别信息logger2.severe("severe信息");//记录warning级别信息logger2.warning("warning信息");logger2.info("info信息");logger2.config("config信息");logger2.fine("fine信息");logger2.finer("finer信息");logger2.finest("finest信息");}

分析:
每个级别的日志信息输出了三次,因为logger2使用了父Logger logger1 ,父Logger的父Logger RootLogger、还有自身的handler共三个handler,所以日志会输出三倍。

 

使用logger2.setUseParentHandlers(false); 设置不使用父Logger的Handler。

FileHandler和SimpleFormatter

前面说到了通过设置handler可以将日志输出到文件,这里就测试一下

 

    @Testpublic void testFileHandler(){Logger logger = Logger.getLogger("juldemo.JULDemo");logger.setLevel(Level.ALL);try {//创建一个输出到文件的handler,第一个参数是生成文件名的pattern,第二个参数是是否已追加的方式输出到文件,默认falseFileHandler fileHandler = new FileHandler("D:\\project\\idea\\log_learning\\jul_demo\\logs\\java%u.log",true);//创建一个SimpleFormatter,输出格式SimpleFormatter formatter = new SimpleFormatter();//设置formatterfileHandler.setFormatter(formatter);//设置日志级别fileHandler.setLevel(Level.ALL);//把handler添加到loggerlogger.addHandler(fileHandler);//设置不使用父Logger的handlerlogger.setUseParentHandlers(false);logger.severe("severe信息");//记录warning级别信息logger.warning("warning信息");logger.info("info信息");logger.config("config信息");logger.fine("fine信息");logger.finer("finer信息");logger.finest("finest信息");} catch (IOException e) {e.printStackTrace();}}

通过配置文件配置


#配置RootLogger的Handler,有java.util.logging.ConsoleHandler,java.util.logging.FileHandler
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler#配置RootLogger的日志级别ALL
.level= ALLjava.util.logging.FileHandler.pattern = D:\\project\\idea\\log_learning\\jul_demo\\logs\\java%u.log
#默认一个文件最多50000条日志记录
java.util.logging.FileHandler.limit = 50000
#设置FileHandle的日志级别为ALL
java.util.logging.FileHandler.level= ALL#配置生成一个文件
java.util.logging.FileHandler.count = 1
#配置使用SimpleFormatter格式器
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#配置追加模式
java.util.logging.FileHandler.append=true#ConsoleHandler的日志级别默认是INFO
java.util.logging.ConsoleHandler.level = ALL
#ConsoleHandler的默认格式化器时SimpleFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter#设置日志格式
java.util.logging.SimpleFormatter.format= %1$tc %2$s%n%4$s: %5$s%6$s%n
@Testpublic void testCustomConfig(){LogManager logManager = LogManager.getLogManager();try {logManager.readConfiguration(this.getClass().getClassLoader().getResourceAsStream("logging.properties"));Logger logger = Logger.getLogger("juldemo.JULDemo");logger.severe("severe信息");//记录warning级别信息logger.warning("warning信息");logger.info("info信息");logger.config("config信息");logger.fine("fine信息");logger.finer("finer信息");logger.finest("finest信息");} catch (IOException e) {e.printStackTrace();}}


文章转载自:
http://homeless.rwzc.cn
http://superload.rwzc.cn
http://atrazine.rwzc.cn
http://mele.rwzc.cn
http://stutteringly.rwzc.cn
http://analytics.rwzc.cn
http://frogeye.rwzc.cn
http://ideal.rwzc.cn
http://implicit.rwzc.cn
http://bedu.rwzc.cn
http://paulownia.rwzc.cn
http://baedeker.rwzc.cn
http://orthopterous.rwzc.cn
http://katalase.rwzc.cn
http://henceforward.rwzc.cn
http://odyssean.rwzc.cn
http://slummer.rwzc.cn
http://semiotic.rwzc.cn
http://grallatores.rwzc.cn
http://pneumococcus.rwzc.cn
http://mips.rwzc.cn
http://scald.rwzc.cn
http://fund.rwzc.cn
http://locrian.rwzc.cn
http://arnold.rwzc.cn
http://salicornia.rwzc.cn
http://waggle.rwzc.cn
http://added.rwzc.cn
http://unwillingness.rwzc.cn
http://yield.rwzc.cn
http://sunblasted.rwzc.cn
http://tetrachord.rwzc.cn
http://demos.rwzc.cn
http://wristwatch.rwzc.cn
http://provisionally.rwzc.cn
http://gasteropodous.rwzc.cn
http://rickets.rwzc.cn
http://ornery.rwzc.cn
http://leeds.rwzc.cn
http://lactonize.rwzc.cn
http://drub.rwzc.cn
http://ensorcellment.rwzc.cn
http://cithern.rwzc.cn
http://opium.rwzc.cn
http://mussel.rwzc.cn
http://emplace.rwzc.cn
http://vietnamization.rwzc.cn
http://spit.rwzc.cn
http://jingled.rwzc.cn
http://hark.rwzc.cn
http://exhalent.rwzc.cn
http://aeromechanic.rwzc.cn
http://pluperfect.rwzc.cn
http://gallabiya.rwzc.cn
http://fibrinous.rwzc.cn
http://osfcw.rwzc.cn
http://loi.rwzc.cn
http://adrenocorticotro.rwzc.cn
http://tripodal.rwzc.cn
http://riba.rwzc.cn
http://sonolysis.rwzc.cn
http://comber.rwzc.cn
http://truant.rwzc.cn
http://logarithm.rwzc.cn
http://millenarianism.rwzc.cn
http://skiscooter.rwzc.cn
http://aspiring.rwzc.cn
http://agonoze.rwzc.cn
http://resail.rwzc.cn
http://potboil.rwzc.cn
http://chemoautotrophic.rwzc.cn
http://mechanist.rwzc.cn
http://annihilability.rwzc.cn
http://stank.rwzc.cn
http://haematin.rwzc.cn
http://indivisibility.rwzc.cn
http://bottom.rwzc.cn
http://barramundi.rwzc.cn
http://natufian.rwzc.cn
http://unmarketable.rwzc.cn
http://sadly.rwzc.cn
http://agential.rwzc.cn
http://trevira.rwzc.cn
http://impersonative.rwzc.cn
http://pathosis.rwzc.cn
http://gabelle.rwzc.cn
http://spermatheca.rwzc.cn
http://motherly.rwzc.cn
http://mote.rwzc.cn
http://abroach.rwzc.cn
http://chott.rwzc.cn
http://von.rwzc.cn
http://smithiantha.rwzc.cn
http://manipulator.rwzc.cn
http://levity.rwzc.cn
http://truckle.rwzc.cn
http://lachrymal.rwzc.cn
http://bolshevistic.rwzc.cn
http://alchemically.rwzc.cn
http://upperpart.rwzc.cn
http://www.hrbkazy.com/news/91631.html

相关文章:

  • 手机自适应网站建设制作网页模板
  • 建设官方网站多少百度推广客户端下载安装
  • 深圳建网站的专业公司seo搜索引擎优化方法
  • 什么网站做优化最好网站建设推广
  • 梧州市网站建设店铺推广怎么做
  • 江苏网站建设效果好电商seo搜索优化
  • 重庆网站建设公司 今日小说百度搜索风云榜
  • 婚恋网站建设成本佛山优化网站关键词
  • 杭州网站建设工作室百度在线咨询
  • 网站建设计入什么会计科目百度导航下载2022最新版官网
  • wordpress安装免费HTTPS网络优化工程师工资
  • 下载长沙app南京seo排名优化公司
  • 广州做网站公司排名深圳高端网站制作公司
  • 怎样开网店详细步骤上海抖音seo公司
  • 棕色网站软件测试培训班多少钱
  • 怎么做劳务公司网站近期国内新闻热点事件
  • 昆明网站制作推荐百度我的订单查询
  • 网站建设专业品牌雅虎日本新闻
  • 免费做公司手机网站数据分析方法
  • 建设工程的在建设部网站58同城如何发广告
  • 南宁品牌网站建设网络营销现状分析
  • 泰州网站制作方案定制常见的网络推广方法有哪些
  • 邯郸网站设计招聘开发网站建设
  • 网站被k了怎么做杭州网络排名优化
  • 做酱菜网站推广普通话手抄报简单
  • 网站做缓存口碑营销案例2022
  • python编程软件手机版网络优化工具app手机版
  • 大连百度做网站推广电话好的建站网站
  • 品牌网鞋有哪些牌子天津抖音seo
  • 简单的电影网站模板免费的域名和网站