- 日志:用于记录系统中发生的各种事件。记录的位置常见的有:控制台、磁盘文件
- 日志级别从高到底:
TRACE
- TRACE用到比较少
- 当日志级别为DEBUG时,可以从日志中看到程序运行中的很多细节,比如运行到了哪个方法,方法里面的各种数据的值是什么样
- WARN日志会打印提示有报错隐患
- ERROR日志会打印报错信息
- FATAL提示有严重错误
二、日志管理方案1 2.1 Log4j+Commons-Logging 2.1.1 导入依赖日志作用:通过日志观察,分析项目的运行情况
通过日志分析用户的使用情况(大数据分析)
…
- junit是测试用的
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>commons-logginggroupId>
<artifactId>commons-loggingartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>compilescope>
dependency>
2.1.2 基本使用
- 新建Maven
- 导入上面的依赖
- 新建一个测试类HelloLog.java
package com.lyx.log.test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
public class LogTest {
//日志对象
private Log log = LogFactory.getLog(LogTest.class);
@Test
public void test1(){
log.trace("hello trace!");
log.debug("hello debug");
log.info("hello info");
log.warn("hello warn");
log.error("hello error");
log.fatal("hello fatal");
}
}
- 写好了测试类运行发现没有打印
- 因为配置追加器,追加器:的意思是我们的日志要输出到哪里
- 写一个log4j的配置文件
- 新建log4j.xml,配置信息如下
DOCTYPE log4j:configuration PUBLIC "-//LOGGER"
"http://org/apache/log4j/xml/log4j.dtd">
<log4j:configuration>
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
layout>
appender>
<appender name="myFile1" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="H:/log/hello.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="1kb"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
layout>
appender>
<appender name="myFile2" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="h:/log/world.log"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
layout>
appender>
<root>
<priority value="all"/>
<appender-ref ref="myConsole"/>
<appender-ref ref="myFile1"/>
<appender-ref ref="myFile2"/>
root>
log4j:configuration>
2.1.4 日志输出格式
占位符 | 作用 |
---|---|
%t | 输出产生改日志事件的线程名 |
%p | 输出优先级,即上面提到的DEBUG、INFO、WARN、ERROR、FATAL |
%c | 输出所在类的全名 |
%r | 输出自应用启动到输出该log信息耗费的毫秒数 |
%m | message也就是日志的消息 |
%n | 换行符 |
%d | 输出日志时间点的日期或手机,默认格式为ISO8601,也可以在其后指定格式,比如%-d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2022-5-11 14:19:33,921 |
<dependency>
<groupId>ch.qos.logbackgroupId>
<artifactId>logback-classicartifactId>
<version>1.2.3version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>compilescope>
dependency>
3.1.2 基本使用
public class LogTest {
private Logger logger = LoggerFactory.getLogger(LogTest.class);
@Test
public void test1() throws InterruptedException {
while (true){
logger.trace("hello trace");
logger.debug("hello debug");
logger.info("hello info");
logger.warn("hello warn");
logger.error("hello error");
}
}
}
3.1.3 配置信息
- 看注释
<configuration scan="true" scanPeriod="50 seconds" debug="true">
<property name="CONSOLE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss,SSS} |-[%-5p] in %logger.%M[line-%L] -%m%n">property>
<property name="log.path" value="H:/log2">property>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debuglevel>
filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}Pattern>
<charset>UTF-8charset>
encoder>
appender>
<appender name="file" class="ch.qos.logback.core.FileAppender">
<file>${log.path}/world.logfile>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}Pattern>
encoder>
appender>
<appender name="file2" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/world3.logfile>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}Pattern>
<charset>UTF-8charset>
encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/world-%d{yyyy-MM-dd}.%i.logfileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1kbmaxFileSize>
timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>1maxHistory>
rollingPolicy>
appender>
<root level="trace">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="file"/>
<appender-ref ref="file2"/>
root>
configuration>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)