应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Java常用框架精讲4一文搞懂logback系统日志工具(附

  Hello,大家好。这里是老K分享的全网最完整的Java系列教程。
  程序员的维护调试都离不开系统日志,常用的系统日志工具包有log4j和logback。
  本期我们分享的是logback这个工具包。
  不过,logback和log4j之间有着千丝万缕的联系,这点我们之后再讲。
  这次先来看看logback。
  一、准备工作1。pom。xml
  在IDEA中新建maven项目后,第一步就是配置pom文件,我们这里主要展示需要导入的依赖,maven的其它配置可以参考我之前的文章,此处有传送门:《Java项目工程管理神器,构建框架必用Java常用框架精讲(二)》
  dependenciesdependencygroupIdorg。mybatisgroupIdmybatisartifactIdversion3。5。1versiondependencydependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdversion5。1。47versiondependencydependencygroupIdjunitgroupIdjunitartifactIdversion4。12versiondependencydependencygroupIdch。qos。logbackgroupIdlogbackclassicartifactIdversion1。4。5versiondependencydependenciesmybatis就是一个持久层框架,用来简化调用数据库数据的流程,也是本次demo的应用场景;mysqlconnectorjava是mysql对应java的接口,是java调用mysql所必须的依赖;junit是最常用的测试框架,在测试用例中运行代码是一个成熟的习惯;logbackclassic是logback工具包中的核心包,也是我们今天介绍的主要内容。2。配置MyBatis
  本次实战demo,我们会基于Mybatis的应用场景,所以我们需要配置一些关于MyBatis的设置:
  关于MyBatis相关的知识,本例只是点到为止,要了解Mybatis系统知识的或对本例中MyBatis有不理解的,可以移步到我直接介绍MyBatis的文章:《MyBatis精讲(一)MyBatis基础配置及持久层连接创建代码实战)》
  配置mybatisconfig。xml:lt;?xmlversion1。0encodingutf8?!DOCTYPEconfigurationPUBLICmybatis。orgDTDConfig3。0ENhttps:mybatis。orgdtdmybatis3config。dtdconfigurationsettingssettingnamemapUnderscoreToCamelCasevalueTruesettingsenvironmentsdefaultdevenvironmentiddevtransactionManagertypeJDBCtransactionManagerdataSourcetypePOOLEDpropertynamedrivervaluecom。mysql。jdbc。Driverpropertynameurlvaluejdbc:mysql:localhost:3306javasql?useUnicodetruecharacterEncodingutf8propertynameusernamevaluerootpropertynamepasswordvalue123456dataSourceenvironmentenvironmentsconfiguration上述内容为mybatis的基本配置,存储路径和各个标签的意义就不赘述了,有需要的可以到我之前写的文章查看。3。创建数据库
  这个步骤不一定要和我的内容一致,但为了达到比较好的演示效果,大家可以在自己的数据库中导入以下sql语句:DROPTABLEIFEXISTSemployee;CREATETABLEemployee(idintUNSIGNEDNOTNULLAUTOINCREMENT,namevarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb40900aiciNOTNULL,departvarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb40900aiciNOTNULL,salarydecimal(10,2)NOTNULL,ageintNOTNULL,PRIMARYKEY(id)USINGBTREE)ENGINEInnoDBCHARACTERSETutf8mb4COLLATEutf8mb40900aiciROWFORMATDynamic;DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(didintUNSIGNEDNOTNULLAUTOINCREMENT,departvarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb40900aiciNULLDEFAULTNULL,memberintNULLDEFAULTNULL,PRIMARYKEY(did)USINGBTREE)ENGINEInnoDBCHARACTERSETutf8mb4COLLATEutf8mb40900aiciROWFORMATDynamic;INSERTINTOemployeeVALUES(5001,赵乾,销售部,6000。00,28);INSERTINTOemployeeVALUES(5002,孙礼,销售部,7000。00,34);INSERTINTOemployeeVALUES(6001,周武,技术部,6500。00,27);INSERTINTOemployeeVALUES(6002,郑望,技术部,7500。00,40);INSERTINTOdepartmentVALUES(1,销售部,5);INSERTINTOdepartmentVALUES(2,技术部,6);4。编写测试用例
  最后一步是编写测试用例,一般是放置在。testjava路径下。importorg。apache。ibatis。io。Resources;importorg。apache。ibatis。session。SqlSession;importorg。apache。ibatis。session。SqlSessionFactory;importorg。apache。ibatis。session。SqlSessionFactoryBuilder;importorg。junit。Test;importjava。io。IOException;importjava。io。Reader;importjava。sql。Connection;importjava。sql。PreparedStatement;importjava。sql。ResultSet;publicclassMyBatisTest{TestpublicvoidtestSelect()throwsIOException{ReaderreaderResources。getResourceAsReader(mybatisconfig。xml);SqlSessionFactorysqlSessionFactorynewSqlSessionFactoryBuilder()。build(reader);SqlSessionsqlSessionnull;try{sqlSessionsqlSessionFactory。openSession();ConnectionconnectionsqlSession。getConnection();Stringsqlselectfromemployeeorderbyiddesclimit10;PreparedStatementstmtconnection。prepareStatement(sql);ResultSetrsstmt。executeQuery();while(rs。next()){System。out。println(rs。getString(name));}}catch(Exceptione){e。printStackTrace();}finally{if(sqlSession!null){sqlSession。close();}}}}上述测试用例代码,是MyBatis工具的标准写法,没有展开介绍的知识点,有需要可以翻看之前的文章,相关链接:《MyBatis精讲(一)MyBatis基础配置及持久层连接创建代码实战)》二、第一次尝试1。MyBatis的默认日志
  有了上述的准备,我们并且在pom。xml里配置好logback依赖,这时候运行测试用例,就能看到logging日志在console里输出了,内容如下:17:26:02。931〔main〕DEBUGorg。apache。ibatis。logging。LogFactoryLogginginitializedusingclassorg。apache。ibatis。logging。slf4j。Slf4jImpladapter。17:26:02。936〔main〕DEBUGorg。apache。ibatis。datasource。pooled。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。17:26:02。936〔main〕DEBUGorg。apache。ibatis。datasource。pooled。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。17:26:02。936〔main〕DEBUGorg。apache。ibatis。datasource。pooled。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。17:26:02。936〔main〕DEBUGorg。apache。ibatis。datasource。pooled。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。17:26:02。970〔main〕DEBUGorg。apache。ibatis。transaction。jdbc。JdbcTransactionOpeningJDBCConnectionSatDec0317:26:03CST2022WARN:EstablishingSSLconnectionwithoutserversidentityverificationisnotrecommended。AccordingtoMySQL5。5。45,5。6。26and5。7。6requirementsSSLconnectionmustbeestablishedbydefaultifexplicitoptionisntset。ForcompliancewithexistingapplicationsnotusingSSLtheverifyServerCertificatepropertyissettofalse。YouneedeithertoexplicitlydisableSSLbysettinguseSSLfalse,orsetuseSSLtrueandprovidetruststoreforservercertificateverification。17:26:03。371〔main〕DEBUGorg。apache。ibatis。datasource。pooled。PooledDataSourceCreatedconnection1497845528。17:26:03。371〔main〕DEBUGorg。apache。ibatis。transaction。jdbc。JdbcTransactionSettingautocommittofalseonJDBCConnection〔com。mysql。jdbc。JDBC4Connection59474f18〕郑望周武孙礼赵乾17:26:03。378〔main〕DEBUGorg。apache。ibatis。transaction。jdbc。JdbcTransactionResettingautocommittotrueonJDBCConnection〔com。mysql。jdbc。JDBC4Connection59474f18〕17:26:03。378〔main〕DEBUGorg。apache。ibatis。transaction。jdbc。JdbcTransactionClosingJDBCConnection〔com。mysql。jdbc。JDBC4Connection59474f18〕17:26:03。378〔main〕DEBUGorg。apache。ibatis。datasource。pooled。PooledDataSourceReturnedconnection1497845528topool。2。自定义日志格式
  以上是MyBatis运行后的默认日志格式,如果有需要调整日志格式,可以通过在。srcmainresources路径下新建logback。xml后进行设置。
  以下是标准化配置代码:lt;?xmlversion1。0encodingUTF8?configurationencoderpatternd{yyyyMMdd}〔thread〕3levellogger{12}msgnpatternencoderappenderrootleveldebugrootconfiguration、是标准化标签,不作介绍了;是输出源设置,其子标签是设置编码信息,就是用来设置日志格式模板的;就是用来设置日志格式模板的,模板语法会在后续内容中介绍;中的level是用来设置输出级别的,后续也会进行介绍;中用来设置日志的输出源,需要与标签中的name属性对应。
  配置好上述xml文件,再次输出日志,结果就会变成这样:20221203〔main〕DEBUGo。a。i。l。LogFactoryLogginginitializedusingclassorg。apache。ibatis。logging。slf4j。Slf4jImpladapter。20221203〔main〕DEBUGo。a。i。d。p。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。20221203〔main〕DEBUGo。a。i。d。p。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。20221203〔main〕DEBUGo。a。i。d。p。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。20221203〔main〕DEBUGo。a。i。d。p。PooledDataSourcePooledDataSourceforcefullyclosedremovedallconnections。20221203〔main〕DEBUGo。a。i。t。j。JdbcTransactionOpeningJDBCConnectionSatDec0317:39:08CST2022WARN:EstablishingSSLconnectionwithoutserversidentityverificationisnotrecommended。AccordingtoMySQL5。5。45,5。6。26and5。7。6requirementsSSLconnectionmustbeestablishedbydefaultifexplicitoptionisntset。ForcompliancewithexistingapplicationsnotusingSSLtheverifyServerCertificatepropertyissettofalse。YouneedeithertoexplicitlydisableSSLbysettinguseSSLfalse,orsetuseSSLtrueandprovidetruststoreforservercertificateverification。20221203〔main〕DEBUGo。a。i。d。p。PooledDataSourceCreatedconnection1431467659。20221203〔main〕DEBUGo。a。i。t。j。JdbcTransactionSettingautocommittofalseonJDBCConnection〔com。mysql。jdbc。JDBC4Connection5552768b〕郑望周武孙礼赵乾20221203〔main〕DEBUGo。a。i。t。j。JdbcTransactionResettingautocommittotrueonJDBCConnection〔com。mysql。jdbc。JDBC4Connection5552768b〕20221203〔main〕DEBUGo。a。i。t。j。JdbcTransactionClosingJDBCConnection〔com。mysql。jdbc。JDBC4Connection5552768b〕20221203〔main〕DEBUGo。a。i。d。p。PooledDataSourceReturnedconnection1431467659topool。
  经过上述设置,日志开头变成了日期,而执行位置logger被裁剪了,父目录用首字母表示了。3。模板语法
  基础语法是command{parameter}。变量是通过加命令符的格式实现的;通过在变量名后面添加{}加参数的形式,设置变量的表现现实;{}和参数不是必须的。
  以上例中的语法为例,对其变量进行说明:
  d{yyyyMMdd}〔thread〕5levellogger{12}msgn
  命令符
  输出内容
  说明
  d
  日期时间
  可以设置时间格式:y年、M月、d日、H时、m分、s秒、S毫秒等
  thread
  当前线程
  反应当前所在线程
  5level
  设置输出级别
  此处5表示对其格式为5字符。输出级别有:error错误、warn警报、info信息、debug调试、trace追踪,优先级从高到低。
  logger
  代码执行位置
  反应当前语句所在文件路径,参数中的数字是输出字符串长度上限,超过上限则父目录名以首字母表示
  msg
  日志内容
  n
  换行符
  三、调用lagback
  以上是在利用MyBatis默认配置,输出log日志的效果,下面我们提供一个demo,教你如何编写自己的日志内容:importorg。slf4j。Logger;importorg。slf4j。LoggerFactory;publicclassLogbackTest{publicstaticvoidmain(String〔〕args){LoggerloggerLoggerFactory。getLogger(LogbackTest。class);logger。info(HelloWorld);}}slf4j是logback的依赖,maven配置好logback后,会自动下载安装slf4j;Logger是日志输出实例,可以由LoggerFactory生成;通过调用Logger的info方法,可以输出INFO级别的日志;除了info,Logger还有error、warn、debug、trace等方法,可以调用相应级别的输出;
  上述代码运行后得到的结果是:20221203〔main〕INFOLogbackTestHelloWorld
  您可以参考上例实例化一个Logger,然后在你程序需要的位置,通过logger的API方法输出指定级别的日志。
  以上,就是我们的常用系统日志工具logback的全部内容了。
  本期的内容较多,建议可以收藏这篇文章,多读几遍慢慢消化。
  如果你对老K分享的内容有任何疑问,欢迎随时在评论区留言或者私信我。
  正在学习的小伙伴记得给老K一个赞哦,你的支持是我持续输出课程内容最大的动力!
  阅读推荐
  我也分享过其他关于如何学习Java的文章,有需要的小伙伴可以点击下方链接获取:
  《IT大佬推荐!学习Java的最优路径分享多个阶段的学习资源建议收藏》结束语
  我是专注于开发领域的老K玩代码,会持续生产关于如何学习编程语言的优质内容。
  如果你想学习Java编程,或者想精进你的Java编程能力,可以关注我。
  如果你对开发、编程有任何疑问或者有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。
  头条创作挑战赛

