您的位置:首页 > 编程语言 > Java开发

Spring Boot : logback和log4j2配置(五)

2017-08-24 01:12 477 查看

目录

目录

官方文档

logback日志

log4j2日志
log4j2xml 配置方法

log4j2yml配置方法

官方文档

官网文档:Logging

logback日志

logback是springboot默认使用的日志,默认级别INFO。比log4j效率更高,且实现了slf4j接口。实际日志都是在运行时binding的具体实现类。

默认情况下spring-boot-starter已经包含了logback,所以我们启动项目时没有配置日志也会正常打印日志。默认配置在org.springframework.boot.logging.logback.base.xml ,仅是简单更改的话不需要用到下边的配置文件,在application.properties或者application.yml更改相关配置就可以了。比如logging.file设置文件logging.path设置目录。



如果我们需要更改更多详细配置:可以在src/main/resources/下添加logback.xml或者logback-spring.xml(官方建议)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextName>logback</contextName>

<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

<property name="log.path" value="/milo/test.log" />
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>-->
<encoder>
<pattern>%clr(%d{HH:mm:ss.SSS}){red} %clr(%contextName){green} %clr([%thread]) %clr(%-5level){blue} %clr(%logger{36}){magenta} - %clr(%msg%n)</pattern>
</encoder>
</appender>

<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<root level="info">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>

<!-- logback为java中的包 -->
<!--<logger name="com.dudu.controller"/>-->
<!--logback.LogbackDemo:类的全路径 -->
<!--<logger name="com.dudu.controller.LearnController" level="WARN" additivity="true">-->
<!--<appender-ref ref="console"/>-->
<!--</logger>-->

<!-- 测试环境+开发环境. 多个使用逗号隔开. -->
<springProfile name="dev">
<logger name="cn.milo.controllor" level="DUBUG" />
</springProfile>
<!-- 生产环境. -->
<springProfile name="prod">
<logger name="cn.milo.controllor" level="INFO" />
</springProfile>
</configuration>


具体配置大家自行查阅吧,大同小异。我的这个配置也是网上找的。

类中声明变量:

Logger logger = LoggerFactory.getLogger(SampleController.class);


logback详细介绍 : http://blog.csdn.net/gebitan505/article/details/70142155?locationNum=1&fps=1

log4j2日志

更改pom.xml

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- 排除默认日志包 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- 添加log4j包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>


否则会出现slf4j绑定两个实现类的情况:



log4j2.xml 配置方法

在application.properties或者application.yml增加配置,我用的yml(如果这里是log4j2.xml或者log4j2-spring.xml可以不加下边这个配置。springboot可以识别)

logging:
config: classpath:log4j2-demo.xml #如果名字非og4j2.xml或者log4j2-spring.xml需加上这个配置。


src/main/resources/增加log4j2.xml

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<properties>
<!-- 文件输出格式 -->
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS}  |-%-5level [%thread] %c [%L] -| %msg%n</property>
</properties>

<appenders>
<Console name="CONSOLE" target="system_out">
<PatternLayout pattern="${PATTERN}" />
</Console>
</appenders>

<loggers>
<logger name="cn.milo.controllor" level="debug" />
<root level="info">
<appenderref ref="CONSOLE" />
</root>
</loggers>

</configuration>


log4j2.yml配置方法

不需要在application.properties或者application.yml增加配置,但要增加一个依赖包

pom.xml

<!-- 加上这个才能辨认到log4j2.yml文件 -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</dependency>


log4j2.yml

Configuration:
status: warn

Properties: # 定义全局变量
Property: # 缺省配置(用于开发环境)。其他环境需要在VM参数中指定,如下:
#测试:-Dlog.level.console=warn -Dlog.level.xjj=trace
#生产:-Dlog.level.console=warn -Dlog.level.xjj=info
- name: log.level.console
value: trace
- name: log.level.xjj
value: trace
- name: log.path
value: /opt/logs
- name: project.name
value: my-spring-boot

Appenders:
Console:  #输出到控制台
name: CONSOLE
target: SYSTEM_OUT
ThresholdFilter:
level: ${sys:log.level.console} # “sys:”表示:如果VM参数中没指定这个变量值,则使用本文件中定义的缺省全局变量值
onMatch: ACCEPT
onMismatch: DENY
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
RollingFile: # 输出到文件,超过128MB归档
- name: ROLLING_FILE
ignoreExceptions: false
fileName: /milo/test2.log
filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
Policies:
SizeBasedTriggeringPolicy:
size: "128 MB"
DefaultRolloverStrategy:
max: 1000

Loggers:
Root:
level: info
AppenderRef:
- ref: CONSOLE
- ref: ROLLING_FILE
Logger: # 为com.xjj包配置特殊的Log级别,方便调试
- name: com.xjj
additivity: false
level: ${sys:log.level.xjj}
AppenderRef:
- ref: CONSOLE
- ref: ROLLING_FILE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  springboot