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

单位 内网网站建设wordpress微信公众号登录界面

单位 内网网站建设,wordpress微信公众号登录界面,网站建设的钱计入什么科目,网站推广服务怎么做目录 1.概述 2.切换日志实现 3.使用 3.1.日志级别 3.3.日志离线 3.4.详细定制 1.概述 由一些历史原因,JAVA领域存在有很多日志框架,如Log4j、Logback、log4j2。 log4j是Java日志框架的元老,在log4j被Apache Foundation收入门下之后&a…

目录

1.概述

2.切换日志实现

3.使用

3.1.日志级别

3.3.日志离线

3.4.详细定制


1.概述

由一些历史原因,JAVA领域存在有很多日志框架,如Log4j、Logback、log4j2。

log4j是Java日志框架的元老,在log4j被Apache Foundation收入门下之后,由于理念不合,log4j的作者Ceki离开并开发了slf4j和logback。这几个框架都很热门,这就造成了不同系统、不同开源框架使用的日志框架都不同。

因为不同日志框架的日志输出格式、API均不同,所以当系统中存在多种日志框架被混用就会出现冲突,最直接的现象就是——日志格式不统一,这对项目的日志排查来说是极不方便的,甚至有时候还会因为日志框架的冲突而报错。因此同一个项目中统一日志框架是十分有必要的,但是如果只是单纯的保留一个日志框架,移除其余日志框架,由于各日志系统API的不同很可能系统根本就起不来,所以需要一个中间层来进行适配,从而解决这个问题。

这个中间层就是——日志门面。日志门面使用门面模式屏蔽掉了不同日志实现之间的不同,对外暴露统一的API。

2.切换日志实现

SpringBoot默认使用SLF4J作为日志门面,LogBack作为日志实现来记录日志。

这里我们不去细究SLF4J是怎么去完成适配的,只需要知道SpringBoot自带了日志门面,使用日志门面来输出日志,当想要切换日志实现的时候,排掉LogBack,引入新的实现即可。

以切换为log4j2为例:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!--1. 排除掉依赖 ,以此排除掉logback+slf4j引用-->
    <exclusions>
         <exclusion>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-logging</artifactId>
          </exclusion>
     </exclusions>
</dependency>
<!--2. 添加log4j2依赖 -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

3.使用

3.1.日志级别

配置:

可以指定全局日志等级,也可以以方法为粒度指定日志等级,支持*作为通配符

#全局日志等级
logging.level.root=trace
#单都指定日志等级
logging.level.com.eryi.controller.MyRunner.*=trace

代码:

package com.eryi.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class MyRunner implements CommandLineRunner {//特别注意,要使用slf4j的Logger和LoggerFactoryLogger logger= LoggerFactory.getLogger(MyRunner.class);@Overridepublic void run(String... args) throws Exception {//日志级别:error<warn<info<debug<tracelogger.trace("trace......");logger.debug("debug......");//Spring Boot默认使用info级别logger.info("info......");logger.warn("warn......");logger.error("error......");}
}

3.3.日志离线

不指定路径,日志文件只会在控制台输出,不会离线为本地文件。

使用path可以指定路径,文件名默认使用springlog.log

使用file可以指定路径+文件名,不指定路径会默认离现在工程目录下。

file和path是两个冲突设置,如果同时配置,只有file会生效。

3.4.详细定制

spring boot的配置文件中的日志配置项只能进行粗粒度的配置,想对日志进行细粒度的定制需要在类路径下(一般是在resources下)编写xml配置文件。命名规则为XXX-spring.xml,XXX是日志框架的名称。

