中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

濰坊知名網(wǎng)站建設(shè)服務(wù)商娃哈哈軟文推廣

濰坊知名網(wǎng)站建設(shè)服務(wù)商,娃哈哈軟文推廣,中創(chuàng)高科官方網(wǎng)站,網(wǎng)站為什么做站外推廣目錄 1.概述 2.切換日志實(shí)現(xiàn) 3.使用 3.1.日志級(jí)別 3.3.日志離線 3.4.詳細(xì)定制 1.概述 由一些歷史原因,JAVA領(lǐng)域存在有很多日志框架,如Log4j、Logback、log4j2。 log4j是Java日志框架的元老,在log4j被Apache Foundation收入門(mén)下之后&a…

目錄

1.概述

2.切換日志實(shí)現(xiàn)

3.使用

3.1.日志級(jí)別

3.3.日志離線

3.4.詳細(xì)定制


1.概述

由一些歷史原因,JAVA領(lǐng)域存在有很多日志框架,如Log4j、Logback、log4j2。

log4j是Java日志框架的元老,在log4j被Apache Foundation收入門(mén)下之后,由于理念不合,log4j的作者Ceki離開(kāi)并開(kāi)發(fā)了slf4j和logback。這幾個(gè)框架都很熱門(mén),這就造成了不同系統(tǒng)、不同開(kāi)源框架使用的日志框架都不同。

因?yàn)椴煌罩究蚣艿娜罩据敵龈袷健PI均不同,所以當(dāng)系統(tǒng)中存在多種日志框架被混用就會(huì)出現(xiàn)沖突,最直接的現(xiàn)象就是——日志格式不統(tǒng)一,這對(duì)項(xiàng)目的日志排查來(lái)說(shuō)是極不方便的,甚至有時(shí)候還會(huì)因?yàn)槿罩究蚣艿臎_突而報(bào)錯(cuò)。因此同一個(gè)項(xiàng)目中統(tǒng)一日志框架是十分有必要的,但是如果只是單純的保留一個(gè)日志框架,移除其余日志框架,由于各日志系統(tǒng)API的不同很可能系統(tǒng)根本就起不來(lái),所以需要一個(gè)中間層來(lái)進(jìn)行適配,從而解決這個(gè)問(wèn)題。

這個(gè)中間層就是——日志門(mén)面。日志門(mén)面使用門(mén)面模式屏蔽掉了不同日志實(shí)現(xiàn)之間的不同,對(duì)外暴露統(tǒng)一的API。

2.切換日志實(shí)現(xiàn)

SpringBoot默認(rèn)使用SLF4J作為日志門(mén)面,LogBack作為日志實(shí)現(xiàn)來(lái)記錄日志。

這里我們不去細(xì)究SLF4J是怎么去完成適配的,只需要知道SpringBoot自帶了日志門(mén)面,使用日志門(mén)面來(lái)輸出日志,當(dāng)想要切換日志實(shí)現(xiàn)的時(shí)候,排掉LogBack,引入新的實(shí)現(xiàn)即可。

以切換為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.日志級(jí)別

配置:

可以指定全局日志等級(jí),也可以以方法為粒度指定日志等級(jí),支持*作為通配符

#全局日志等級(jí)
logging.level.root=trace
#單都指定日志等級(jí)
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 {//日志級(jí)別:error<warn<info<debug<tracelogger.trace("trace......");logger.debug("debug......");//Spring Boot默認(rèn)使用info級(jí)別logger.info("info......");logger.warn("warn......");logger.error("error......");}
}

3.3.日志離線

不指定路徑,日志文件只會(huì)在控制臺(tái)輸出,不會(huì)離線為本地文件。

使用path可以指定路徑,文件名默認(rèn)使用springlog.log

使用file可以指定路徑+文件名,不指定路徑會(huì)默認(rèn)離現(xiàn)在工程目錄下。

file和path是兩個(gè)沖突設(shè)置,如果同時(shí)配置,只有file會(huì)生效。

3.4.詳細(xì)定制

spring boot的配置文件中的日志配置項(xiàng)只能進(jìn)行粗粒度的配置,想對(duì)日志進(jìn)行細(xì)粒度的定制需要在類路徑下(一般是在resources下)編寫(xiě)xml配置文件。命名規(guī)則為XXX-spring.xml,XXX是日志框架的名稱。

以下為一個(gè)logback-spring.xml的模板:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
? ? <!--
? ? ?configuration中有appender、logger、root三個(gè)節(jié)點(diǎn)
? ? ? appender:表示的是定義了一種文件的輸出格式 ?就有點(diǎn)類似于 變量進(jìn)行了定義 但是沒(méi)有來(lái)得及使用
? ? ? logger:這個(gè)就表示的是我們定義了這個(gè)變量在哪一個(gè)局部能夠使用
? ? ? ? ? ? ? 我們的日志原本是針對(duì)于整個(gè)工程的配置 ?但是你可以定義在哪一個(gè)包里面 ?使用什么日志輸出格式 以及 輸出到哪些地方
? ? ? root:相當(dāng)于定義的是整個(gè)項(xiàng)目 的日志輸出級(jí)別 ?以及 輸出日志到哪些地方
? ? -->

