日志记录
基础知识
-
作用:
记录项目产生的日志:调试日志/运行日志/异常日志
-
实现方式:
- JDK的logger
- log4j和log4j2
-
日志级别
日志 级别 作用 fatal 1(最高) 致命 error 2 warn 3 info 4 debug 5 调试 trace 6 堆栈
log4g 1
1. 基础配置
1. 添加依赖
pom.xml
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.配置文件
-
log4j.properties
log4j.rootLogger=DEBUG,Console,File,DailyRollingFile,RollingFile #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n #File log4j.appender.File = org.apache.log4j.FileAppender log4j.appender.File.File = D://log1.log log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n log4j.appender.File.Append = false #DailyRollingFile log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.DailyRollingFile.File = D://log2.log log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n #RollingFile log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender log4j.appender.RollingFile.File = D://log3.log log4j.appender.RollingFile.MaxFileSize=1KB log4j.appender.RollingFile.MaxBackupIndex=3 log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
-
详解
-
输出等级
#将DEBUG及以上日志使用输出类型输出 #OFF(0)<FIFAL<ERROR<WARN<INFO<DEBUG<ALL(全部) log4j.rootLogger=DEBUG,输出类型1[,输出类型2]
-
输出格式:
log4j.appender.输出名称.layout=org.apache.log4j.PatternLayout推荐配置
格式名称 作用 注意事项 org.apache.log4j.HTMLLayout 以HTML表格形式布局 org.apache.log4j.PatternLayout 可以灵活地指定布局模式 org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串 org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息 -
自定义配置
log4j.appender.输出名称.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n推荐配置
配置类型 配置名称 注意事项 %m 输出代码中指定的消息; %M 输出打印该条日志的方法名; %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL; %r 输出自应用启动到输出该log信息耗费的毫秒数; %c 输出所属的类目,通常就是所在类的全名; %t 输出产生该日志事件的线程名; %n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”; %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921; %l 输出日志事件的发生位置,及在代码中的行数 -
输出类型
log4j.appender.输出类型=org.apache.log4j.输出类型Appender
输出类型 作用 注意事项 Console 控制台 File 只产生一个日志文件 DailyRollingFile 每天产生一个日志文件 RollingFile 文件大小超过指定大小时产生新文件 WriterAppender 将日志信息以流格式发送到任意指定的地方 -
输出名称
输出类型 输出名称 File 默认续写 DailyRollingFile 最后一天的名称与输出名称相同,之前的为 输出名称+日期 RollingFile 当超过配置的制定大小时创建新文件,文件名为 输出名称n log4j.appender.输出类型.File = D://log.log
-
额外配置
#File 当配置false时不续写,直接覆盖 log4j.appender.File.append = false #DailyRollingFile # RollingFile:当文件大小超过1KB时新建新文件,当文件数超过3个时覆盖之前的文件 log4j.appender.RollingFile.MaxFileSize=1KB log4j.appender.RollingFile.MaxBackupIndex=3
-
3. java配置
-
新建logger事例
Logger logger = Logger.getLogger(当前.class);
-
格式化logger
logger.日志级别名("显示信息");
-
格式化错误日志
logger.日志级别名("显示信息",new 错误);
2.框架配置
1.Spring MVC
-
web.xml
<!-- 加载log4j的配置文件log4j.properties --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <!-- 设定刷新日志配置文件的时间间隔,这里设置为10s --> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>10000</param-value> </context-param> <!-- 加载Spring框架中的log4j监听器Log4jConfigListener --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- 为避免项目间冲突,定义唯一的 webAppRootKey --> <context-param> <param-name>webAppRootKey</param-name> <param-value>scheduleProject</param-value> </context-param>
2.Spring Boot
直接使用即可
二.Spring Cloud
1. 其他方式
1. RestTemplate
-
application.java
@Bean public RestTemplate restTemplate() { return new RestTemplate(); }
-
service.java
@Autowired public Item queryItemById(Long id) { Item item = restTemplate.getForObject("http://localhost:8080/item/"+id, Item.class); System.out.println(item); return item; }
2. OkHttp3
-
pom.xml
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.9.0</version> </dependency>
-
application.java
@Bean public RestTemplate restTemplate() { return new RestTemplate(new OKHttp3****); }
-
不变