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

网站建设基本技术北京 建网站

网站建设基本技术,北京 建网站,卫龙的网站做的污污分,担路做网站文章目录 一.什么是Logback1.1 初识Logbcak 二.Logbcak的结构三.日志的级别四.配置组件详解4.1 logger 日志记录器属性的介绍如何在配置文件里配置 4.2 appender 附加器 配合日志记录器的输出格式4.2.1 控制台附加器4.2.2 文件附加器4.3.3滚动文件附加器 4.3 Filter: 过滤器用于根据指定的条件过滤日志。 五.springboot整合logbcak 一.什么是Logback Logback 旨在作为流行的 log4j 项目的继承者。它是由 log4j 的创始人 Ceki Gülcü 设计的。它建立在十年来设计工业级测井系统的经验之上。由此产生的产品即 logback比所有现有的日志系统速度更快占用空间更小有时甚至相差很大。同样重要的是logback 提供了其他日志系统所缺少的 独特且相当有用的功能。 看了上述文字的说明我们是否对logback还有些困惑我们可以开始使用logback的第一个程序来认识一下logbcak 1.1 初识Logbcak 1.创建Maven项目 2.增加maven依赖 dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.11/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.36/version/dependency3.新建第一个helloword程序 package com.gongli;import org.slf4j.Logger; import org.slf4j.LoggerFactory;/*** Hello world!**/public class App {private static final Logger logger LoggerFactory.getLogger(App.class);public static void main(String[] args) {logger.info(hello world);} } 这段代码展示了如何使用日志记录器来记录程序的运行信息。它创建了一个名为 App 的类并在其中定义了一个 main 方法。在 main 方法中它使用 LoggerFactory 类获取了一个日志记录器对象并使用该对象记录了一条信息日志。 二.Logbcak的结构 认识到第一个日入门日志以后我们就开始认识Logbcak的结构。如图 Logger, Appender 和 Layouts Logback 构建在三个主要的类上LoggerAppender 和 Layouts。这三个不同类型的组件一起作用能够让开发者根据消息的类型以及日志的级别来打印日志。 Logger 类作为 logback-classic 模块的一部分。Appender 与 Layouts 接口作为 logback-core 的一部分。作为一个通用的模块logback-core 没有 logger 的概念。 三.日志的级别 在具体了解日志配置文件之间我们必须先知道日志的级别是什么 日志级别用于控制哪些日志会被记录。日志级别从高到低依次为 FATAL: 致命错误表示程序无法继续运行。 ERROR: 错误表示程序发生了错误但仍能继续运行。 WARN: 警告表示程序可能发生错误但不影响程序的正常运行。 INFO: 信息用于记录程序的正常运行状态。 DEBUG: 调试用于记录程序的运行细节。 TRACE: 跟踪用于记录程序的运行轨迹。 大小从上往下依次减小这条规则是 logback 的核心。它假设级别按如下顺序排序 TRACE DEBUG INFO WARN ERROR。 例如以下程序我设父类日志的级别为error 你猜一下子类的日志级别info会正常输出吗 public static void main(String[] args) {//我设父类的日志级别为Infoch.qos.logback.classic.Logger logger1( ch.qos.logback.classic.Logger) LoggerFactory.getLogger(com);logger1.setLevel(Level.ERROR);logger1.info(hello world);}答案是显然不会 我们再来做一个实验如果我们指定了根的日志级别也指定了根的子类级别。你想想看我们的日志级别是遵守根的还是遵守子类的呢话不多说我们来试试看。 public static void main(String[] args) {//我设父类的日志级别为Infoch.qos.logback.classic.Logger logger1( ch.qos.logback.classic.Logger) LoggerFactory.getLogger(com.gongli.App);ch.qos.logback.classic.Logger rootlogger( ch.qos.logback.classic.Logger) LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);rootlogger.setLevel(Level.WARN);logger1.setLevel(Level.INFO);System.out.println(logger1.getEffectiveLevel());logger1.trace(hello world);}事实证明在我子类设置的情况下我们会遵循子类的日志级别 从而我们得出一个结论如果子类包没设置级别就会往上一级找如果上一级也没设置就默认日志级别打印。 四.配置组件详解 4.1 logger 日志记录器 属性的介绍 每个记录器Logger的属性有两个属性 name属性:记录器的名称 level尾性(可选): 记录的级别允许的级别从低到高TRACE DEBUGINFO WARNERROR logger.setLevel() logger.getLevel(): logger.getEffectiveLevel() additivity属性(可选): 是否允许爱加打印日志true或false 说明: 1)如果记录器未设置level属性则该记录器的级别从上级记录器继承 2)如果想查看记录器的级别应该通过logger.getEffectiveLevel方法同时要将Logger转为 ch.qos.logback.classic.Logger类型如下: ch.gos.logbackclassic.Logger logger (ch.qos.logbackclassic.Logger) LoggerFactory.getLogger(App.class); 举一个代码的例子你们就懂我在说什么了 import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class App {private static final Logger logger LoggerFactory.getLogger(App.class);public static void main(String[] args) {// 设置 logger 的名称logger.setName(MyLogger);// 设置 logger 的级别logger.setLevel(Level.INFO);// 获取 logger 的级别Level level logger.getLevel();// 获取 logger 的有效级别Level effectiveLevel logger.getEffectiveLevel();// 检查 logger 的 additivity 属性boolean additivity logger.isAdditive();System.out.println(logger 的名称 logger.getName());System.out.println(logger 的级别 level);System.out.println(logger 的有效级别 effectiveLevel);System.out.println(logger 的 additivity 属性 additivity);} } 如何在配置文件里配置 使用logback-test.xml或 logback.xml进行配置 这里分为两步 1.新建一个logback.xml 文件内容如下 configuration xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocationhttp://www.padual.com/java/logback.xsdroot leveldebug // 设置root的/rootlogger namecom.aa levelerror/logger //声明一个记录器 /configuration2.编写java代码 public static void main(String[] args) {ch.qos.logback.classic.Logger rootlogger( ch.qos.logback.classic.Logger) LoggerFactory.getLogger(root);System.out.println(rootlogger.getEffectiveLevel());ch.qos.logback.classic.Logger logger( ch.qos.logback.classic.Logger) LoggerFactory.getLogger(com.aa);System.out.println(logger.getEffectiveLevel());} }4.2 appender 附加器 配合日志记录器的输出格式 Logback 将写入日志事件的任务委托给称为附加程序的组件。Appender 必须实现该日志记录器的 接口。 常用的附加器如下 控制台附加器:ch.qos.logback.core.ConsoleAppender 文件附加器: ch.qos.logback.core.FileAppender 滚动文件附加器: ch.gos.logback.core.rolling.RollingFileAppender 4.2.1 控制台附加器 控制台附加器ch.qos.logback.core.ConsoleAppender的常用参数如下 name附加器的名称。 encoder编码器。 target目标。默认为 System.out。 encoding编码。默认为 UTF-8。 immediateFlush是否立即刷新。默认为 true。 filter日志过滤器。 以下是这些参数的具体说明 name name 属性指定附加器的名称。名称用于标识附加器。 encoder encoder 属性指定编码器。编码器用于格式化日志。 target target 属性指定目标。目标用于指定日志输出的位置。默认为 System.out。 encoding encoding 属性指定编码。编码用于指定日志的编码格式。默认为 UTF-8。 immediateFlush immediateFlush 属性指定是否立即刷新。如果为 true则日志将在写入到控制台之前立即刷新。如果为 false则日志将在缓冲区满时刷新。 filter filter 属性指定日志过滤器。日志过滤器用于过滤日志。 例子 logback.xml文件配置如下 configuration xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocationhttp://www.padual.com/java/logback.xsd//这里就是声明控制台附加器appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoder //日志格式化格式pattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoder/appenderlogger namecom.gongli levelinfo//加入附加器appender-ref refSTDOUT //logger /configuration代码如下 public static void main(String[] args) {ch.qos.logback.classic.Logger logger1( ch.qos.logback.classic.Logger) LoggerFactory.getLogger(com.gongli.App);logger1.info(hello world);} }4.2.2 文件附加器 文件附加器ch.qos.logback.core.FileAppender的常用参数如下 name附加器的名称。 file日志文件的路径。 append是否追加日志。默认为 true。 encoder编码器。 rollingPolicy滚动策略。 filter日志过滤器。 以下是这些参数的具体说明 name name 属性指定附加器的名称。名称用于标识附加器。 file file 属性指定日志文件的路径。 append append 属性指定是否追加日志。如果为 true则日志将追加到现有文件中。如果为 false则日志将覆盖现有文件。 encoder encoder 属性指定编码器。编码器用于格式化日志。 rollingPolicy rollingPolicy 属性指定滚动策略。滚动策略用于控制日志文件的滚动方式。 filter filter 属性指定日志过滤器。日志过滤器用于过滤日志。 例子 logbcak.xml文件 configuration xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocationhttp://www.padual.com/java/logback.xsdappender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoder/appenderappender nameFile classch.qos.logback.core.FileAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoderfilemyfile.log/file//文档appendtrue/append //是否追加数据/appenderlogger namecom.gongli levelinfoappender-ref refSTDOUT /appender-ref refFile //logger /configurationjava代码 public static void main(String[] args) {ch.qos.logback.classic.Logger logger1( ch.qos.logback.classic.Logger) LoggerFactory.getLogger(com.gongli.App);logger1.info(hello world);} }4.3.3滚动文件附加器 这里要特别说明一下这几个参数 Logback 提供了多种滚动策略包括 SizeBasedRollingPolicy根据文件大小滚动日志文件。(ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy) TimeBasedRollingPolicy根据时间滚动日志文件。(ch.qos.logback.core.rolling.TimeBasedRollingPolicy) 说说他们之间的区别 区别 SizeBasedRollingPolicy 和 TimeBasedRollingPolicy 的主要区别在于滚动触发条件的不同。SizeBasedRollingPolicy 的滚动触发条件是文件大小而 TimeBasedRollingPolicy 的滚动触发条件是时间。 例如 appender nameROLLING_FILE classch.qos.logback.core.rolling.RollingFileAppenderfile/var/log/myapp.log/fileappendtrue/appendencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoderrollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicymaxFileSize10MB /maxFileSize/maxHistory30/maxHistory/rollingPolicy /appender 在上述配置中maxFileSize 属性指定日志文件的最大大小为 10MB。当日志文件的大小达到 10MB 时将会创建一个新的日志文件并将原来的日志文件重命名为 myapp.log.1。 appender nameROLLING_FILE classch.qos.logback.core.rolling.RollingFileAppenderfile/var/log/myapp.log/fileappendtrue/appendencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoderrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternmyapp.log.%d{yyyy-MM-dd}/fileNamePatternmaxHistory30/maxHistory/rollingPolicy /appender在上述配置中fileNamePattern 属性指定新日志文件的文件名模式为 myapp.log.yyyy-MM-dd。也就是说每天将会创建一个新的日志文件。 4.3 Filter: 过滤器用于根据指定的条件过滤日志。 过滤器是附加器的一个组件它用于决定附加器是否输出日志。一个附加器可以包合一个或多个过滤器。 每个过滤器都会返回一个枚举值可选的值: DENY、 NEUTRAL、ACCEPT 附加器根据过滤器返回值判断是否输出日志: DENY : 不输出日志 ACCEPT: 输出日志 NEUTRAL : 中立即不决定是否输出日志 常用的过滤器如下 LevelFilter(级别过滤器): 实现类 ch.qos.logback.classic.filter.LevelFilter ThresholdFilter(闽值过滤器): 实现类 ch.gos.logback.classic.filter.ThresholdFilter EvaluatorFilter(评估者过滤器): 实现类 ch.qos.logback.core.filter.EvaluatorFilter JaninoEventEvaluator过滤器: 实现类 ch.qos.logback.core.filter.EvaluatorFilter TurboFilter涡轮过滤器 DuplicateMessageFilter 重复消息过滤器 这里举一个简单的例子LevelFilter(级别过滤器) appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoderfilter classch.qos.logback.classic.filter.LevelFilterlevelINFO/levelOnMatchACCEPT/OnMatchonMismatchDENY/onMismatch/filterlogger namecom.gongli levelinfoappender-ref refSTDOUT //logger 具体说明 如果程序记录了一条 INFO 级别的日志由于其级别与 level 属性匹配会被 OnMatch 属性接受因此会输出到控制台。 如果程序记录了一条 DEBUG 级别的日志由于其级别低于 level 属性会被 onMismatch 属性拒绝因此不会输出到控制台。 五.springboot整合logbcak Spring Boot 默认使用 Logback 作为日志框架。要将 Logback 整合到 Spring Boot 项目中只需在项目的 pom.xml 文件中添加以下依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/dependency /dependencies 接下来需要在项目的 application.properties 文件中配置 Logback。Logback 的配置文件格式为 XML。可以使用以下示例来配置 Logback logging.configclasspath:my-logback.xml然后我们在resource下面新建my-logback.xml 文件内容如下 ?xml version1.0 encodingUTF-8? configurationappender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoder/appenderappender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderfilemyapp.log/fileencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n/pattern/encoderrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternmyapp.log.%d{yyyy-MM-dd}/fileNamePatternmaxHistory30/maxHistory/rollingPolicy/appenderlogger namecom.example.myapp levelDEBUGappender-ref refSTDOUT /appender-ref refFILE //loggerroot levelINFOappender-ref refSTDOUT //root/configuration 如果大家想深入了解logbcak建议去它的官网去看看内容给很多我把官网粘在这里里 https://logback.qos.ch/manual/introduction.html
http://www.w-s-a.com/news/519358/

相关文章:

  • 一个网站需要多少容量怎样免费设计网站建设
  • 建设工程交易中心网站12306的网站是哪个公司做的
  • 建设网站经营范围自己给公司做网站
  • 河北省住房建设厅政务网站网络营销推广的岗位职责有哪些
  • 上海网站建设优化价格孝义做网站的公司
  • 哪个公司网站做的最好义乌 网站 制作
  • 百度站长工具综合查询wordpress 上传pdf
  • 旅游短租公寓网站建设深圳龙岗招聘网
  • 做海淘是在哪个网站网络查控系统设计方案
  • o2o网站建设代理商微信公众号开发文档
  • 网站设计课程总结关于网站备案的公告
  • 网站建设与运营意义到哪查找网站域名
  • 网站及单位网站建设情况眉县住房和城市建设局网站
  • 网站是否能够被恶意镜像wordpress占用
  • 经典设计网站网站等保测评怎么做
  • 重庆做网站公司贴吧廊坊公司快速建站
  • 海外贸易在什么网站做怎么排名到百度第一页
  • 线上注册公司是在哪个网站做高仿网站
  • 网站构架图网上推广平台哪个好
  • 公司网站首页图片素材vi设计的目的和意义
  • 网站的需求分析都有哪些内容济南营销型网站建设团队
  • 怎么选择优秀的网站建设公司生鲜网站开发
  • 如何编写网站建设销售的心得网站的权限管理怎么做
  • 网站业务员好做吗无忧网站优化
  • 网站随机代码网站建设费 账务处理
  • 商洛网站建设哪家好网站建设 织梦者
  • 怎么创建收费网站宁夏住房和城乡建设部网站
  • 怎么确认网站是什么语言做的用php和mysql做网站
  • 安徽做网站的公司有哪些星子网络公司
  • 肥西县重点工程建设管理局网站wordpress界面菜单怎么弄