央视中的顶级文案,送给旅途中奋力奔跑的人们晨光1。勇敢的人,不是不落泪的人,而是愿意含着泪奔跑的人。《朗读者》2。你若决定灿烂,山无遮,海无拦。撒贝宁3。你要自己发光,而不是总是折射别人的……道与术道为战略术为战术内部不传平台算法解析(流量池机制)算法概述你要和平台打交道,那么肯定要知道平台在关心什么。就好像你和女孩子谈恋爱,要知道这个女孩子喜欢什么样的男生,爱什么,关心什么。你知道她的喜好,谈恋爱成功……输球后,队长吴曦一句很开心惹恼球迷,网友洛国富在道歉吴曦赛后很开心说辞激怒球迷,网友:你还有国家荣誉感吗?今天凌晨,国足2:3沙特,遗憾收获一场失利。这场比赛队长吴曦表现尚可,最后阶段打进一粒进球,并且以7。4分获评全队最……我去!什么情况?杜兰特距离加盟湖人只差一步之遥了?可能大部分球迷都没有想到欧文会执行最后一年的球员选项,更没有想到随后杜兰特会向篮网提出交易申请。目前来看这位12届全明星离开篮网似乎是板上钉钉了。在潜在的下家中,目前来看……假期堵车时这样开可以省一箱油五一小长假即将来临,大家已经迫不及待出去,浪迹天涯寻找诗与远方了?不急,因为逢假必堵!家门口堵车、环线堵车、高架桥堵车、高速路更堵车堵车让人烦躁也就算了,关键还费钱呐!每……神秘海域失落遗产合集Steam页面上线明年发售今天又有一款索尼PS主机独占的游戏登陆Steam平台,那便是在前几个月的PlayStationShowcase直播活动中,索尼正式公布的《神秘海域:盗贼遗产合集》,此前本作已经……星星故乡本周星空指数发布1月17日1月23日1月17日至1月23日天气情况1月17日农历十二月十五星期一天王星视赤纬最难。视赤纬1442。01月18日农历十二月十六星期二望,年度最小满月,距离地球……当巴特勒轰下25815时,你才会发现詹姆斯的可怕之处在今日热火vs奇才的比赛中,热火控卫洛瑞缺阵,巴特勒承担起了组织球队的工作,他很好的完成了自己的任务,送出了15个助攻,另外他在得分、篮板上也有给力贡献,此战他16投8中,轰下……歌手高枫28岁才走红,34岁突然离世,父母至今无法走出丧子之2002年8月31日,歌手高枫的新专辑《美丽新世界》正式发布,歌迷们在高兴的同时,拿到手的专辑也让他们心里有些奇怪。专辑的封面上,是高枫的照片,底色是黑色的,看着有些压抑。……暗黑破坏神不朽新手开荒建议新手注意事项与玩法技巧《暗黑破坏神不朽》的游戏内容很多,初入游戏的玩家可能不知道怎么快速上手,今天给大家带来一篇《暗黑破坏神不朽》新手开荒建议,希望能够帮助到各位。作为新手玩家,前期在升级的同……吉利远程E5L纯电动面包车,续航280公里,1毛多一公里国内油价终于迎来了五连涨,95号汽油正式的宣布进入了9元时代,,在油价居高不下的情况下,新能源物流汽车可以说迎来了发展良机。近几年来随着城市物流配送业快速发展,市场对新能……林子祥与吴正元离婚27年他50岁娶前妻闺蜜,她独自带3娃生活01hr铁肺歌手林子祥,相信大家都并不陌生,他自从出道以来为我们带来了许多经典的歌曲:《在水中央》、《抱紧眼前人》等等,有一些曲调现在听起来依然让人们津津乐道,乐享其中。……
人体器官衰老的时间表来啦,请查收!人体本身就是一个复杂的机器,每个器官、部位都有最初的设计使用寿命。如果我们能找到延长零件使用寿命的方法,就能减少机器的损耗和故障。那有没有能够延长身体器官使用寿命的方法呢……围炉享大餐长城观日出山间泡温泉,古北水镇里到处有年味无论初一暖阳、初二大风,还是初三寒潮、初六回暖,整个春节假期,长城脚下获评北京首批旅游度假区称号的北京密云古北水镇(司马台长城)国际旅游度假区,迎来了众多京内外游客。景区旗下酒……新一代焊门员出现,天玑90001亿120W5000mA,价格声明:原创不易,禁止搬运,违者必究!有关注手机市场的用户,就会发现在这个领域,网友经常用到的一些词语,天花板、价格屠夫、守门员焊门员、机皇等等。这里面都有自己的含义,这些……特别成熟的高级文案没关系的,大家都会做错选择,会莫名其妙的掉眼泪,走在路上会突然崩溃,但这并不影响我们去看看晚霞,再次爱上这个世界。遇见错的人会消耗你,而遇见对的人会治愈你,成年人最好的自……日乒主力大爆发!轰110,国乒双线作战马龙孙颖莎遇强敌北京时间3月13日,WTT新加坡大满贯赛事第三个比赛日,日本主力选手早田希娜以3:0击败魏睿萱晋级还轰出了11:2的悬殊比分,另外由于WTT多哈赛也已经开打,所以国乒需要双线作……Intel独立显卡突然冒出第三款!媲美RTX3060?一直以来,IntelArc锐炫家族的第一款高性能独立显卡DG2Alchemist都有两个核心,一个是512单元大核心,性能有望媲美RTX3070,另一个是128单元小核心,性能……这种有毒饰品你还在给孩子戴吗?不仅会变笨还可引发重疾这种有毒的饰品你还在给孩子戴吗?日前,某测评网站鉴别了一批银饰品,结果大多检出铅含量超标。让孩子变笨的银手镯相关话题也第一时间引起网友热议。要知道,铅超标轻则影响智力,让……房车旅行好在哪里?高净值人群炫富新方式?疫情的封闭加速了户外运动和潮流在国内的发展,近来冲浪、滑雪、露营,房车持续高烧不退,中产们可谓是被户外运动安排得明明白白。而脱离了传统旅游业的露营和房车,更是折射并满足了年轻人……80岁老人喝了40年的可乐,他的健康状况,连医生都不敢相信一位80岁的老人,他喝了40年的可乐,一杯可乐他一口就喝完了,碳酸的刺辣完全没有影响他。他以可乐为生,没有可乐他将无法生活,这到底是怎么回事呢?他的老伴说,村里能卖……首搭MT9679,4000ANSI及画质增强技术,当贝X5成欢迎来到智能硬件分享馆,馆主聊投影仪!今天为大家点一首尤长靖好听的歌《人间四季》,下一期想听什么歌可以在评论区点歌哦!随着大家观影需求的提升,许多投影品牌纷纷在春季推出自……冬季皮肤干燥老的快,有条件多吃这5种食物冬季皮肤干燥老得快,有条件多吃这5种食物,维生素含量高,对皮肤好冬天的天气是出了名的干燥,若是处在南方,皮肤会觉得很不耐受,加上天气的寒冷,甚至会感觉皮肤干燥干裂,特别是……如何帮助孩子消除牙科恐惧症?牙科恐惧症是指一组与牙科诊疗相关的异常心理、生理及行为状态,表现为患者在治疗前、治疗期间的紧张、焦虑、恐惧等心理状况,甚至出现不能自控的情绪和行为。患者还会出现避医行为,不接受……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网