1. 程式人生 > 其它 >洛谷P1155 [NOIP2008 提高組] 雙棧排序

洛谷P1155 [NOIP2008 提高組] 雙棧排序

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--子節點<property> :用來定義變數值,它有兩個屬性name和value,通過<property>定義的值會被插入到logger上下文中,可以使“${}”來使用變數。-->
<!-- name: 變數的名稱 ,value: 的值時變數定義的值  --> 
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n"/>
<property name="LOG_PATH" value="${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}"/>
   <!--輸出日誌檔案的appender-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--控制檯日誌的appender-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<!--輸出檔案日誌appender-->


<appender name="CRAWLER_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/event.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8" class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%msg%n</pattern>
</encoder>
</appender>
  <!--指定"com.course.controller"包下的日誌打到event.%d{yyyy-MM-dd}.log檔案下,列印級別是info -->
  <!--
additivity="true",是把這個包下列印的日誌傳遞到上級loger,他的上級是<root>,下面已經設定<root>,所以他的列印資訊也會到控制檯和File-->
    <logger name="com.course.controller" level="INFO" additivity="true">
<appender-ref ref="CRAWLER_LOG"/>
</logger>

<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>

</configuration>

子節點<appender>:負責寫日誌的元件,它有兩個必要屬性name和class。name指定appender名稱,class指定appender的全限定名
    1、ConsoleAppender 把日誌輸出到控制檯,有以下子節點:
        <encoder>:對日誌進行格式化。(具體引數稍後講解 )
        <target>:字串System.out(預設)或者System.err

    2.RollingFileAppender:滾動記錄檔案,先將日誌記錄到指定檔案,當符合某個條件時,將日誌記錄到其他檔案。有以下子節點:
      <file>:被寫入的檔名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動建立,沒有預設值。
      <append>:如果是 true,日誌被追加到檔案結尾,如果是 false,清空現存檔案,預設是true。
      <rollingPolicy>:當發生滾動時,決定RollingFileAppender的行為,涉及檔案移動和重新命名。屬性class定義具體的滾動策略類
      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動。有以下子節點:

    3.子節點<loger>:用來設定某一個包或具體的某一個類的日誌列印級別、以及指定<appender>。<loger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性。
        可以包含零個或多個<appender-ref>元素,標識這個appender將會新增到這個loger
     name: 用來指定受此loger約束的某一個包或者具體的某一個類。
     level: 用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,還有一個特俗值INHERITED或者同義詞NULL,代表強制執行上級的級別。 如果未設定此屬性,那麼當前loger將會繼承上級的級別。
addtivity: 是否向上級loger傳遞列印資訊。預設是true。同<loger>一樣,可以包含零個或多個<appender-ref>元素,標識這個appender將會新增到這個loger。

    4.子節點<root>:它也是<loger>元素,但是它是根loger,是所有<loger>的上級。只有一個level屬性,因為name已經被命名為"root",且已經是最上級了。
    level: 用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,不能設定為INHERITED或者同義詞NULL。 預設是DEBUG。

專案的application.yml檔案配置:
logging:
file:
path: logs
name: mylog.log

說明:lomback要用的依賴 slf4j-api.jar,logback-core.jar,logback-classic.jar ,spring-boot專案已經整合這些jar包,使用只要引入 Lombok的
@Slf4j 即可



人生因有期待而美好; 誰不是一邊熱愛生活,又一邊不想活。 學最好的別人,做最好的自己。