JSON

SpringMVC教程之json交互使用(3)

字号+ 作者:H5之家 来源:H5之家 2017-05-17 13:02 我要评论( )

使用 System.out 是在当前线程执行的,写入文件也是写入完毕后才继续执行下面的程序。而使用Log工具不但可以控制日志是否输出,怎么输出,它的处理机制也是通知写日志,继续执行后面的代码不必等日志写完。 如非必

  使用 System.out 是在当前线程执行的,写入文件也是写入完毕后才继续执行下面的程序。而使用Log工具不但可以控制日志是否输出,怎么输出,它的处理机制也是通知写日志,继续执行后面的代码不必等日志写完。

  如非必要,建议大家不要使用控制台输出,因为控制台输出没有优先级会显得输出太乱。

  个人推荐使用 SLF4J(Simple Logging Facade For Java)的logback来输出日志,其比log4j 要好,因为他效率更高。

  spring Boot 提供了一套日志系统,logback是最优先的选择。配置了logback.xml可以利用Spring Boot提供的默认日志配置:

  <?xml version="1.0" encoding="UTF-8"?>

  <configuration>

  <include resource="org/springframework/boot/logging/logback/base.xml"/>

  <logger name="org.springframework.web" level="DEBUG"/>

  </configuration>

  这样就定义了一个 捕获 org.springframework.web 的日志,日志级别是 DEBUG,上面引用的base.xml 文件内容为:

  <?xml version="1.0" encoding="UTF-8"?>

  <!--

  Base logback configuration provided for compatibility with Spring Boot 1.1

  -->

  <included>

  <include resource="org/springframework/boot/logging/logback/defaults.xml" />

  <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>

  <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

  <include resource="org/springframework/boot/logging/logback/file-appender.xml" />

  <root level="INFO">

  <appender-ref ref="CONSOLE" />

  <appender-ref ref="FILE" />

  </root>

  </included>

  Spring Boot的日志系统预先定义了一些系统变量:

  PID,当前进程ID{LOG_FILE},Spring Boot配置文件(application.properties|.yml)中logging.file的值

  ${LOG_PATH}, Spring Boot配置文件中logging.path的值

  同时默认情况下包含另个appender——一个是控制台,一个是文件,分别定义在console-appender.xml和file-appender.xml中。同时对于应用的日志级别也可以通过application.properties进行定义:

  logging.level.org.springframework.web=DEBUG

  logging.level.org.springboot.sample=TRACE

  这样相当于我们在logback.xml 中配置的对应的日志级别。名称以logging.level开头,后面跟要输入日志的包名。

  如果在 logback.xml 和 application.properties 中定义了相同的配置(如都配置了 org.springframework.web)但是输出级别不同,则实际上 application.properties 的优先级高于 logback.xml *

  我们既然使用了maven来管理项目,我们就可以根据不同环境来定义不同的日志输出,在 logback-spring.xml 中使用 springProfile 节点来定义,方法如下:

  注意文件名称不是logback.xml,想使用spring扩展profile支持,要以logback-spring.xml命名

  <?xml version="1.0" encoding="UTF-8"?>

  <configuration>

  <include resource="org/springframework/boot/logging/logback/base.xml" />

  <logger name="org.springframework.web" level="INFO"/>

  <logger name="org.springboot.sample" level="TRACE" />

  <springProfile name="dev">

  <logger name="org.springboot.sample" level="DEBUG" />

  </springProfile>

  <springProfile name="staging">

  <logger name="org.springboot.sample" level="INFO" />

  </springProfile>

  </configuration>

  如上我们默认为 org.springboot.sample 定义了TRACE级别的输出,下面又定义两个 springProfile ,分别是 dev 和 staging,输出级别分别是 DEBUG 和 INFO

  我们可以启动服务的时候指定 profile (如不指定使用默认),如指定staging 的方式为:

  java -jar myapp.jar --spring.profiles.active=staging

  下面介绍两种常用的Appender

  ConsoleAppender

  Logback使用appender来定义日志输出,在开发过程中最常用的是将日志输出到控制台:

  <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">

  <encoder>

  <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</Pattern>

  </encoder>

  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

  <level>TRACE</level>

  </filter>

  </appender>

  表示对日志进行编码

  %d{HH:mm:ss.SSS}——日志输出时间

  %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用

  %-5level——日志级别,并且使用5个字符靠左对齐

  %logger{36}——日志输出者的名字

  %msg——日志消息

  %n——平台的换行符

  在这种格式下一条日志的输出结果如下:

  10:12:51.012 [threadName] DEBUG o.c.d.r.util.LoggingResponseFilter

  RollingFileAppender

  另一种常见的日志输出到文件,随着应用的运行时间越来越长,日志也会增长的越来越多,将他们输出到同一个文件并非一个好办法。RollingFileAppender用于切分文件日志:

  <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">

  <File>/data/log/app.log</File>

  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  <!-- daily rollover -->

  <FileNamePattern>rest-demo.%d{yyyy-MM-dd}.log</FileNamePattern>

  <!-- keep 30 days' worth of history -->

  <maxHistory>30</maxHistory>

  </rollingPolicy>

  <encoder>

  <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>

  </encoder>

  </appender>

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JSOUP 教程,JSOUP请求JSON ,JSOUP返回JSON 数据

    JSOUP 教程,JSOUP请求JSON ,JSOUP返回JSON 数据

    2017-05-17 13:04

  • Android json解析动态获取key以及解析技巧

    Android json解析动态获取key以及解析技巧

    2017-05-17 10:02

  • 关于springMVC处理json数据教程

    关于springMVC处理json数据教程

    2017-05-16 17:08

  • JSON教程、使用手册

    JSON教程、使用手册

    2017-05-16 17:04

网友点评
<