? ? <!--
? ? ? ?定義了日志的輸出 ?ConsoleAppender ?這個(gè)類表示的是輸出到控制臺(tái)
? ? -->
? ? <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
? ? ? ? <!--設(shè)置輸出到控制臺(tái)的編碼和格式

? ? ? ? %d{yyyy-MM-dd-HH:mm:ss.SSS}:這個(gè)表示的是時(shí)間的引用
? ? ? ? %level:當(dāng)前輸出的日志級(jí)別
? ? ? ? [%thread]:表示當(dāng)前是哪一個(gè)線程
? ? ? ? %class:這個(gè)表示的是這個(gè)日志是在哪一個(gè)類中打印出來(lái)的
? ? ? ? %line:這個(gè)表示的是打印這個(gè)日志是在這個(gè)類的 哪一行打印出來(lái)的
? ? ? ? %msg:這個(gè)表示的是打印的消息是什么
? ? ? ? %n:這個(gè)表示的是換行
? ? ? ? -->
? ? ? ? <encoder>
? ? ? ? ? ? <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS}------->%level--------->[%thread]-%class:%line----->%msg%n</pattern>
? ? ? ? ? ? <!--設(shè)置了打印到控制臺(tái)的編碼-->
? ? ? ? ? ? <charset>UTF-8</charset>
? ? ? ? </encoder>
? ? </appender>


? ? <!--
? ? ? ?定義日志輸出到文件的格式
? ? ? ?name:是可以隨便寫(xiě)的 ? FileAppender:輸出到文件
? ? -->
? ? <appender name="file" class="ch.qos.logback.core.FileAppender">

? ? ? ? <!--這個(gè)表示的是日志文件輸出的路徑 ?這個(gè)默認(rèn)表示的是輸出到當(dāng)前項(xiàng)目的根目錄下 叫做file.log-->
? ? ? ? <file>log/file.log</file>
? ? ? ? <!--這個(gè)表示的是 每一次寫(xiě)日志的時(shí)候是在上一次的基礎(chǔ)上進(jìn)行追加-->
? ? ? ? <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:表示的是日志的寫(xiě)入是線程安全的、但是線程安全會(huì)降低效率 ?一般默認(rèn)設(shè)置為false
? ? ? ? -->
? ? ? ? <prudent>false</prudent>
? ? </appender>

? ? <!--
? ? ? ?RollingFileAppender:表示的是日志要滾動(dòng)輸出

? ? -->
? ? <appender name="timeFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
? ? ? ? <!--
? ? ? ? ? ? rollingPolicy滾動(dòng)的策略
? ? ? ? ? ? TimeBasedRollingPolicy:最常用的一個(gè)、根據(jù)時(shí)間進(jìn)行滾動(dòng) 當(dāng)達(dá)到一定的時(shí)間的時(shí)候、就會(huì)自動(dòng)開(kāi)辟一個(gè)新的日志文件
? ? ? ? ? ? FixedWindowRollingPolicy:根據(jù)固定窗口的算法重命名文件的滾動(dòng)策略
? ? ? ? ? ? TriggeringPolicy:根據(jù)當(dāng)前活動(dòng)文件的大小來(lái)來(lái)確定是否滾動(dòng)
? ? ? ? -->
? ? ? ? <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
? ? ? ? ? ? <!--日志文件的名字 ?引用了當(dāng)前的日期-->
? ? ? ? ? ? <fileNamePattern>log/logFile%d{yyyy-MM-dd}.log</fileNamePattern>
? ? ? ? ? ? <!--生成這個(gè)日志文件 保留多少天-->
? ? ? ? ? ? <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:這個(gè)是滾動(dòng)輸出
? ? ? ?FixedWindowRollingPolicy:根據(jù)活動(dòng)窗口算法的大小來(lái)滾動(dòng)輸出

? ? -->
? ? <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>
? ? ? ? ? ? <!--最少生成一個(gè)日志文件-->
? ? ? ? ? ? <minIndex>1</minIndex>
? ? ? ? ? ? <!--最多生成3個(gè)日志文件-->
? ? ? ? ? ? <maxIndex>3</maxIndex>
? ? ? ? </rollingPolicy>

