Java Logger 使用总结
-
logger 背景知识
- logback取代 log4j的理由: http://www.cnblogs.com/lixuwu/p/5804793.html
- logback、log4j、log4j2三种日志框架性能检测——为什么用log4j2 : https://blog.csdn.net/qq_32250495/article/details/82382052
- Log4j2的性能为什么这么好?:https://mp.weixin.qq.com/s/ZOkKxYAmRy950lsUcf9RuA
-
-
Spring Boot 默认使用Logback作为日志记录工具。日志默认输出到控制台但也能输出到文件中。我们通过spring-boot-starter-logging 加入Logback依赖,其实只要我们加入任意的Spring Boot starter 都会默认引入spring-boot-starter-logging,因此 我们不需要分开加入他们
-
我们可以在application.properties或者application.yml中设置日志的级别、输出的文件名、输出路径、定义console, file 中logging的样式等。
logging.level.root= WARN logging.level.org.springframework.security= DEBUG logging.level.org.springframework.web= ERROR logging.level.org.hibernate= DEBUG logging.file = mylogfile.log logging.path = concretepage/logs logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n logging.pattern.file= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
-
如果想使用XML配置Logback,则需要在 resources 路径下创建 logback-spring.xml文件,如果Spring Boot使用了Log4j2 ,则需要创建 log4j2-spring.xml 。
-
Spring Boot 想使用Log4j2 ,则需要修改 Maven 依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--使用下面这个和上面排除spring-boot-starter-logging是一样的效果--> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- log4j2日志 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
-
使用 logstash-logback-encoder jar 包, 将 logback 日志传给 logstash
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency>
<!-- logstash --> <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>logstash.rongziidc.com:5046</destination> <!-- encoder is required --> <encoder class="net.logstash.logback.encoder.LogstashEncoder" > <customFields>{"project":"com.rongziidc.creditorv2","type":"javaLog"}</customFields> <timeZone>UTC+8</timeZone> <timestampPattern>yyyy-MM-dd HH:mm:ss.SSS</timestampPattern> </encoder> <connectionStrategy> <roundRobin> <connectionTTL>5 minutes</connectionTTL> </roundRobin> </connectionStrategy> </appender>
-
<springProperty scope="context" name="LOG_HOME" source="logback.file"/>
-
-
-
添加 Maven依赖 , 最新上传 2012年5月
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
-
配置log4j , log4j.xml 配置详解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- 日志输出到控制台 --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <!-- 日志输出格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/> </layout> <!--过滤器设置输出的级别--> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <!-- 设置日志输出的最小级别 --> <param name="levelMin" value="INFO"/> <!-- 设置日志输出的最大级别 --> <param name="levelMax" value="ERROR"/> </filter> </appender> <!-- 输出日志到文件 -->
-