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

建设网站规划书成都个人网站

建设网站规划书,成都个人网站,网页制作专业用语,门户网站广告的特点有一、logback概述 Logback是由log4j创始人设计的又一个开源日志组件。 Logback当前分成三个模块: 1、logback-core, 2、logback- classic 3、logback-access。 1)logback-core是其它两个模块的基础模块。 2)logback-…

一、logback概述 

Logback是由log4j创始人设计的又一个开源日志组件。
Logback当前分成三个模块:
        1、logback-core,
        2、logback- classic
        3、logback-access。

1)logback-core是其它两个模块的基础模块。
2)logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API。使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。
3)logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

二、Logback中组件与配置

1)logback依赖jar包
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version>
</dependency>

        SpringBoot项目默认就是使用的就是logback日志系统,创建SpringBoot项目时引入的spring-boot-starter或者spring-boot-starter-web依赖jar包中已经包含了spring-boot-starter-logging的依赖,里面同时包含多种日志系统依赖,如下图所示:

包括logback和log4j,所以,无需额外添加依赖,直接配置logback.xml就可以了。

此外,如果需要切换为log4j2,那么需要在spring-boot-starter-web依赖中排除springboot自带的commons‐logging,然后在引入log4j2的依赖jar包,如下所示:

<!--排除 commons‐logging-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>commons‐logging</groupId><artifactId>commons‐logging</artifactId></exclusion></exclusions>
</dependency>
<!--引入log4j2 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2)相关组件

1、Logger: 日志的记录器,主要用于存放日志对象,也可以定义日志类型、级别。

2、Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。

3、Layout: 负责把事件转换成字符串,格式化的日志信息的输出。在Logback中Layout对象被封装在encoder中。也就是说我们使用的encoder其实就是Layout。

     与前几个日志框架类似!

3)日志级别(log level):

        用来控制日志信息的输出,从高到低分为共分为七个等级:

A:off 最高等级,用于关闭所有日志记录。
B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:warm 表明会出现潜在的错误情形。
E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G:all 最低等级,用于打开所有日志记录。 

 4)  Logback配置文件

Logback提供了3种配置文件

  • logback.groovy
  • logback-test.xml
  • logback.xml(常用)
    如果都不存在则采用默认的配置

配置文件下面会详解。

5)什么是logback的context上下文?

        每一个logger都被关联到一个loggerContext中,loggerContext负责生产logger,也负责以树形结构排列各个logger。
        logger的获取主要是通过org.slf4j.LoggerFactory的getLogger()方法获取。

        getLogger()方法有两种实现方式
           a) getLogger(Class Obj)通过传入一个类的形式,来进行logger对象和类的绑定。
           b) getLogger(String name)方式是通过传入一个contextName的形式,来指定一个logger。

        其中,用同一个名字调用该方法获取的永远都是同一个logger对象。

三、logback应用

1)入门案例
    public static void main(String[] args) {Logger logger = LoggerFactory.getLogger(LogDemo.class);logger.trace("======trace");logger.debug("======debug");logger.info("======info");logger.warn("======warn");logger.error("======error");}