? ? ? ? <!--根據(jù)文件的大小來(lái)設(shè)置滾動(dòng)輸出的-->
? ? ? ? <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:的意思是添加了一個(gè)日志級(jí)別的過(guò)濾器
? ? ? ? ? ? 如果日志的級(jí)別等于配置的級(jí)別。那么則執(zhí)行onMatch里面的配置
? ? ? ? ? ? 否則執(zhí)行 onMismatch中的內(nèi)容
? ? ? ? -->
? ? ? ? <filter class="ch.qos.logback.classic.filter.LevelFilter">
? ? ? ? ? ? <level>INFO</level>
? ? ? ? ? ? <!--
? ? ? ? ? ? ? ? ?ACCEPT:當(dāng)前的日志會(huì)立即被執(zhí)行不經(jīng)過(guò)其他的過(guò)濾器了
? ? ? ? ? ? ? ? ?DENY:日志立即被拋棄、也不再經(jīng)過(guò)其他的過(guò)濾器了
? ? ? ? ? ? ? ? ?NEUTRAL:下一個(gè)過(guò)濾器將繼續(xù)執(zhí)行、如果是最后一個(gè)過(guò)濾器的話那么就會(huì)被執(zhí)行
? ? ? ? ? ? -->
? ? ? ? ? ? <onMatch>ACCEPT</onMatch>
? ? ? ? ? ? <onMismatch>DENY</onMismatch>
? ? ? ? </filter>
? ? ? ? <!--臨界值過(guò)濾器:如果你輸出的日志級(jí)別 是低于下面定義的這個(gè)級(jí)別的話那么 就會(huì)被過(guò)濾掉-->
? ? ? ? <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>

? ? <!--設(shè)置局部的 這個(gè)日志的輸出級(jí)別 或者 是 在哪里輸出日志-->

? ? ? ? ? ? ? ? <!--測(cè)試的路徑-->
? ? <!-- ? ?<logger name="com.project.controller" level="trace" addtivity="false">
? ? ? ? ? ? <appender-ref ref="stdout" />
? ? ? ? ? ? <appender-ref ref="file" />
? ? ? ? ? ? <appender-ref ref="timeFile" />
? ? ? ? </logger>-->

? ? <!--這個(gè)是給全局設(shè)置一個(gè)日志級(jí)別 ?所有的都適用
? ? ? ? appender-ref :全局的日志我們要打印到哪些地方

? ? -->
? ? <root level="error">
<!-- ? ? ? ?打印到控制臺(tái)-->
? ? ? ? <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.risenshineclean.com/news/38266.html

相關(guān)文章:

  • 怎么做自建站長(zhǎng)沙疫情最新情況
  • 中國(guó)工程建筑門(mén)戶網(wǎng)站官網(wǎng)長(zhǎng)沙網(wǎng)絡(luò)營(yíng)銷推廣公司
  • 網(wǎng)站版本功能列表seo免費(fèi)資源大全
  • 免費(fèi)靜態(tài)網(wǎng)站托管怎么建立一個(gè)自己的網(wǎng)站
  • 做網(wǎng)站的域名怎樣買(mǎi)模板式自助建站
  • 網(wǎng)站中英文轉(zhuǎn)換js網(wǎng)盤(pán)網(wǎng)頁(yè)版
  • 有域名 空間如何建網(wǎng)站溫州seo顧問(wèn)
  • 如何精準(zhǔn)引流呢整站優(yōu)化多少錢(qián)
  • 無(wú)錫網(wǎng)站制作公司哪家好免費(fèi)制作鏈接
  • 浙江網(wǎng)站建設(shè)設(shè)計(jì)站長(zhǎng)統(tǒng)計(jì)免費(fèi)下載
  • weekly做網(wǎng)站網(wǎng)站推廣的常用方法
  • 泉州做網(wǎng)站建設(shè)淘寶客怎么做推廣
  • 網(wǎng)站即時(shí)客服系統(tǒng)提高搜索引擎排名
  • 化工建設(shè)網(wǎng)站找回原來(lái)的百度
  • 做網(wǎng)站 搞流量騰訊企點(diǎn)下載
  • 網(wǎng)站建設(shè)內(nèi)容工作總結(jié)電商培訓(xùn)學(xué)校
  • 網(wǎng)站建設(shè)的軟文怎么寫(xiě)在線一鍵建站系統(tǒng)
  • 南寧慶云網(wǎng)站建設(shè)seo關(guān)鍵詞優(yōu)化推廣報(bào)價(jià)表
  • 做360手機(jī)網(wǎng)站快速制作網(wǎng)頁(yè)需要多少錢(qián)
  • 青海省高等級(jí)公路建設(shè)管理局網(wǎng)站阿里云盤(pán)資源搜索引擎
  • 網(wǎng)站建設(shè)策劃方案ppt顧問(wèn)式營(yíng)銷
  • wordpress修改注冊(cè)表班級(jí)優(yōu)化大師學(xué)生版
  • 做網(wǎng)絡(luò) 批發(fā)的網(wǎng)站seo運(yùn)營(yíng)推廣
  • 安卓網(wǎng)站開(kāi)發(fā)平臺(tái)東莞百度seo電話
  • 網(wǎng)站開(kāi)發(fā)主要用什么語(yǔ)言武漢seo關(guān)鍵詞排名優(yōu)化
  • 服務(wù)器 無(wú)法訪問(wèn)網(wǎng)站上海網(wǎng)絡(luò)推廣外包公司
  • 深圳建筑工程招聘信息凱里seo排名優(yōu)化
  • 最好的自助建站系統(tǒng)店鋪運(yùn)營(yíng)方案策劃
  • 網(wǎng)站建設(shè)開(kāi)發(fā)的條件軟文營(yíng)銷實(shí)施背景
  • 在北京做網(wǎng)站制作一個(gè)月多少錢(qián)百度快照收錄入口