以下为一个logback-spring.xml的模板:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--
     configuration中有appender、logger、root三个节点
      appender:表示的是定义了一种文件的输出格式  就有点类似于 变量进行了定义 但是没有来得及使用
      logger:这个就表示的是我们定义了这个变量在哪一个局部能够使用
              我们的日志原本是针对于整个工程的配置  但是你可以定义在哪一个包里面  使用什么日志输出格式 以及 输出到哪些地方
      root:相当于定义的是整个项目 的日志输出级别  以及 输出日志到哪些地方
    -->

    <!--
       定义了日志的输出  ConsoleAppender  这个类表示的是输出到控制台
    -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--设置输出到控制台的编码和格式

        %d{yyyy-MM-dd-HH:mm:ss.SSS}:这个表示的是时间的引用
        %level:当前输出的日志级别
        [%thread]:表示当前是哪一个线程
        %class:这个表示的是这个日志是在哪一个类中打印出来的
        %line:这个表示的是打印这个日志是在这个类的 哪一行打印出来的
        %msg:这个表示的是打印的消息是什么
        %n:这个表示的是换行
        -->
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS}------->%level--------->[%thread]-%class:%line----->%msg%n</pattern>
            <!--设置了打印到控制台的编码-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--
       定义日志输出到文件的格式
       name:是可以随便写的   FileAppender:输出到文件
    -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">

        <!--这个表示的是日志文件输出的路径  这个默认表示的是输出到当前项目的根目录下 叫做file.log-->
        <file>log/file.log</file>
        <!--这个表示的是 每一次写日志的时候是在上一次的基础上进行追加-->
        <append>true</append>
        <encoder>
            <!--定义了输出的格式-->
            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} %level    [%thread]-%class:%line>>%msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!--
            prudent=true:表示的是日志的写入是线程安全的、但是线程安全会降低效率  一般默认设置为false
        -->
        <prudent>false</prudent>
    </appender>

    <!--
       RollingFileAppender:表示的是日志要滚动输出

    -->
    <appender name="timeFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--
            rollingPolicy滚动的策略
            TimeBasedRollingPolicy:最常用的一个、根据时间进行滚动 当达到一定的时间的时候、就会自动开辟一个新的日志文件
            FixedWindowRollingPolicy:根据固定窗口的算法重命名文件的滚动策略
            TriggeringPolicy:根据当前活动文件的大小来来确定是否滚动
        -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件的名字  引用了当前的日期-->
            <fileNamePattern>log/logFile%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--生成这个日志文件 保留多少天-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!--编码的格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} %level    [%thread]-%class:%line>>%msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--
       RollingFileAppender:这个是滚动输出
       FixedWindowRollingPolicy:根据活动窗口算法的大小来滚动输出

    -->
    <appender name="fixedFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志的名字-->
        <file>log/fixedFile.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>log/fixedFile%i.log.zip</fileNamePattern>
            <!--最少生成一个日志文件-->
            <minIndex>1</minIndex>
            <!--最多生成3个日志文件-->
            <maxIndex>3</maxIndex>
        </rollingPolicy>

        <!--根据文件的大小来设置滚动输出的-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--日志文件的最大的大小-->
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <!--日志输出的格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} %level    [%thread]-%class:%line>>%msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--文件输出-->
    <appender name="filter" class="ch.qos.logback.core.FileAppender">
        <file>log/filter.log</file>
        <append>true</append>
        <!--
            LevelFilter:的意思是添加了一个日志级别的过滤器
            如果日志的级别等于配置的级别。那么则执行onMatch里面的配置
            否则执行 onMismatch中的内容
        -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <!--
                 ACCEPT:当前的日志会立即被执行不经过其他的过滤器了
                 DENY:日志立即被抛弃、也不再经过其他的过滤器了
                 NEUTRAL:下一个过滤器将继续执行、如果是最后一个过滤器的话那么就会被执行
            -->
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!--临界值过滤器:如果你输出的日志级别 是低于下面定义的这个级别的话那么 就会被过滤掉-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>

        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} %level    [%thread]-%class:%line>>%msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
        <prudent>false</prudent>
    </appender>

    <!--设置局部的 这个日志的输出级别 或者 是 在哪里输出日志-->

                <!--测试的路径-->
    <!--    <logger name="com.project.controller" level="trace" addtivity="false">
            <appender-ref ref="stdout" />
            <appender-ref ref="file" />
            <appender-ref ref="timeFile" />
        </logger>-->

    <!--这个是给全局设置一个日志级别  所有的都适用
        appender-ref :全局的日志我们要打印到哪些地方

    -->
    <root level="error">
<!--        打印到控制台-->
        <appender-ref ref="stdout" />
<!--        打印到file文件里-->
        <appender-ref ref="file" />
        <appender-ref ref="timeFile" />
        <!--<appender-ref ref="fixedFile" />-->
        <!--<appender-ref ref="filter" />-->
    </root>

</configuration>
 

http://www.yayakq.cn/news/541842/

相关文章:

  • 品牌网站建设解决方网站建设 三合一
  • 做网站怎么排版创意设计方法有哪些
  • 你的网站赚钱吗搭建一个购物网站
  • wordpress调用网站最新文章中国建设银行官网个人网上银行
  • 哪个网站diy做宝宝衣服如何查找织梦网站后台
  • 东莞模板建站哪家好杭州专业seo服务公司
  • 公司网站制作公司排名爱心助学网站建设
  • 义乌建设网站怎么给公司建网站
  • 自己怎么做卖东西的网站ps软件下载手机版免费
  • 用dw做红米网站wordpress纯静态化插件
  • 顺义区快速建站木马设计公司官网
  • 班级网站建设论文百度搜索引擎优化公司哪家强
  • 江苏省建筑工程集团有限公司网站图片加载优化
  • 营销型网站单页滨州五学一做考试网站
  • 用vue开发的网站帝国cms网站制作
  • 吴江那里有做公司网站的国外购物平台有哪些
  • 单页面的网站模板免费下载陵园网站建设价格
  • 做网页链接网站莱芜区政协网站
  • 东营网站建设服务小昆山网站建设
  • html5做手机网站买了个区域名怎么做网站
  • 网站怎么做流量统计上海十大广告公司排名
  • 网站搜索功能代码wordpress 分类菜单高亮
  • app介绍网站模板四川建设行政主管部门官方网站
  • 聊城做网站的公司价位专门做销售培训的网站
  • 建自己的网站多少钱如何建立自己的小程序
  • 赣州住房与城乡建设厅网站最新房价数据出炉
  • 郑州企业网站托管公司电影网站的代理怎么做
  • 铜陵做网站的公司电子商务系统的构成
  • 南昌网站建设公司特色智能建站是什么
  • php网站开发课程wordpress修改社交标签