没有加任何配置,会使用默认配置,但是记得要引入SpringBoot的依赖包。

 

 2)logback.xml 配置文件

     下面是一个比较完整的示例,那这个介绍一下各个标签的含义:

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false"><!-- 读取application.properties配置 --><!--    <property resource="application.properties" />--><!-- 生成文件名前缀 --><property name="FILE_PREFIX" value="yyzRead" /><!-- 输出文件路径 --><property name="OPEN_FILE_PATH" value="D:\log_yyzDevelopRead"/><!-- 文件保存时间 这里是7天 --><property name="EXIST_TIME" value="7"/><!-- 文件输出格式 --><property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/><!-- 日志文件最大的大小 --><property name="MAX_FILE_SIZE" value="10MB"/><!--  控制台输出  --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${PATTERN}</pattern><charset>UTF-8</charset></encoder></appender><!-- 输出到all文件 这里是全部的日志内容 --><appender name="OPEN-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--不能有这项配置!!!!!--><!--<Encoding>UTF-8</Encoding>--><!--<File>${OPEN_FILE_PATH}/${FILE_PREFIX}.log</File>--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${OPEN_FILE_PATH}/all/${FILE_PREFIX}_%d{yyyy-MM-dd}-%i.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>${EXIST_TIME}</MaxHistory><TimeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!--日志文件最大的大小--><MaxFileSize>${MAX_FILE_SIZE}</MaxFileSize></TimeBasedFileNamingAndTriggeringPolicy></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>${PATTERN}</pattern></layout></appender><!--输出到debug文件--><appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${OPEN_FILE_PATH}/debug/${FILE_PREFIX}_%d{yyyy-MM-dd}-%i.log</FileNamePattern><MaxHistory>30</MaxHistory><TimeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><MaxFileSize>${MAX_FILE_SIZE}</MaxFileSize></TimeBasedFileNamingAndTriggeringPolicy></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 只打印DEBUG日志, --><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>DEBUG</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!--输出到info文件--><appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${OPEN_FILE_PATH}/info/${FILE_PREFIX}_%d{yyyy-MM-dd}-%i.log</FileNamePattern><MaxHistory>30</MaxHistory><TimeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><MaxFileSize>${MAX_FILE_SIZE}</MaxFileSize></TimeBasedFileNamingAndTriggeringPolicy></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 只打印INFO日志 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!--输出到error文件--><appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${OPEN_FILE_PATH}/error/${FILE_PREFIX}_%d{yyyy-MM-dd}-%i.log</FileNamePattern><MaxHistory>30</MaxHistory><TimeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><MaxFileSize>${MAX_FILE_SIZE}</MaxFileSize></TimeBasedFileNamingAndTriggeringPolicy></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 只打印ERROR日志 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!--输出到warn文件--><appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${OPEN_FILE_PATH}/warn/${FILE_PREFIX}_%d{yyyy-MM-dd}-%i.log</FileNamePattern><MaxHistory>30</MaxHistory><TimeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><MaxFileSize>${MAX_FILE_SIZE}</MaxFileSize></TimeBasedFileNamingAndTriggeringPolicy></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 只打印WARN日志 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!--  默认输出info等级,然后再根据各自的拦截过滤规则去处理  --><root level="info"><appender-ref ref="STDOUT"/><appender-ref ref="OPEN-FILE"/><appender-ref ref="debug" /><appender-ref ref="info" /><appender-ref ref="error" /><appender-ref ref="warn" /></root>
</configuration>
3)  配置文件中各个标签介绍:

1.logback-spring.xml的配置项

共有一个父标签、两种属性、三个节点:

  一个父标签:configuration
  两种属性:contextName和property
  三个节点:appender、root、logger

2.父标签 configuration:

<configuration scan="true" scanPeriod="60 seconds" debug="false">

三个属性:
        1、scan   当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true
        2、scanPeriod     设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
        3、debug     当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

3.子节点:<contextName>

<contextName>logback</contextName>

每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置好,就不能修改。可以通过%contextName来打印日志上下文名称,一般来说我们不用这个属性,可有可无。

4.属性标签property

  <!-- 文件输出格式 --><property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>

用来定义变量值的标签,它有两个属性 name 和 value:

  • name的值是变量的名称
  • value的值是变量的定义的值,通过该标签定义的值会被插入到logger上下文中,定义变量后可以通过 “ ${变量名} ” 来使用变量

    这个标签就是可以把通用的属性设置好,如果后面有需要用到的地方可以直接引用。

5.子节点:<appender>

    <!--  控制台输出  --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${PATTERN}</pattern><charset>UTF-8</charset></encoder></appender>

appender用来格式化日志输出节点,有连个属性name和class,class用来指定那种输出策略。
appender跟前几个框架中的用法类似,其实可以认为是一个输出器,指定输出的名字和样式,如果检测到配置文件中有这个输出器,就会按照输出器配置的格式输出。

 输出策略:

1、ConsoleAppender:日志输出到控制台,类名ch.qos.logback.core.ConsoleAppender。
2、FileAppender:日志输入到文件,类名ch.qos.logback.core.FileAppender。作用是将日志输出到文件。目标文件可以指定,如果该文件已经存在,它将根据附加属性的值被追加或截断。
3、RollingFileAppender:滚动记录文件,FileAppender的子类,当符合条件(大小、时间),日志进行切分处理,类名:ch.qos.logback.core.rolling.RollingFileAppender。将FileAppender的功能进行扩展,提供了切割日志文件的功能。例如:RollingFileAppender可以记录日志到一个名为log.txt的文件,一旦满足一定条件,将其日志目标更改为另一个文件。在使用时,RollingFileAppender必须同时具有RollingPolicy和TriggeringPolicy设置。但是,如果它的RollingPolicy也实现TriggeringPolicy接口,那么只需要显式地指定前者。
4、TimeBasedRollingPolicy:时间基准滚动策略可能是最流行的滚动策略。它定义了一个基于时间的滚动策略,例如每日或每月。时间的滚动策略承担了翻转的责任,同时也承担了触发的滚动。TimeBasedTriggeringPolicy实现了RollingPolicy和TriggeringPolicy接口。类名ch.qos.logback.core.rolling.TimeBasedRollingPolicy
5、SizeAndTimeBasedRollingPolicy:有时候可能希望按日期对文件进行存档,但同时限制每人日志文件的大小,这时候可以使用SizeAndTimeBasedRollingPolicy达到目的。类名ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy
6、SiftingAppender:筛选附加器,类名ch.qos.logback.classic.sift.SiftingAppender ,他下面有个子节点<discriminator>(辨别)discriminator 下有2个子节点<key>和<defaultValue> 其实就是定义与MDC关联的变量key=MDC中put的key defaultValue需要我们随便给个值,不过最好是有意义的SiftingAppender 下有个<sift>子节点这个子节点可以按照appender进行配置

http://www.15wanjia.com/news/193703.html

相关文章:

  • 咸宁市做网站北京seo分析
  • 企业网站怎么做seo注册平台需要什么条件
  • 哪些网站是做设计的网站开发专家
  • 手机上做网站phpwordpress 商城模板
  • 网站制作整个的流程是什么网页设计工作怎么样
  • 创建网站大约多少钱2018沧州网络科技有限公司
  • 怎么建设一个网站icp网站备案系统
  • 企业做网站需要哪些材料网站建设所面临的问题
  • 做网站域名重要吗wordpress 知识管理
  • 徐州市城乡建设局门户网站中国最早的电商平台
  • php网站开发平台下载精品网站制作公司
  • 网站手机版跳转 seo上海市招投标公共信息服务平台
  • 网站后台更新青岛 机械 中企动力提供网站建设
  • 淄博网站制作服务优化朝阳区手机网站制作服务
  • 北京地铁建设管理公司网站企业类网站
  • 潍坊网站推广排名企业公示信息查询系统广西
  • 陕西泰烜建设集团网站好搜搜索引擎
  • 攀枝花网站seoseo 优化公司
  • 制作网站找哪家好360建筑网忘记登入密码了怎么办
  • 网站开发 接个支付支付难吗网站建设中企
  • seo排名优化的网站公司网站建设好处
  • 怎样做网站域名网站手机pc同步
  • 淘宝首页网站怎么做乌市做网站的公司
  • 怎么自己做网站吗美团网站怎么做
  • 怎么建网站视频中国建设有限公司官网
  • 个人网站怎么做微信支付重庆seo技术教程
  • 潍坊做网站公司潍坊网络公司惠州关键词排名提升
  • tk注册网站深圳网站设计兴田德润信任高
  • 每一个网站都要后台吗怎么推广自己的链接
  • 网站宣传的手段有哪些企业网站的推广形式有哪些